让网站建设便宜到底北京网站页设计制作
让网站建设便宜到底,北京网站页设计制作,和wordpress类似,dz论坛如何seo基于TCP的本地通信#xff08;客户机#xff09;#xff1a;创建流程#xff1a;一、创建字节流式套接字#xff08;socket函数#xff09;#xff1a; int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…基于TCP的本地通信客户机创建流程一、创建字节流式套接字socket函数 int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本地网络信息结构体 struct sockaddr_un:本地网络信息结构体 #include sys/un.hstruct sockaddr_un {sa_family_t sun_family; //AF_LOCALchar sun_path[108]; //pathname};//填充服务器和客户机网络信息结构体struct sockaddr_un serveraddr, clientaddr;socklen_t serveraddr_len sizeof(serveraddr);socklen_t clientaddr_len sizeof(clientaddr);memset(serveraddr, 0, serveraddr_len);memset(clientaddr, 0, clientaddr_len);serveraddr.sun_family AF_LOCAL;clientaddr.sun_family AF_LOCAL;strcpy(serveraddr.sun_path, ./tcpserver); //tcpserver是一个套接字类型的文件strcpy(clientaddr.sun_path, ./tcpclient); //tcpclient是一个套接字类型的文件三、客户机绑定字节流式套接字bind函数、 bind(sock_fd, (struct sockaddr *)clientaddr, clientaddr_len);四、与服务器建立连接connect函数 connect(sock_fd, (struct sockaddr *)serveraddr, serveraddr_len);五、客户机端发收数据send函数、recv函数 memset(buf, 0, sizeof(buf));fgets(buf,sizeof(buf),stdin);buf[strlen(buf) - 1] \0;//给服务器发送消息int ret1 send(sock_fd,buf,sizeof(buf),0);if(-1 ret1){perror(send error);exit(-1);}memset(buf,0,sizeof(buf));//接收服务器的应答消息int ret2 recv(sock_fd,buf,sizeof(buf),0);if(-1 ret2){perror(recv error);exit(-1);}printf(服务器的应答消息[%s]\n,buf);六、关闭套接字close函数 close(sock_fd);示例代码 #include stdio.h#include string.h#include stdlib.h#include unistd.h#include sys/socket.h#include sys/types.h#include netinet/ip.h#include sys/un.h#include arpa/inet.h#include stdbool.hint main(int argc, char const *argv[]){// 创建套接字int sock_fd socket(AF_LOCAL, SOCK_STREAM, 0);if (-1 sock_fd){perror(socket error);exit(-1);}// 填充客户机和服务器网络信息结构体struct sockaddr_un serveraddr, clientaddr;socklen_t serveraddr_len sizeof(serveraddr);socklen_t clientaddr_len sizeof(clientaddr);memset(serveraddr, 0, serveraddr_len);memset(clientaddr, 0, clientaddr_len);serveraddr.sun_family AF_LOCAL;clientaddr.sun_family AF_LOCAL;strcpy(serveraddr.sun_path, ./tcpserver); //tcpserver是一个套接字类型的文件strcpy(clientaddr.sun_path, ./tcpclient); //tcpclient是一个套接字类型的文件// 客户机绑定套接字if (-1 bind(sock_fd, (struct sockaddr *)clientaddr, clientaddr_len)){perror(bind error);exit(-1);}// 与服务器建立连接if (-1 connect(sock_fd, (struct sockaddr *)serveraddr, serveraddr_len)){perror(connect error);exit(-1);}char buf[128] {0};int ret1 0;int ret2 0;// 提示信息printf(本地通信之TCP客户机成功连接服务器!!!\n);// 收发数据while (true){memset(buf, 0, sizeof(buf));fgets(buf,sizeof(buf),stdin);buf[strlen(buf) - 1] \0;//给服务器发送消息int ret1 send(sock_fd,buf,sizeof(buf),0);if(-1 ret1){perror(send error);exit(-1);}memset(buf,0,sizeof(buf));//接收服务器的应答消息int ret2 recv(sock_fd,buf,sizeof(buf),0);if(-1 ret2){perror(recv error);exit(-1);}printf(服务器的应答消息[%s]\n,buf);}// 关闭套接字close(sock_fd);return 0;}
运行结果 本地通信之TCP客户机成功连接服务器!!!hello服务器的应答消息[hello-------k]hi服务器的应答消息[hi-------k]I Love China!!!服务器的应答消息[I Love China!!!-------k]
特别注意strcpy(serveraddr.sun_path,./tcpserver);和strcpy(clientaddr.sun_path, ./tcpclient);代码段中的tcpserver文件、tcpclient文件是套接字文件如下所示 srwxrwxr-x 1 linux linux 0 11月 10 05:58 tcpserversrwxrwxr-x 1 linux linux 0 11月 10 06:00 tcpclient
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90397.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!