网络------利用socket编程实现简单的UDP网络程序

本文介绍了如何使用socket编程实现简单的UDP网络程序,包括发送和接收数据的步骤,以及点分十进制字符串与32位网络字节序之间的转换。通过示例代码`udp_server.c`和`udp_client.c`,展示了UDP服务器端和客户端的实现过程,最终在本地IP 127.0.0.1上进行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前已经介绍过socket编程了,并且实现了一个简单TCP网络程序
https://blog.youkuaiyun.com/qq_34021920/article/details/80153071
现在再来实现一个简单的UDP程序,来看看需要用到的操作


注:UDP同样需要利用socket函数创建套接字,然后利用bind函数进行绑定。在这里就不再做详细介绍(链接戳上面),在这里介绍一下UDP进行数据读写的操作

1.发送数据
#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);

sockfd:是要发送的socket描述符
buf:待发送数据的缓冲区
len:缓冲区长度
flags:调用方式标志位,一般为0, 改变flags,将会改变sendto发送的形式
dest_addr:指向目的套接字的地址
addrlen:所指地址的长度

返回值:成功返回实际传送出去的字符数,失败返回-1。

2.接受数据
#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);

sockfd:标识一个已连接的socket描述符
buf:接受缓冲区
len:接受缓冲区长度
flags:调用操作方式,一般设置为0
src_addr:指向装有源地址的缓冲区
addrlen:缓冲区长度

返回值:成功返回接收到的字符数,失败返回-1。


在之前实现TCP的代码中,我们用到了一些地址转换函数,UDP中同样需要。在这里介绍一下
sockaddr_in中的成员struct in_addr sin_addr表示32位的IP地址,但是我们通常用点分十进制的字符串表示IP地址,所以就需要将字符串转换为in_addr类型,以下函数可就可以实现这个功能:

点分十进制字符串转为32位的网络字节序
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值