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

推荐西安优秀的响应式网站建设公司郑州网站建设 天强科技

推荐西安优秀的响应式网站建设公司,郑州网站建设 天强科技,怎么开发一个网页,网页聊天工具Linux C语言 32-网络编程之UDP例程 本节关键字#xff1a;C语言 网络编程 UDP协议 套接字操作 服务端 客户端 相关C库函数#xff1a;setsockopt, socket, bind, recvfrom, sendto, close 相关接口介绍 Linux C语言 30-套接字操作 例程执行任务说明 本例程中服务端的任务…Linux C语言 32-网络编程之UDP例程 本节关键字C语言 网络编程 UDP协议 套接字操作 服务端 客户端 相关C库函数setsockopt, socket, bind, recvfrom, sendto, close 相关接口介绍 Linux C语言 30-套接字操作 例程执行任务说明 本例程中服务端的任务 等待客户端发来消息读取客户端发来的消息并回复 本例程中客户端的任务 创建1个客户端间隔1秒发送消息告知服务端自己的包编号 UDP协议服务端例程实现 // udpserver.c #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/types.h #include sys/socket.h #include arpa/inet.hvoid msleep(int msecs); int getOneServerSocket(const char *ip, int port);int main(int argc, char *argv[]) {int rc, rxn, txn, srvfd, port;int addrLen;struct sockaddr_in remoteAddr;char ip[32] {0};char rxBuffer[1024] {0};char txBuffer[1024] {0};if (argc ! 3){printf(please input correct arguments:\n);printf(\tudpserver ip port\n\n);return -1;}// 解析ip和portstrcpy(ip, argv[1]);port atoi(argv[2]);printf(ip: %s, port: %d\n, ip, port);// 创建套接字srvfd getOneServerSocket(ip, port);addrLen sizeof(remoteAddr);while (1){bzero(rxBuffer, sizeof(rxBuffer));rxn recvfrom(srvfd, rxBuffer, sizeof(rxBuffer)-1, 0, (struct sockaddr*)remoteAddr, addrLen);if (rxn 0){printf(client[%s:%d] socket:%d %s\n, inet_ntoa(remoteAddr.sin_addr), ntohs(remoteAddr.sin_port), srvfd, rxBuffer);bzero(txBuffer, sizeof(txBuffer));sprintf(txBuffer, server reply client[%s:%d] - %s, inet_ntoa(remoteAddr.sin_addr), ntohs(remoteAddr.sin_port), rxBuffer);sendto(srvfd, txBuffer, strlen(txBuffer), 0, (struct sockaddr*)remoteAddr, addrLen);}}close(srvfd);return 0; }void msleep(int msecs) {struct timeval stoptime;stoptime.tv_sec (int)(msecs/1000);stoptime.tv_usec (int)(msecs%1000)*1000;select(0, 0, 0, 0, stoptime); }int getOneServerSocket(const char *ip, int port) {int rc, srvfd, reused, timeout;struct sockaddr_in addr;srvfd socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (srvfd -1){perror(create socket);exit(-1);}// 设置端口复用reused 1;rc setsockopt(srvfd, SOL_SOCKET, SO_REUSEADDR, reused, sizeof(reused));if (rc -1){perror(SO_REUSEDADDR);goto EXIT;}// 设置发送超时限制timeout 1000; // 1秒setsockopt(srvfd, SOL_SOCKET, SO_SNDTIMEO, timeout, sizeof(timeout));if (rc -1){perror(SO_SNDTIMEO);goto EXIT;}// 套接字绑定本地的ip和portaddr.sin_family AF_INET;addr.sin_port htons(port);addr.sin_addr.s_addr inet_addr(ip);bzero(addr.sin_zero, sizeof(addr.sin_zero));rc bind(srvfd, (struct sockaddr*)addr, sizeof(addr));if (rc -1){perror(bind);goto EXIT;}return srvfd;EXIT:close(srvfd);exit(-1); }UDP协议客户端例程实现 // udpclient.c #include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/types.h #include sys/socket.h #include arpa/inet.hvoid msleep(int msecs); int getOneClientSocket(const char *ip, int port, struct sockaddr_in *addr);int main(int argc, char *argv[]) {int rc, rxn, txn, clifd, port;int addrLen;struct sockaddr_in serverAddr;struct sockaddr_in remoteAddr;unsigned int packet_id 0;char ip[32] {0};char rxBuffer[1024] {0};char txBuffer[1024] {0};if (argc ! 3){printf(please input correct arguments:\n);printf(\tudpserver ip port\n\n);return -1;}// 解析ip和portstrcpy(ip, argv[1]);port atoi(argv[2]);printf(ip: %s, port: %d\n, ip, port);// 创建套接字clifd getOneClientSocket(ip, port, serverAddr);addrLen sizeof(remoteAddr);while (1){bzero(txBuffer, sizeof(txBuffer));sprintf(txBuffer, Hello, im client[%d], packet id: %d, clifd, packet_id);sendto(clifd, txBuffer, strlen(txBuffer), 0, (struct sockaddr*)serverAddr, addrLen);bzero(rxBuffer, sizeof(rxBuffer));rxn recvfrom(clifd, rxBuffer, sizeof(rxBuffer)-1, 0, (struct sockaddr*)remoteAddr, addrLen);if (rxn 0){printf(server[%s:%d] - %s\n, inet_ntoa(remoteAddr.sin_addr), ntohs(remoteAddr.sin_port), rxBuffer);}msleep(1000);}return 0; }void msleep(int msecs) {struct timeval stoptime;stoptime.tv_sec (int)(msecs/1000);stoptime.tv_usec (int)(msecs%1000)*1000;select(0, 0, 0, 0, stoptime); }int getOneClientSocket(const char *ip, int port, struct sockaddr_in *addr) {int rc, srvfd, reused, timeout;srvfd socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (srvfd -1){perror(create socket);exit(-1);}// 设置端口复用reused 1;rc setsockopt(srvfd, SOL_SOCKET, SO_REUSEADDR, reused, sizeof(reused));if (rc -1){perror(SO_REUSEDADDR);goto EXIT;}// 设置发送超时限制timeout 1000; // 1秒setsockopt(srvfd, SOL_SOCKET, SO_SNDTIMEO, timeout, sizeof(timeout));if (rc -1){perror(SO_SNDTIMEO);goto EXIT;}// 套接字绑定本地的ip和portaddr-sin_family AF_INET;addr-sin_port htons(port);addr-sin_addr.s_addr inet_addr(ip);bzero(addr-sin_zero, sizeof(addr-sin_zero));return srvfd;EXIT:close(srvfd);exit(-1); }例程编译及运行 UDP服务端例程编译及运行结果 $ gcc udpserver.c -o udpserver $ ./udpserver 0.0.0.0 88888 ip: 0.0.0.0, port: 88888 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 0 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 1 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 2 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 3 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 4 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 5 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 6 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 7 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 8 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 9 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 10 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 11 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 12 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 13 client[192.168.146.128:52147] socket:3 Hello, im client[3], packet id: 14UDP客户端例程编译及运行结果 # 服务端IP为192.168.146.128 $ gcc udpclient.c -o udpclient $ ./udpclient 192.168.146.128 88888 ip: 192.168.146.128, port: 88888 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 0 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 1 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 2 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 3 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 4 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 5 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 6 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 7 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 8 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 9 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 10 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 11 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 12 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 13 server[192.168.146.128:23352] - server reply client[192.168.146.128:52147] - Hello, im client[3], packet id: 14
http://www.hkea.cn/news/14386301/

