广东专业网站优化制作公司,智慧团建网站几点关闭,建设网站的申请信用卡分期付款,视频素材网站怎么建文章目录 目标服务器与客户端通信流程TCP服务器代码TCP客户端代码 目标
实现客户端连接服务器#xff0c;通过终端窗口发送信息给服务器端#xff0c;服务器接收到信息后对信息数据进行回传#xff0c;客户端读取回传信息并返回。
服务器与客户端通信流程 TCP服务器代码
… 文章目录 目标服务器与客户端通信流程TCP服务器代码TCP客户端代码 目标
实现客户端连接服务器通过终端窗口发送信息给服务器端服务器接收到信息后对信息数据进行回传客户端读取回传信息并返回。
服务器与客户端通信流程 TCP服务器代码
服务器当前IP地址要知道 建立socket 绑定本地IP地址并设置端口号
#include stdio.h
#include stdlib.h
#include arpa/inet.h
#include unistd.h
#include string.hint main()
{//socket套接字int lfd socket(AF_INET, SOCK_STREAM, 0);if(lfd -1){perror(socket);exit(-1);}//绑定struct sockaddr_in saddr;saddr.sin_family AF_INET;inet_pton(AF_INET, 192.168.1.108, saddr.sin_addr.s_addr);//saddr.sin_addr.s_addr INADDR_ANY;//做服务器时表示可以通过任意网卡都可以连接进来saddr.sin_port htons(9999);//转换成网络字节序int bindret bind(lfd, (struct sockaddr *)saddr, sizeof(saddr));if(bindret -1){perror(bind);exit(-1);}//监听int ret listen(lfd, 8);if(ret -1){perror(listen);exit(-1);}//等待连接struct sockaddr_in clientaddr;int len sizeof(clientaddr);int cfd accept(lfd, (struct sockaddr *)clientaddr, len);if(cfd -1){perror(accept);exit(-1);}char clientIP[len];inet_ntop(AF_INET, clientaddr.sin_addr, clientIP, len);printf(client IP:%s Port:%d\n, clientIP, ntohs(clientaddr.sin_port));while (1){//接收数据char rbuf[1024];len read(cfd, rbuf, sizeof(rbuf));if(len -1){perror(read);exit(-1);}else if(len 0){printf(Client close...\n);}else if(len 0){printf(resive data: %s\n, rbuf);}//发送数据char sbuf[] i am server\n;write(cfd, rbuf, sizeof(rbuf));}//关闭连接close(cfd);close(lfd);return 0;
}TCP客户端代码
知道服务器的IP地址和端口号 然后进行连接
#include stdio.h
#include stdlib.h
#include arpa/inet.h
#include unistd.h
#include string.hint main()
{//socket套接字int lfd socket(AF_INET, SOCK_STREAM, 0);if(lfd -1){perror(socket);exit(-1);}//连接struct sockaddr_in saddr;saddr.sin_family AF_INET;inet_pton(AF_INET, 192.168.1.108, saddr.sin_addr.s_addr);saddr.sin_port htons(9999);//转换成网络字节序int connect_cont 3;int ret;jx_connect:ret connect(lfd, (struct sockaddr *)saddr, sizeof(saddr));if(ret -1){perror(connect);sleep(2);connect_cont--;if(connect_cont) goto jx_connect;exit(-1);}printf(client link success!\n);//通信char rbuf[1024];while(1){//发送数据char sbuf[] i am client\n;fgets(rbuf, 1024, stdin);write(lfd, rbuf, sizeof(rbuf));//接收数据int len read(lfd, rbuf, sizeof(rbuf));if(len -1){perror(read);exit(-1);}else if(len 0){printf(Client close...\n);break;}else if(len 0){printf(resive data: %s\n, rbuf);}sleep(1);}//关闭连接close(lfd);return 0;
}