本文共 1873 字,大约阅读时间需要 6 分钟。
客户端:
#include#include #include #include #include #include #include #include int main(void){ int sfd; int cfd; struct sockaddr_in client_add; char buf[50]; int ret; //1.建立socket fd*/ sfd = socket(AF_INET, SOCK_STREAM, 0); if(sfd < 0) { perror("socket"); exit(1); } //填充sin client_add.sin_family = AF_INET; client_add.sin_port = htons(8888); client_add.sin_addr.s_addr = inet_addr("192.168.107.128"); //3.建立连接 cfd = connect(sfd, (struct sockaddr *)&client_add, sizeof(struct sockaddr)); if(cfd < 0) { perror("connect"); exit(1); } while(1) { sleep(1); //读取服务端发来的数据 ret = read(sfd, buf, 50); if(0 == ret) { printf("server is exit\n"); exit(1); } if(ret < 0) { perror("read"); exit(1); } printf("buf = %s\n", buf); } close(sfd); return 0;}
服务端
#include#include #include #include #include #include #include #include #define MAXLINE 50int main(void){ int s_fd; int b_fd; int l_fd; int a_fd; struct sockaddr_in server_add; //server_add清0 memset(&server_add, 0, sizeof(server_add)); char buf[MAXLINE]; s_fd = socket(AF_INET, SOCK_STREAM, 0); if(s_fd < 0) { perror("socket"); exit(1); } server_add.sin_family = AF_INET; server_add.sin_port = htons(8888); server_add.sin_addr.s_addr = inet_addr("192.168.107.128"); //向系统登记你关心IP地址和端口号 b_fd = bind(s_fd, (struct sockaddr *)&server_add, \ sizeof(struct sockaddr)); if(b_fd < 0) { perror("bind"); exit(1); } //监听 l_fd = listen(s_fd, 5); if(l_fd < 0) { perror("listen"); exit(1); } //接受客户端的连接 a_fd = accept(s_fd, NULL, NULL); if(a_fd < 0) { perror("accept"); exit(1); } printf("accept sucess\n"); while(1) { fgets(buf, 50, stdin); write(a_fd, buf, 50); } close(s_fd); return 0;}
编译:
gcc -o client client.c
gcc -o server server.c
先运行服务器
./server
再运行客户端
./client
转载地址:http://nfiub.baihongyu.com/