-执行:gcc client.c -o client 后启动 ./client 客户端程序 启动前先启动./server-----------------------------------------
server.c
1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <sys/types.h> 4 #include <string.h> 5 #include <netinet/in.h> 6 #include <stdlib.h> 7 #include <errno.h> 8 #include <unistd.h> 9 #include <arpa/inet.h> 10 11 #define MAXLINE 1024 12 int main(int argc,char **argv) 13 { 14 int listenfd,connfd; 15 struct sockaddr_in sockaddr; 16 char buff[MAXLINE]; 17 int n; 18 19 memset(&sockaddr,0,sizeof(sockaddr)); 20 21 sockaddr.sin_family = AF_INET; 22 sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); 23 sockaddr.sin_port = htons(10004); 24 25 listenfd = socket(AF_INET,SOCK_STREAM,0); 26 27 bind(listenfd,(struct sockaddr *) &sockaddr,sizeof(sockaddr)); 28 29 listen(listenfd,1024); 30 31 32 printf("Please wait for the client information\n"); 33 34 for(;;) 35 { 36 if((connfd = accept(listenfd,(struct sockaddr*)NULL,NULL))==-1) 37 { 38 printf("accpet socket error: %s errno :%d\n",strerror(errno),err no); 39 continue; 40 } 41 42 n = recv(connfd,buff,MAXLINE,0); 43 buff[n] = '\0'; 44 printf("recv msg from client:%s",buff); 45 close(connfd); 46 } 47 close(listenfd); 48 } |
-执行:gcc server.c -o server 后启动 ./server 服务端程序-------------------------------------------------------
> 1、代码展示,功能介绍
上面这个简单的socket通信的代码要实现的功能:从客户端发送一条消息后,服务端接收这条消息,并在服务端显示(recv msg from client:****)。
> 2、首先介绍一下客户端和服务端中函数的功能以及函数的原形。
1 #include <sys/socket.h>
2 int socket(int family, int type, int protocol); //指定期望的通信协议类型,返回的文件描述符和套接字描述符类似,我们成为套接字描述符,简称sockfd
family:协议族