UDP服务器代码:

 #include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <iostream> using namespace std; int main(int argc, char *argv[])
{
if (argc != )
{
cout << "usage: " << argv[] << " ip port" << endl;
return -;
} char *szIp = argv[];
in_addr_t iIp = inet_addr(szIp);
if (iIp == INADDR_NONE)
{
cerr << "fail to parse ip: " << szIp << endl;
return -;
}
char *pEnd = NULL;
uint16_t usPort = strtoul(argv[], &pEnd, );
if (*pEnd != '\0')
{
cerr << "fail to parse port: " << argv[] << endl;
return -;
} int iSockFd = socket(AF_INET, SOCK_DGRAM, );
if (iSockFd < )
{
cerr << "fail to create socket, err: " << strerror(errno) << endl;
return -;
}
cout << "create socket fd " << iSockFd << endl; sockaddr_in oAddr;
memset(&oAddr, , sizeof(oAddr));
oAddr.sin_family = AF_INET;
oAddr.sin_addr.s_addr = iIp;
oAddr.sin_port = htons(usPort);
if (bind(iSockFd, (sockaddr *)&oAddr, sizeof(oAddr)) < )
{
cerr << "fail to bind addr " << szIp << ":" << usPort << ", err: " << strerror(errno) << endl;
return -;
}
cout << "bind addr " << szIp << ":" >> usPort << endl; uint8_t acRecvBuf[ * ];
while (true)
{
sockaddr_in oClientAddr;
socklen_t iAddrLen = sizeof(oClientAddr);
ssize_t iRecvLen = recvfrom(iSockFd, acRecvBuf, sizeof(acRecvBuf), , (sockaddr *)&oClientAddr, &iAddrLen);
if (iRecvLen < )
{
cerr << "fail to recv, err: " << strerror(errno) << endl;
continue;
}
cout << "recv data from " << inet_ntoa(oClientAddr.sin_addr) << ":" << ntohs(oClientAddr.sin_port) << ", len: " << iRecvLen << endl; ssize_t iSendLen = sendto(iSockFd, acRecvBuf, iRecvLen, , (sockaddr *)&oClientAddr, iAddrLen);
if (iSendLen < )
{
cerr << "fail to send, err: " << strerror(errno) << endl;
continue;
}
cout << "echo to client, len: " << iSendLen << endl;
} return ;
}

UDP客户端代码:

 #include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <iostream> using namespace std; int main(int argc, char *argv[])
{
if (argc != )
{
cout << "usage: " << argv[] << " ip port message" << endl;
return -;
} char *szIp = argv[];
in_addr_t iIp = inet_addr(szIp);
if (iIp == INADDR_NONE)
{
cerr << "fail to parse ip: " << szIp << endl;
return -;
}
char *pEnd = NULL;
uint16_t usPort = strtoul(argv[], &pEnd, );
if (*pEnd != '\0')
{
cerr << "fail to parse port: " << argv[] << endl;
return -;
}
char *szMsg = argv[];
size_t uiMsgLen = strlen(szMsg); int iSockFd = socket(AF_INET, SOCK_DGRAM, );
if (iSockFd < )
{
cerr << "fail to create socket, err: " << strerror(errno) << endl;
return -;
}
cout << "create socket fd " << iSockFd << endl; sockaddr_in oServerAddr;
memset(&oServerAddr, , sizeof(oServerAddr));
oServerAddr.sin_family = AF_INET;
oServerAddr.sin_addr.s_addr = iIp;
oServerAddr.sin_port = htons(usPort);
ssize_t iSendLen = sendto(iSockFd, szMsg, uiMsgLen, , (sockaddr *)&oServerAddr, sizeof(oServerAddr));
if (iSendLen < )
{
cerr << "fail to send, err: " << strerror(errno) << endl;
return -;
}
cout << "send to " << szIp << ":" << usPort << ", len: " << uiMsgLen << ", msg: " << szMsg << endl; char szRecvBuf[ * ];
sockaddr_in oRecvAddr;
socklen_t iAddrLen = sizeof(oRecvAddr);
ssize_t iRecvLen = recvfrom(iSockFd, szRecvBuf, sizeof(szRecvBuf), , (sockaddr *)&oRecvAddr, &iAddrLen);
if (iRecvLen < )
{
cerr << "fail to recv, err: " << strerror(errno) << endl;
return -;
}
szRecvBuf[iRecvLen] = '\0';
cout << "recv from " << inet_ntoa(oRecvAddr.sin_addr) << ":" << ntohs(oRecvAddr.sin_port) << ", len: " << iRecvLen << ", msg: " << szRecvBuf << endl; return ;
}

