当前位置: 首页 > news >正文

长沙seo建站大连网站建设要多少钱

长沙seo建站,大连网站建设要多少钱,干净的下载网站,怎么做婚庆网站平台TCP 通信流程 根据上图可以看到#xff0c;TCP 服务器和客户端通信分为 TCP 服务端和客户端#xff0c;需要先建立服务 端然后再建立客户端与之连接进行数据交互。 服务端编程步骤#xff1a; 1.使用 socket 创建流式套接字 2.使用 bind 绑定将服务器绑定到 IP 3.listen…TCP 通信流程 根据上图可以看到TCP 服务器和客户端通信分为 TCP 服务端和客户端需要先建立服务 端然后再建立客户端与之连接进行数据交互。 服务端编程步骤 1.使用 socket 创建流式套接字 2.使用 bind 绑定将服务器绑定到 IP 3.listen 监听客户端连接 4.accept 阻塞等待客户端连接 客户端编程步骤 1.使用 socket 创建流式套接字 2.connect 连接服务器 客户端和服务器连接成功后就可以使用下面读写接口操作套接字进行通信 读接口read,recv,recvfrom 写接口write,send,sendto 连接断开时直接使用 close 关闭套接字就行了也可以使用 shutdown 接口关闭。 UDP 通信流程 对于 UDP 通信其实没有服务端和客户端之分的反而有点类似于进程间通信一样只需 要向对于的 IP 端去发送消息即可上图中服务端的 bind 可有可无它们之间进行通信的流程就是首先使用 socket 去创建一个数据包套接字用于 UDP 通信然后就使用 sandto 进行发送消息用 recvfrom 进行读取消息不能使用 read 和 write 是因为 UDP 通信需要知道对方的 ip 地址的而 read 和 write 是不具备该参数的。 TCP 通信程序简单实例 客户端程序实例 #include stdio.h #include pthread.h #include stdlib.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include fcntl.h #include string.hvoid* read_ser(void *pad) {pthread_detach(pthread_self()); //线程分离int soke_c*(int*)pad;while (1){char buf[1024] {0};int ret read(soke_c,buf,1024);if(ret 0){perror(read error);pthread_exit(NULL);}printf(字节长度:%d,收到的信息:%s\n,ret,buf);} }int main(int argc, char const *argv[]) {if(argc ! 3) //打开失败{printf(bro,you arg not Yes\n);return -1;}/*连接服务器*/int sock socket(AF_INET, SOCK_STREAM, 0); //申请一个 IPV4 的流式套接字if(sock -1) //申请套接字失败{perror(create socket error);return -1;}struct sockaddr_in Saddr; //保存服务器的地址信息的结构体memset(Saddr,0,sizeof(struct sockaddr_in)); //清空结构体Saddr.sin_family AF_INET; //协议族,AF_INET 表示使用 IPV4 的协议族Saddr.sin_port htons(atoi(argv[2])); //端口号,但是要求的是网络字节序Saddr.sin_addr.s_addr inet_addr(argv[1]); //32bit 的一个 IP地址int r connect(sock,(struct sockaddr*)Saddr,sizeof(Saddr)); //连接服务器if(r -1) //连接失败{perror(connect error);return -1;}printf(连接成功,连接的服务器 ip 是%s,端口号是%s\n,argv[1],argv[2]);pthread_t tid;pthread_create(tid, NULL,read_ser, (void*)sock); //创建线程去接收服务器消息while(1){ char buf[1024] {0};memset(buf,0,sizeof(buf));scanf(%[^\n],buf);printf(%ld\n,strlen(buf));int ret write(sock,buf,strlen(buf));if(ret 0){perror(sendto error);return -1;}printf(写了多少个字节:%d\n,ret);}close(sock); //关闭套接字return 0; } 服务端程序实例 #includestdio.h #includestdlib.h #include signal.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include arpa/inet.h #includenetinet/in.h //为了使用 IPV4 地址结构体 #include string.h #include arpa/inet.h #include unistd.h #include pthread.h//线程函数,处理和一个客户端的通信 void *my_func(void *arg) {//线程分离pthread_detach(pthread_self());int *cp (int *)arg;int ret;while(1){ret sendto(*cp,nishiliangzaima?,20,0,NULL,0); //发送消息if(ret 0){perror(sendto error);free(cp);pthread_exit(NULL);}char buf[1024] {0};ret read(*cp,buf,1024); //读取消息if(ret 0){perror(recv error);free(cp);pthread_exit(NULL);}printf(recv size:%d,recv data:%s\n,ret,buf);} }//./main ip port int main(int argc,char *argv[]) {if(argc ! 3){printf(please input ip port!\n);return 0;}//1.创建一个套接字int sockfd socket(AF_INET, SOCK_STREAM,0);if(-1 sockfd){perror(create socket failed);exit(-1);}//2.绑定一个通信 IP 地址(作为服务器本身的 IP)struct sockaddr_in saddr; //保存服务器的地址(IPport)memset(saddr,0,sizeof(struct sockaddr_in)); //清空结构体saddr.sin_family AF_INET;inet_aton(argv[1], saddr.sin_addr);saddr.sin_port htons(atoi(argv[2]));int ret bind(sockfd,(struct sockaddr *)saddr,sizeof(saddr));if(ret -1){perror(bind error);exit(-1);}printf(bind success\n);//3.开启对一个套接字的监听listen(sockfd,250);//4.等待客户端的连接while(1){struct sockaddr_in caddr; //保存客户端的地址(IPport)socklen_t len sizeof(caddr);int *confp (int *)malloc(sizeof(int));*confp accept(sockfd,(struct sockaddr *)caddr,len);if(*confp 0) //客户端连接成功,返回一个连接套接字专门用来和客户端通信{//一个客户端连接成功.开一个进程/线程去处理这个连接printf(client IP:%s,clientPort:%d\n,inet_ntoa(caddr.sin_addr),ntohs(caddr.sin_port));pthread_t tid;pthread_create(tid,NULL,my_func,(void *)confp); //创建线程去处理和客户端的会话}}//关闭套接字shutdown(sockfd,SHUT_RDWR);close(sockfd);return 0; } UDP 通信程序简单实例 A 端客户端 #includestdio.h #includestdlib.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include arpa/inet.h #includenetinet/in.h //为了使用 IPV4 地址结构体 #include string.h #include arpa/inet.h #include unistd.h//./main ip port int main(int argc,char *argv[]) {if(argc ! 3) //判断输入是否正确{printf(please input ip port!\n);return 0;}//1.创建一个 UDP 套接字int sockfd socket(AF_INET,SOCK_DGRAM,0); //创建一个 IPV4 的数据报套接字if(-1 sockfd){perror(create socket failed);exit(-1);}//直接发送消息(定义一个接收消息的地址)struct sockaddr_in addr; //保存接收消息的地址(IPport)memset(addr,0,sizeof(struct sockaddr_in)); //清空结构体addr.sin_family AF_INET;inet_aton(argv[1], addr.sin_addr);addr.sin_port htons(atoi(argv[2]));while(1){char buf[1024] {0};fgets(buf,1024,stdin);int ret sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)addr,sizeof(addr));//发送数据if(ret 0){perror(sendto error);}printf(sendto size:%d\n,ret);//读取服务器的回复消息memset(buf,0,1024);struct sockaddr_in src_addr; //保存消息发送方的地址(IPport)memset(src_addr,0,sizeof(struct sockaddr_in)); //清空结构体socklen_t src_len sizeof(src_addr); //保存可用大小ret recvfrom(sockfd,buf,1024, 0,(struct sockaddr*)src_addr,src_len); //接收消息if(ret 0){perror(recvfrom error);}printf(sendIP:%s,sendPort:%d\n,inet_ntoa(src_addr.sin_addr),ntohs(src_addr.sin_port));printf(recv size:%d,recv data:%s\n,ret,buf);}//关闭套接字shutdown(sockfd,SHUT_RDWR);close(sockfd);return 0; } B 端服务端当然在 UDP 通信中其实没有服务端客户端之言不过倒是可以对一端进行服务 器般的操作。 #includestdio.h #includestdlib.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include arpa/inet.h #includenetinet/in.h //为了使用 IPV4 地址结构体 #include string.h #include arpa/inet.h #include unistd.h//./main ip port int main(int argc,char *argv[]) {if(argc ! 3){printf(please input ip port!\n);return 0;}//1.创建一个 UDP 套接字int sockfd socket(AF_INET, SOCK_DGRAM,0); //创建一个 IPV4 的数据报套接字if(-1 sockfd){perror(create socket failed);exit(-1);}//2.绑定(可不绑定)struct sockaddr_in addr; //本地服务器的地址(IPport)memset(addr,0,sizeof(struct sockaddr_in)); //清空结构体addr.sin_family AF_INET;inet_aton(argv[1], addr.sin_addr);//addr.sin_addr.s_addr INADDR_ANY; //让内核自动选择一个网卡addr.sin_port htons(atoi(argv[2]));int ret bind(sockfd,(struct sockaddr *)addr,sizeof(addr)); //绑定一个 IP 和端口号,可不绑定if(ret -1){perror(bind error);exit(-1);}printf(bind success\n);while(1){char buf[1024] {0};//读取别人发送的消息struct sockaddr_in src_addr; //保存消息发送方的地址(IPport)memset(src_addr,0,sizeof(struct sockaddr_in)); //清空结构体socklen_t src_len sizeof(src_addr); //保存可用大小ret recvfrom(sockfd,buf,1024, 0,(struct sockaddr*)src_addr,src_len); //接收消息if(ret 0){perror(recvfrom error);}printf(sendIP:%s,sendPort:%d\n,inet_ntoa(src_addr.sin_addr),ntohs(src_addr.sin_port));printf(recv size:%d,recv data:%s\n,ret,buf);ret sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)src_addr,sizeof(src_addr)); //发送消息if(ret 0){perror(sendto error);}}//关闭套接字shutdown(sockfd,SHUT_RDWR);close(sockfd);return 0; }
http://www.tj-hxxt.cn/news/218622.html

