C Socket学习样例:使用代码记录基础的执行流程
客户端代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <arpa/inet.h> #include <zconf.h>
int main() { int sock=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in serv_addr; memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); serv_addr.sin_port=htons(1234);
connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
char buffer[40]; read(sock,buffer,sizeof(buffer)-1);
printf("Message from server:%s\n",buffer);
close(sock);
return 0; }
|
服务端代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <arpa/inet.h> #include <zconf.h>
int main() { int serv_sock =socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct sockaddr_in serv_addr; memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); serv_addr.sin_port=htons(1234); bind(serv_sock,(struct sockaddr*)&serv_addr, sizeof(serv_addr));
listen(serv_sock,20);
struct sockaddr_in clnt_addr; socklen_t clnt_addr_size =sizeof(clnt_addr); int clnt_sock=accept(serv_sock,(struct sockaddr*)&clnt_addr,&clnt_addr_size);
char str[]="hello world"; write(clnt_sock,str,sizeof(str));
close(clnt_sock); close(serv_sock); return 0; }
|
原文链接: https://www.delta1037.cn/2017/CN/LinuxSocket笔记/
版权声明: 转载请注明出处.