客户端
#include <arpa/inet.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>int main()
{struct sockaddr_in* caddr=(struct sockaddr_in*)malloc(sizeof(struct sockaddr_in));caddr->sin_port = htons(8999);inet_pton(AF_INET, "192.168.101.231", &caddr->sin_addr.s_addr);caddr->sin_family = AF_INET;int cfd = socket(AF_INET, SOCK_STREAM, 0);if (cfd == -1){perror("socket error");return 1;}int res = connect(cfd, (struct sockaddr*)caddr, sizeof(struct sockaddr));if (res == -1){perror("connect error");return 1;}while (1){char buf[1024] = {'\0'};int res = send(cfd, "this is client", strlen("this is client"), 0);if (res != -1){printf("send:%s\n", "this is client");}else{perror("send error");}res = recv(cfd, buf, 1024, 0);if (res == -1){perror("recv error");}else{printf("client recv:%s\n", buf);}memset(buf, 0, 1024);}close(cfd);return 0;
}
服务器
#include <arpa/inet.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>int main()
{struct sockaddr_in saddr;saddr.sin_port = htons(8999);saddr.sin_addr.s_addr = INADDR_ANY;saddr.sin_family = AF_INET;int sfd = socket(AF_INET, SOCK_STREAM, 0);if (sfd == -1){perror("socket error");return 1;}int bind_res = bind(sfd, (struct sockaddr*)&saddr, sizeof(struct sockaddr_in));if (bind_res == -1){perror("bind error");return 1;}listen(sfd, 100);int size = sizeof(struct sockaddr_in);int cfd = accept(sfd, (struct sockaddr*)&saddr, (socklen_t*)&size);while (1){if (cfd == -1){perror("accept error");return 1;}char buf[1024] = {'\0'};int res = recv(cfd, buf, 1024, 0);if (res != -1){printf("recv:%s\n", buf);}strcat(buf, ": is recved by server");res = send(cfd, buf, strlen(buf), 0);if (res == -1){perror("send error");}memset(buf, 0, 1024);}close(cfd);close(sfd);return 0;
}
运行结果:
客户端:
服务器