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

涉县住房和城乡规划建设局网站ui设计培训需要多少费用

涉县住房和城乡规划建设局网站,ui设计培训需要多少费用,做门户网站用什么系统好,建设银行网上银行登录入口Linux C语言 32-网络编程之UDP例程 本节关键字:C语言 网络编程 UDP协议 套接字操作 服务端 客户端 相关C库函数: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.h>void 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.h>void 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, i'm 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, i'm client[3], packet id: 0
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 1
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 2
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 3
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 4
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 5
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 6
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 7
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 8
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 9
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 10
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 11
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 12
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 13
client[192.168.146.128:52147] socket:3  Hello, i'm client[3], packet id: 14
UDP客户端例程编译及运行结果
# 服务端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, i'm client[3], packet id: 0
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 1
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 2
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 3
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 4
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 5
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 6
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 7
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 8
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 9
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 10
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 11
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 12
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 13
server[192.168.146.128:23352] -> server reply client[192.168.146.128:52147] -> Hello, i'm client[3], packet id: 14
http://www.yayakq.cn/news/346526/

相关文章:

  • 如何攻击php网站云服务器网站解析
  • wordpress站群被谷歌k重庆seo网站策划
  • 广州网站建设网站托管运营wordpress发布文章更新失败
  • 如何用网页制作网站百度官方优化软件
  • 建站模板系统免费建立属于自己的网站
  • seo职业规划外贸seo网站搭建
  • 网站流量统计表格胶南网
  • 电子商务平台网站建设wordpress商品系统
  • 郓城网站建设价格广西南宁小程序开发公司
  • 大型网站建设与维护过程如何建设视频资源电影网站
  • 企业官方网站格式淘宝客 网站选择WORDPRESS
  • ps网站头部万网人网站备案流程
  • 北京金河水务建设有限公司网站长春做网站公司
  • 网站建设端口网站建设客户需求分析调研表
  • 商务网站建设教程富阳招聘网
  • 用thinkphp做的网站google关键词优化排名
  • 丘里奇网站排名泉州网站制作运营商专业
  • 公司平台网站建设手机参数对比的网站
  • 易雅达网站建设公司弹幕网站怎么做
  • 个体工商户经营范围网站开发网络运维工程师是干什么的
  • 芗城网站建设公司vue 大型网站开发
  • 典型的企业网站网站首页建设方案
  • o2o 网站蜂鸟摄影网
  • 做网站切图是什么意思网站一元空间有哪些呀
  • 金融投资管理公司网站源码做地方特产的网站
  • 宁波公司网站建立一个人可以做多少网站
  • 海淀企业型网站建设建设证件查询官方网站
  • 国外什么推广网站好vs2013做登录网站
  • 搭建一个网站多少钱wordpress批量管理工具
  • django网站开发源码游戏制作培训