相关文章:

  • 装修公司怎么做网站推广安阳河南网站建设
  • 通河新村街道网站建设网站里可以增加网址吗
  • 高质量网站外链平台crm系统公司排名
  • 一加网站开发在线长图生成器
  • html网页设计网站中陕核建设集团网站
  • 360网站建设wordpress和dede哪个好
  • 那里有制作网站公司交流稿 网站建设
  • 创新创业教育课程网站建设方案海南城乡住房建设厅网站
  • 做我女朋友的网站拼图式网站开发
  • 阿里巴巴网站分类导航做全屏变装小说wordpress
  • 个人做理财网站建设摩托车官网商城2015
  • c 做网站方便吗如何提高网站的用户体验ue
  • 站酷网页设计分析在环评备案网站上做登记后会怎么样6
  • 招聘织梦网站扫码进入网站如何做
  • 自助网站制作网站设计的公司报价
  • 免费微信微网站模板下载不了建设外卖网站需要哪些资质
  • 加猛挣钱免费做网站软件wordpress 网站特效
  • 自主建站网站平台多用户商城系统哪种好用
  • 用户体验 网站太湖县住房和城乡建设局网站
  • 枣庄定制网站建设制作做网站优化的弊端
  • 仿58同城分类信息网站源码网站建设售后服务合同
  • 怎么做黑客攻击网站企业在阿里做网站是什么意思
  • html网站分页怎么做的泊头市建设网站
  • 中国中国建设银行网站首页专业网站设计软件工具
  • 网站推广一般在哪个网做阿泰勒北京网站建设
  • 网站开发前端与后端wordpress 获取当前文章的分类id
  • dede模板打网站显示栏logo设计网络
  • 左侧导航栏网站东莞市建设工程网站
  • 赣州市网站建设网站关键词优化的步骤
  • 建外卖网站能发布自做的视频网站