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

澄海网站建设公司那位学生网站开发

澄海网站建设公司,那位学生网站开发,在线做ppt的网站有哪些,公司公司网站建设一、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.w-s-a.com/news/840184/

相关文章:

  • 论坛做视频网站有哪些济南新站seo外包
  • 哪类型网站容易做冷水滩做微网站
  • 搭建企业网站流程保定徐水网站建设
  • 建设单位到江川区住房和城乡建设局网站伦敦 wordpress 设计
  • 响应式网站的服务麦德龙网站建设目标
  • 做国外单的网站叫什么海南省海口市网站建设
  • 杭州响应式网站案例wordpress5.2.2
  • 网站建设运营维护合同wordpress资源搜索插件
  • 国外网站流量查询东莞网站建设教程
  • 餐饮类网站建设达到的作用东莞工程建设交易中心网
  • 网站设计 知识产权湖北网站建设xiduyun
  • 猫咪网站模版下载中国风 古典 红色 网站源代码
  • 个人网站备案模板制作网站首页
  • 潍坊正规建设网站网站建设设计作业
  • 推荐一下网站谢谢辽宁住房城乡建设部官方网站
  • 网站文件大小英选 网站开发
  • 济南建网站哪家好wordpress编辑器排行
  • 在福州做搬家网站多少钱画册设计网站有哪些
  • 如何让别人浏览我做的网站哪些方法可以建设网站
  • 网站建设与管理网络推广的优点
  • 美食网站的设计与制作做网站的电销话术
  • 中国档案网站建设现状研究陕西建设厅执业资格注册中心网站
  • 网站建设的内容管理怎么用ps切片在dw里做网站
  • 建设婚恋网站用什么搭建涿州网站开发
  • 做知识内容的网站与app哈尔滨哪里有做网站的
  • 青岛企业网站建站模板百度网站建设推广
  • 做360网站中保存的图片存在哪里个人建立网站要多少钱
  • 网站安装部署无锡做网站的公司
  • 怎么将网站做成小程序安装wordpress到服务器
  • 企业网站建设的四大因素沈阳网站建设招标公司