环境:Linux
语言:C/C++
通信方式:TCP
下面用TCP协议编写一个简单的服务器、客户端,其中服务器端一直监听本机的6666号端口。如果收到连接请求,将接收请求并接收客户端发来的消息;客户端与服务器端建立连接并发送一条消息。
server.cpp
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<errno.h> 5 #include<sys/types.h> 6 #include<sys/socket.h> 7 #include<netinet/in.h> 8 #include<unistd.h> 9 10 #define MAXLINE 4096 11 12 int main(int argc, char** argv){ 13 int listenfd, connfd; 14 struct sockaddr_in servaddr; 15 char buff[4096]; 16 int n; 17 18 if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){ 19 printf("create socket error: %s(errno: %d) ",strerror(errno),errno); 20 return 0; 21 } 22 23 memset(&servaddr, 0, sizeof(servaddr)); 24 servaddr.sin_family = AF_INET; 25 servaddr.sin_addr.s_addr = htonl(INADDR_ANY); 26 servaddr.sin_port = htons(6666); 27 28 if( bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){ 29 printf("bind socket error: %s(errno: %d) ",strerror(errno),errno); 30 return 0; 31 } 32 33 if( listen(listenfd, 10) == -1){ 34 printf("listen socket error: %s(errno: %d) ",strerror(errno),errno); 35 return 0; 36 } 37 38 printf("======waiting for client's request====== "); 39 while(1){ 40 if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1){ 41 printf("accept socket error: %s(errno: %d)",strerror(errno),errno); 42 continue; 43 } 44 n = recv(connfd, buff, MAXLINE, 0); 45 buff[n] = '