客户端:
//客户端连接上服务器之后就会收到服务器的回送信息 #include<stdio.h> #include<sys/socket.h> #include<stdlib.h> #include<arpa/inet.h> #include<unistd.h> #include<string.h> #define SERV_PORT 8888 int main() { int cfd; cfd=socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(SERV_PORT); serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); if (connect(cfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { perror("connect"); exit(1); } char sendbuf[BUFSIZ]; char recvbuf[BUFSIZ]; while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL){ send(cfd, sendbuf, strlen(sendbuf),0); if(strcmp(sendbuf,"exit ")==0) break; recv(cfd, recvbuf, sizeof(recvbuf),0); fputs(recvbuf, stdout); memset(sendbuf, 0, sizeof(sendbuf)); memset(recvbuf, 0, sizeof(recvbuf)); } close(cfd); return 0; }
服务端:
1 //客户端连接上服务器之后就会收到服务器的回送信息 2 3 #include<stdio.h> 4 #include<sys/socket.h> 5 #include<unistd.h> 6 #include<stdlib.h> 7 #include<arpa/inet.h> 8 #include<ctype.h> 9 #include<string.h> 10 11 12 #define SERV_PORT 8888 13 14 int main() 15 { 16 int lfd = socket(AF_INET, SOCK_STREAM, 0); 17 18 struct sockaddr_in serv_addr, clie_addr; 19 serv_addr.sin_family = AF_INET; 20 serv_addr.sin_port = htons(SERV_PORT); 21 serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); 22 if(bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1); 23 { 24 perror("bind"); 25 exit(1); 26 } 27 28 if(listen(lfd, 128) == -1) 29 { 30 perror("listen"); 31 exit(1); 32 } 33 34 socklen_t clie_addr_len=sizeof(clie_addr); 35 int cfd=accept(lfd, (struct sockaddr *) &clie_addr,&clie_addr_len); 36 if(cfd<0) 37 { 38 perror("accept"); 39 exit(1); 40 } 41 else printf("the server has opend! "); 42 43 char c[BUFSIZ]; 44 strcpy(c,"I(server) has successfully accepted the client's information! "); 45 printf("send succeed "); 46 send(cfd,c,sizeof(c),0); 47 //printf("send succeed "); 48 49 close(cfd); 50 close(lfd); 51 return 0; 52 }