udp通信的原理---makefile文件
由于UDP通信不需要事先建立连接,因此不需要TCP中的connect函数。
服务器端的步骤如下:
1. socket: 建立一个socket
2. bind: 将这个socket绑定在某个端口上(AF_INET)
3. recvfrom: 如果没有客户端发起请求,则会阻塞在这个函数里
4. close: 通信完成后关闭socket
客户端的步骤如下:
1. socket: 建立一个socket
2. sendto: 相服务器的某个端口发起请求(AF_INET)
3. close: 通信完成后关闭socket
可以看到,和TCP相比,步骤少了一些。
这里我们用到了两个新的函数:
int recvfrom(int sockfd, void * buf, size_t len, int flags, struct sockaddr * src_addr, socklen_t * addrlen);
int sendto(int sockfd, const void * buf, size_t len, int flags, const struct sockaddr * dest_addr, socklen_t addrlen);
recvfrom用于接收数据,sendto用于发送数据
recvfrom:
socket:socket套接字
buf:接收到的数据的存放位置
flags:一般情况下为0
src_addr:接收的源地址
addrlen:地址长度
sendto:
socket:socket套接字
buf:要发送的数据的起始地址
flags:一般情况下为0
dest_addr:发送到的目的地址
addrlen:地址长度
还是先上代码:
Makefile:
- all: server.c client.c
- gcc -Wall client.c -o client
- gcc -Wall server.c -o server
- clean:
- rm -rf *.o client server
udp通信的原理---makefile文件的更多相关文章
- Java网络编程UDP通信原理
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
- Python_编写UDP通信编解码类、文件的上传、远程执行命令、黏包
1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class ...
- MakeFile文件是什么——内容、工作原理、作用、使用
MakeFile文件是什么?它里面包含什么内容.具有什么作用.怎么使用?下面就来具体说说. 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你 ...
- 套接字、UDP通信、TCP通信、TCP/IP协议簇
一.套接字(socket) 1.英语单词socket:n.插座:穴:v.插入插座 2.套接字就是源IP地址和目的IP地址.源端口号和目的端口号的组合,是通过传输层进行通信的.IP指定电脑,端口指定某一 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- HP-SOCKET TCP/UDP通信框架库解析
项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...
随机推荐
- 编译llvm+clang
第一步,下载llvm代码: git clone git@github.com:llvm-mirror/llvm.git 第二步,进入llvm/tools目录并下载clang代码 cd llvm/too ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- 存储OS
openfiler这个登陆慢 是https协议的问题 http://www.getnas.com/open-source-nas FreeNAS®,目前最受欢迎的开源免费 NAS 操作系统之一,基于以 ...
- google protocol buffer 使用说明
一:编译源码 下载地址:http://code.google.com/p/protobuf/downloads/list 下载后,根据编译说明进行编译. windows 平台,直接打开msvc中的工程 ...
- [zz] 英文大写缩写前要加THE吗
http://zhidao.baidu.com/link?url=BvXRdoE0OjGh46rlodbyM3wirORSGGcnYGq0xYEtcoIMTkLnXd4Hl3iMLbKNb2npRdI ...
- WEB-INF目录下的文件访问权限(待解决)
对于Tomcat服务器而言,WEB-INF目录下的文件是不能通过在浏览器中直接输入地址的方式来访问. 原因:还不清楚
- shell 判断条件
[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...
- xml中数据存储 <![CDATA[ … ]]>
在xml中 有些可能是 转义的字符 比如像<等 &符号, 你没发现 在加参数后面要进行转义 写成: 可以是& 但是每处都要 这么写. 在未来不可控的 ...
- 向mysql数据库中插入大二进制文件和大文本
@Test public void run() throws ClassNotFoundException, SQLException, FileNotFou ...
- web服务器长连接
web服务器都提供长连接的方式,所谓长连接就是客户端一次请求完后,不关闭连接,保持一段时间的连接,下次此客户端再次请求时,不用创建新连接,复用所保持的连接即可.从理论上,长连接可以免去大量建立和关闭连 ...