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

东莞网站搭建找哪里旅发集团网站建设方案

东莞网站搭建找哪里,旅发集团网站建设方案,拖拽式网站建设源码,wordpress无法更改主题一、TCP 服务器的创建 在 Linux 上创建一个简单的 tcp 服务器步骤如下#xff1a; ①创建套接字 ②将套接字绑定到 IP 地址和端口号 ③监听来自客户端的连接 ④接受连接并创建新的套接字用于与客户端通信 ⑤通过新建的套接字发送和接收数据 ⑥关闭套接字 流程框图如下#xf… 一、TCP 服务器的创建 在 Linux 上创建一个简单的 tcp 服务器步骤如下 ①创建套接字 ②将套接字绑定到 IP 地址和端口号 ③监听来自客户端的连接 ④接受连接并创建新的套接字用于与客户端通信 ⑤通过新建的套接字发送和接收数据 ⑥关闭套接字 流程框图如下 根据以上介绍可以创建tcp server的示例分为服务器-单客户端和服务器-多客户端。 二、服务器-单客户端示例 tcp server示例代码如下 #include stdio.h #include string.h #include sys/types.h #include sys/socket.h #include netinet/in.h //struct sockaddr_in #include arpa/inet.h //inet_addr() #include unistd.h//close()#define MY_PRINTF(argv) do{\printf(file:%s --- function:%s --- line:%d\r\n,__FILE__,__FUNCTION__,__LINE__);\printf(%s\r\n,argv);\}while(0); #define MYPORT 5000 //tcp server demoint main(int argc,char *argv[]) {int sockefd;int sockenewfd;int ret;int enable1;struct sockaddr_in my_addr;//本地地址-服务器struct sockaddr_in remote_addr;//远端地址-客户端int remote_addr_len;char buf[1024];sockefdsocket(AF_INET,SOCK_STREAM,0);// 套接字if(sockefd0){MY_PRINTF(socket err !! );return -1;}if (setsockopt(sockefd, SOL_SOCKET, SO_REUSEADDR, (char *) enable, sizeof(enable)) -1) {close(sockefd);MY_PRINTF( setsockopt err !! );return -1;}MY_PRINTF(socket ok !! );//本地地址my_addr.sin_familyAF_INET; my_addr.sin_porthtons(MYPORT);//0:随机端口my_addr.sin_addr.s_addrINADDR_ANY;//inet_addr(192.168.164.157);//INADDR_ANY:本机 ip // inet_addr():IP 地址的字符串转换成一个无符号长整型bzero(my_addr.sin_zero,sizeof(my_addr.sin_zero));retbind(sockefd,(struct sockaddr*)my_addr,sizeof(struct sockaddr));//绑定 //转换数据类型if(ret0){close(sockefd);MY_PRINTF(bind err !! );return -1;}MY_PRINTF(bind ok !! );retlisten(sockefd,5);//监听if(ret0){close(sockefd);MY_PRINTF(listen err !! );return -1;}MY_PRINTF(listen ok !! );sockenewfdaccept(sockefd,(struct sockaddr *)remote_addr,remote_addr_len);//获取连接的新套接字if(sockenewfd0){close(sockefd);MY_PRINTF(accept err !! );return -1;}MY_PRINTF(accept ok !! );printf(%d\r\n,ntohs(remote_addr.sin_port)); //端口号printf(%s\r\n,inet_ntoa(remote_addr.sin_addr));//ip地址 //转换为字符串形式以 数字.数字.数字.数字 的格式显 示出来for(;;){retrecv(sockenewfd,buf,sizeof(buf),0);//接收if(ret0){close(sockenewfd);MY_PRINTF(recv err !! );break;}else if(ret0){close(sockenewfd);MY_PRINTF(close !! );perror(close sockenewfd); break;}MY_PRINTF(recv ok !! );MY_PRINTF(buf);retsend(sockenewfd,buf,ret,0);//发送 等价于write(sockenewfd,buf,ret);if(ret0){MY_PRINTF(send err !! );}MY_PRINTF(send ok !! );MY_PRINTF(buf);}close(sockefd);//关闭perror(close sockefd);return0;} 程序运行只允许单个客户端连接通讯。测试如下 服务端启动等待连接如下 客户端连接如下 服务端获取到客户端连接如下 客户端发送数据并接收到服务端返回如下 服务端显示 三、服务器-多客户端 这里介绍两种方法方法一使用多线程方法二使用select方法。 ①方法一多线程测试代码如下 #include stdio.h #include string.h #include sys/types.h #include sys/socket.h #include netinet/in.h //struct sockaddr_in #include arpa/inet.h //inet_addr() #include unistd.h//close()#define MY_PRINTF(argv) do{\printf(file:%s --- function:%s --- line:%d\r\n,__FILE__,__FUNCTION__,__LINE__);\printf(%s\r\n,argv);\}while(0); #define MYPORT 5000 //tcp server demovoid *myfun_thread(void *socketInfo) {char buf[1024];int ret;int sockenewfd(int)socketInfo;for(;;){retrecv(sockenewfd,buf,sizeof(buf),0);//接收if(ret0){close(sockenewfd);MY_PRINTF(recv err !! );perror(close sockenewfd); break;}else if(ret0){close(sockenewfd);MY_PRINTF(close !! );perror(close sockenewfd); break;}MY_PRINTF(recv ok !! );MY_PRINTF(buf);retsend(sockenewfd,buf,ret,0);//发送 等价于write(sockenewfd,buf,ret);if(ret0){MY_PRINTF(send err !! );}MY_PRINTF(send ok !! );MY_PRINTF(buf);}pthread_exit(NULL);}int main(int argc,char *argv[]) {int sockefd;int sockenewfd;int ret;int enable1;pthread_t threadRx;struct sockaddr_in my_addr;//本地地址-服务器struct sockaddr_in remote_addr;//远端地址-客户端int remote_addr_len;sockefdsocket(AF_INET,SOCK_STREAM,0);// 套接字if(sockefd0){MY_PRINTF(socket err !! );return -1;}if (setsockopt(sockefd, SOL_SOCKET, SO_REUSEADDR, (char *) enable, sizeof(enable)) -1) {close(sockefd);MY_PRINTF( setsockopt err !! );return -1;}MY_PRINTF(socket ok !! );//本地地址my_addr.sin_familyAF_INET; my_addr.sin_porthtons(MYPORT);//0:随机端口my_addr.sin_addr.s_addrINADDR_ANY;//inet_addr(192.168.164.157);//INADDR_ANY:本机 ip // inet_addr():IP 地址的字符串转换成一个无符号长整型bzero(my_addr.sin_zero,sizeof(my_addr.sin_zero));retbind(sockefd,(struct sockaddr*)my_addr,sizeof(struct sockaddr));//绑定 //转换数据类型if(ret0){close(sockefd);MY_PRINTF(bind err !! );return -1;}MY_PRINTF(bind ok !! );retlisten(sockefd,5);//监听if(ret0){close(sockefd);MY_PRINTF(listen err !! );return -1;}MY_PRINTF(listen ok !! );while(1){sockenewfdaccept(sockefd,(struct sockaddr *)remote_addr,remote_addr_len);//获取连接的新套接字if(sockenewfd0){MY_PRINTF(accept err !! );break;}MY_PRINTF(accept ok !! );printf(%d\r\n,ntohs(remote_addr.sin_port)); //端口号printf(%s\r\n,inet_ntoa(remote_addr.sin_addr));//ip地址 //转换为字符串形式以 数字.数字.数字.数字 的格式显 示出来pthread_create(threadRx, NULL, myfun_thread, (void *)sockenewfd);sleep(1);}close(sockefd);//关闭perror(close sockefd); return 0;} 测试结果 服务端 客户端
http://www.hkea.cn/news/14350727/