UDP服务器/客户端代码示例的更多相关文章

  1. TCP服务器/客户端代码示例

    TCP服务器代码: #include <errno.h> #include <string.h> #include <stdlib.h> #include < ...

  2. SFTP客户端代码示例

    参考链接:SFTP客户端代码示例 操作系统:Windows7/8,VS2013 环境:libssh2 1.4.3.zlib-1.2.8.openssl-1.0.1g 原文: “从http://www. ...

  3. socket模块实现基于UDP聊天模拟程序;socketserver模块实现服务端 socket客户端代码示例

    socket模块 serSocket.setblocking(False) 设置为非阻塞: #coding=utf-8 from socket import * import time # 用来存储所 ...

  4. 推荐Java五大微服务器及其代码示例教程

    来源素文宅博客:http://blog.yoodb.com/yoodb/article/detail/1339 微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序 ...

  5. TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库

    这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...

  6. socket本地模拟UDP 服务器+客户端(三)

    UDP: TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包. ...

  7. 【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯

    本次实验利用UDP协议, 语言环境为 C/C++ 利用套接字Socket编程,实现Server/CLient 之间简单的通讯. 结果应为类似所示: 下面贴上代码(参考参考...) Server 部分: ...

  8. 安卓作为udp服务器,PC作为客户端,仅监听

    安卓客户端作为udp服务器,监听其他客户端的数据,测试已成功 本次实验所用数据: 安卓作为服务器: 端口:8888            IP:192.168.1.104 电脑作为客户端: 端口:50 ...

  9. Python 绝技 —— UDP 服务器与客户端

    i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 —— TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演 ...

随机推荐

  1. day14_雷神_前端02

    # 前端day02 1. html标签 1. span标签设置宽高 设置宽高后,字体不会发生变化. 2. 盒模型 padding是border里面的距离: margin 是border边框外头的了属于 ...

  2. JDBC几种常见的数据库连接

    JDBC的URL=协议名+子协议名+数据源名.a 协议名总是“jdbc”.b 子协议名由JDBC驱动程序的编写者决定.c 数据源名也可能包含用户与口令等信息:这些信息也可单独提供.几种常见的数据库连接 ...

  3. Spring 使用xml配置aop

    1.xml文件需要引入aop命名空间 2.xml内容: <?xml version="1.0" encoding="UTF-8"?> <bea ...

  4. UWP忽略短时间内重复触发的事件

    原链接:UWP忽略短时间内重复触发的事件 - 超威蓝火 做移动端开发的可能都会遇到这种需求,当用户点击一个按钮之后,由于没有异步,或者设备性能很差等等原因,程序卡住了.但是用户不知道是咋回事啊,就开始 ...

  5. Java 中的 HttpServletRequest 和 HttpServletResponse 对象

    HttpServletRequest对象详解 javax.servlet.http.HttpServletRequest是SUN制定的Servlet规范,是一个接口.表示请求,“HTTP请求协议”的完 ...

  6. 机器学习技法笔记:04 Soft-Margin Support Vector Machine

    Roadmap Motivation and Primal Problem Dual Problem Messages behind Soft-Margin SVM Model Selection S ...

  7. Swing中的线程并发处理

    理论解释见官方的文档: https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html 一个Swing程序中一般有下面三种 ...

  8. 项目- Vue全家桶实战去哪网App

    最近在学习Vue,花了几天时间跟着做了这个项目,算是对学习Vue入门的一个总结,欢迎同学们star 去哪网APP

  9. Mac下命令行tree生成文件树

    不像Windows,Mac环境本身是没有tree命令的,但可以后天呐~ 1.下载文件包并将其放在系统目录下(本人存放路径为/Users/) https://homebrew.bintray.com/b ...

  10. PCA历程详细python代码(原创)

    #PCA主成分分析,原文为文末的链接,代码为自己亲自手码 def cov_out1(dx,dy): #第一步:求解x,y各自的均值 mean_x=0 mean_y=0 for i in range(l ...