相关文章:

  • 胶南网站建设应该如何做营销型网站
  • dwcc2017怎么做网站wordpress批量审核
  • 美容 北京 公司 网站建设昌做网站
  • 哪个网站可以做印章图案易语言做钓鱼网站
  • 安徽网站建设SEO优化制作设计公司网址大全123
  • 织梦可以做英文网站吗建设银行网站为什么进不去
  • 全网营销型网站 新闻新手怎么做网络销售
  • 网站建设手机站建设工程交易服务网
  • 制作网站设计的总结如何注册公司官网
  • 汉川市城乡建设局网站阿里云网站建设方案
  • 论文网站建设的参考文献珠海做网站价格
  • 常用的电子商务网站开发技术学校网站推广策划书
  • 国外jquery网站视频背景做网站背景
  • 做的好的办公家具网站网站建设制作设计公司
  • 招标网站大全如何建设网站
  • 域名更换网站网站建设平台有哪些 谢谢平台建站
  • 中国邮政做特产的网站seo搜索引擎优化排名
  • 对于做网站有什么要求职业教育网站建设方案
  • 黄埔网站建设优化seo济南做网站互联网公司
  • 广州口碑好的网站建设定制wordpress sql自定义菜单
  • wordpress生成网站模版如何做区块链网站
  • 做网站有哪些程序wordpress 速度变慢
  • wordpress多网站整合在一个后台wordpress菜单插件
  • 青岛网站制作公司哪家正规重庆网站建设红衫
  • 网站空间控制面板珠海网站制作推广公司
  • 怎么查询网站是否收录营销策划书范文案例
  • 阿里云建设网站好不好电商平台模板
  • 企业自建站注册域名费用
  • 怎样更换网站cms深圳网站搭建专业公司
  • 凡科建网站十大网络平台有哪些