Linux UDP通信例子
UDP C/S编程的步骤如下图所示

////server.c
#include <sys/types.h>
#include <sys/socket.h>
#include<pthread.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h> int main(int argc, char **argv)
{
if (argc != )
{
printf("Usage: %s port\n", argv[]);
exit();
}
printf("Welcome! This is a UDP server, I can only received message from client and reply with same message\n"); struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(argv[]));
addr.sin_addr.s_addr = htonl(INADDR_ANY); int sock;
if ( (sock = socket(AF_INET, SOCK_DGRAM, )) < )
{
perror("socket");
exit();
}
if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < )
{
perror("bind");
exit();
}
char buff[];
struct sockaddr_in clientAddr;
int n;
int len = sizeof(clientAddr);
while ()
{
n = recvfrom(sock, buff, , , (struct sockaddr*)&clientAddr, &len);
if (n>)
{
buff[n] = ;
printf("%s %u says: %s\n", inet_ntoa(clientAddr.sin_addr), ntohs(clientAddr.sin_port), buff);
n = sendto(sock, buff, n, , (struct sockaddr *)&clientAddr, sizeof(clientAddr));
if (n < )
{
perror("sendto");
break;
}
}
else
{
perror("recv");
break;
}
}
return ;
}
///client.c
#include <sys/types.h>
#include <sys/socket.h>
#include<pthread.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h> int main(int argc, char **argv)
{
if (argc != )
{
printf("Usage: %s ip port", argv[]);
exit();
}
printf("This is a UDP client\n");
struct sockaddr_in addr;
int sock; if ( (sock=socket(AF_INET, SOCK_DGRAM, )) <)
{
perror("socket");
exit();
}
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(argv[]));
addr.sin_addr.s_addr = inet_addr(argv[]);
if (addr.sin_addr.s_addr == INADDR_NONE)
{
printf("Incorrect ip address!");
close(sock);
exit();
} char buff[];
int len = sizeof(addr);
while ()
{
gets(buff);
int n;
n = sendto(sock, buff, strlen(buff), , (struct sockaddr *)&addr, sizeof(addr));
if (n < )
{
perror("sendto");
close(sock);
break;
}
n = recvfrom(sock, buff, , , (struct sockaddr *)&addr, &len);
if (n>)
{
buff[n] = ;
printf("received:");
puts(buff);
}
else if (n==)
{
printf("server closed\n");
close(sock);
break;
}
else if (n == -)
{
perror("recvfrom");
close(sock);
break;
}
} return ;
}
Linux UDP通信例子的更多相关文章
- Linux TCP通信例子
TCP通信的C/S模型 ///server.c #include <sys/types.h> #include <sys/socket.h> #include <stdi ...
- 关于UDP通信的参考目录
1.IP头,TCP头,UDP头,MAC帧头定义 2.深入理解TCP/UDP通信原理 其内部有提到关于wireshark抓包分析工具的使用 3.udp通讯中的connect()和bind()函数 其中有 ...
- (转) 在linux网络UDP通信中,关于客户端是否绑定的理解
最近在做一个实例,是用RTSP协议完成.服务器已经有了,只需要把客户端做好就行了,在做的过程中发现了一些问题,就是关于UDP客户端是否绑定的问题. 也许大家在书上看到的大多都是说UDP客户端不需要绑定 ...
- [C语言]一个很实用的服务端和客户端进行UDP通信的实例
前段时间发了个TCP通信的例子,现在再来一个UDP通信的例子.这些可以作为样本程序,用到开发中.“裸写”socket老是记不住步骤,经常被鄙视…… 下面的例子很简单,写一个UDP的server用于收包 ...
- QT之UDP通信
前言:前一篇讲了TCP通信,这篇来看看UDP通信. 这里说明一下,UDP通信中分为三种通信分别为单播.组播和广播,下面将一一为大家介绍. 同样的我们都需要在工程文件中添加network QT += c ...
- C#之UDP通信
简介 C#中的udp通信关键类:Udpclient,它位于命名空间System.Net.Sockets中,发送接收都是UdpClient类, 命名空间 using System.Net.Sockets ...
- 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信
第17章 RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...
- [JSBSim]基于winsocket2的TCP\UDP使用例子
TCP部分: 参考:http://blog.csdn.net/sbfksmq/article/details/50808863 另附:linux下的tcp/udp参考:https://www.cnbl ...
- 等待唤醒机制,UDP通信和TCP通信
等待唤醒机制 通过等待唤醒机制使各个线程能有效的利用资源. 等待唤醒机制所涉及到的方法: wait() :等待,将正在执行的线程释放其执行资格 和 执行权,并存储到线程池中. notify():唤醒, ...
随机推荐
- Nvidia NVENC 硬编码预研总结
本篇博客记录NVENC硬编码的预研过程 github: https://github.com/MarkRepo/NvencEncoder 步骤如下: (1)环境搭建 (2)demo编译,测试,ARG ...
- PHP eval函数使用介绍
eval()函数中的eval是evaluate的简称,这个函数的作用就是把一段字符串当作PHP语句来执行. 复制代码代码如下: eval("echo'hello world';") ...
- 第14条:尽量用异常来表示特殊情况,而不要返回Nono
核心知识点: 1.用None这个返回值来表示特殊意义的函数,很容易使调用者犯错,因为None和0以及空字符串之类的值,在条件表达式里都会评估为False. 2.两种方法:二元法:将异常抛给上一级直接报 ...
- 小程序连接百度ai
function getTextFromImage(res) { var access_token = '24.c649256d2e*****0.282335-11449805'; var url = ...
- ARM NEON 64bit 查找表替换
没啥效果,如果表的长度在 64个uint8_t之类,应该可以提高查表速度,否则还是C来的快 #ifdef HAVE_NEON_AARCH64 void table_lookup_AArch64_neo ...
- Havel-Hakimi定理 POJ1659
对于图的所有顶点,计算出每个顶点的度,度序列.给定一个序列判断序列是否可图. #include<cstdio> #include<algorithm> #include< ...
- keeplive使用
一.简介 Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing( ...
- NodeJS Cross domain
跨域问题主要在header上下功夫 首先提供一个w3c的header定义 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 再提供一个网友提 ...
- 代码题(2)— 统计所有小于非负整数 n 的质数的数量
质数也叫素数,只能被1和它本身整除的. 利用筛选法. class Solution { public: int countPrimes(int n) { ) ; ; vector<); ;i&l ...
- Django 文件下载功能
def file_download(request): con= MySQLdb.connect(host='192.168.xxx.xxx',user='root',passwd='xxxx',db ...