TCP/IP(8)-UDP Server与UDP Client(linux套接字)

上一篇文章已经讨论了linux套接字基于TCP的客户端和服务器端编程,这片文章详细讨论linux套接字基于UDP的客户端和服务器端编程。

UDP客户端服务器模式

UDP客户/服务器模式
UDP与TCP相比要简洁很多,UDP不需要listen,accept和connect过程。

1. socket函数创建套接字

#include <sys/types.h>
#include <sys/socket.h>
sockfd = socket(AF_INET, SOCK_DGRAM, 0);

UDP是数据报的形式,因此在创建套接字时,是SOCK_DGRAM,这是与TCP不同的地方。

2. bind函数,绑定服务器地址到套接字上

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

bind函数与TCP的使用相同,将服务器的知名端口号和IP地址绑定到服务器套接字地址上,IP地址可能有多个。

3. sendto函数,发送数据给指定地址

#include <sys/types.h>
#include <sys/socket.h>

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);

sendto函数比send函数多出两个参数,一个是目的地址,一个是地址长度。告诉客户端发送给哪个IP地址和哪个端口号。

3. recvfrom函数,接收数据

#include <sys/types.h>
#include <sys/socket.h>
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);

recvfrom函数比recv函数多出两个参数,相当于TCP的accept函数,告诉我们是谁发送了数据过来。

服务端程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <unistd.h>

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值