由于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:

  1. all: server.c client.c
  2. gcc -Wall client.c -o client
  3. gcc -Wall server.c -o server
  4. clean:
  5. rm -rf *.o client server

最新文章

  1. Tween Animation----Rotate旋转动画
  2. 1.5 STL中大小相等的概念
  3. WPF控件
  4. ACM 众数问题
  5. PHP - PDO 之 mysql 参数绑定
  6. java中-静态代码块、构造代码块、构造方法的联系
  7. Linux企业级项目实践之网络爬虫(3)——设计自己的网络爬虫
  8. Linux 下安装oracle数据库
  9. 状态压缩动态规划 -- 棋盘问题 POJ 1321
  10. Linux设置静态IP【转】
  11. Linux下find命令用法小结
  12. Java中实现多线程关键词整理
  13. 【chrome】 chrome 开发者工具
  14. Dockerfile 指令 VOLUME 介绍
  15. MyBatis(二):Select语句传递参数的集中方案
  16. Linux 学习 (七) 挂载命令 & 用户登陆查看
  17. 省钱版----查找 IoT 设备TTL线序__未完待续
  18. IPerf——网络测试工具介绍与源码解析(5)
  19. 《Google Glass开发指南》
  20. SQL Server还原数据库

热门文章

  1. POJ 1094 (TopoSort)
  2. addresslist
  3. node版本管理器nvm(服务器项目相关)
  4. DB2技术点
  5. ssl_error_rx_record_too_long
  6. 【dom4j】解析xml为map
  7. ADF_Controller系列3_通过创建ADF Menu作为页面向导(Part1)
  8. [ActionScritp 3.0] 使用LocalConnection建立通信
  9. AX 2012 SSRS print setting-报表打印输出设置
  10. JAVA设计模式之解释器模式