相关文章:

  • 无锡电子商务网站建设黑马程序员线上课程
  • 电子商务网站建设报价表档案馆网站建设
  • 网站优化知识大气金融投资企业网站模板
  • 网站制作过程步骤汕头第一网 e京网
  • 国外简约网站出名的品牌营销咨询公司
  • 腾讯邮箱企业邮箱注册合肥网站优化软件
  • 做网站服务商保定网站建设浩森宇特
  • 东莞最好的网站六安公共招聘网
  • 东莞家用台灯东莞网站建设永年哪做网站
  • 深圳建设手机网站本地网站建设电话
  • 佛山网站建设定制开发服务器安全狗
  • 网站开发费用计入什么科目wordpress 关键字插件
  • 网站网址黄页大全免费系统开发流程8个步骤
  • 个人业务网站带后台商城网站建设高端
  • 婚纱摄影网站论文1688app
  • 做一下网站需要什么网站服务器下行很多是什么意思
  • 邢台网站制作哪家好天津工程建设信息网官网
  • 从哪个网站找钢做的微商access做调查表网站
  • 国外网站推广方法泰来县城乡建设局网站
  • 宁波网站开发定制电子商务网站建设前的分析
  • 服务器迁移对做网站的影响展示型网站建设报价
  • 临沂网站建设对实体企业企业管理官网登录入口
  • 用jsp做网站登录界面模板阜宁做网站的公司电话
  • 聊城冠县网站建设做招投标有哪些网站
  • 手机网站 分享按钮世界500强企业名字
  • 做律师百度推广的网站福建seo外包
  • 怎么做教育类型的网站南通网站定制
  • 网站后台上传缩略图网站开发开发公司排名
  • 廊坊app网站制作网络营销的常用工具
  • 做ppt模版的网站无锡专业网站建设