[摘抄-Socket-学习中]TCP&UDP通信中socket端口的复用

本文探讨了在TCP和UDP通信中如何实现客户端固定IP和端口号进行通信。通过设置socket选项SO_REUSEADDR实现端口复用,允许监听和发送在同一IP和端口上进行。示例代码分别展示了UDP服务监听和发送端的实现,强调在两者中都需要使用setsockopt函数来启用端口复用。
摘要由CSDN通过智能技术生成
在很多情况下,我们需要使用固定的IP和端口号进行通信,而默认情况下client端的端口号是不固定的,是由系统自动分配空闲的端口号进行通信的;

但是在很多情况下,某些服务写的比较严格,只接收固定的IP和端口号的数据,大家都知道IP地址我们是可以保证不变的,但是端口号在默认情况下是不可能实现不变的,这个时候我们就需要对端口号进行特殊处理;

想到要端口号固定,默认我们就想到了使用bind函数绑定端口号进行数据通信,想法是对的,但是我们实际写出代码进行测试的时候发现错了;

bind不能和服务端绑定同一个IP和端口号,但是可以绑定不通的端口号然后进行发送,这个时候就真的实现了client端固定IP和端口号发送数据,那么问题来了,我们怎么去实现和监听服务使用同一个IP和端口号呢?如何让bind在监听端和发送端同时生效呢?

百度了下有关socket通信中端口号的一些知识,发现了一个特殊的字眼“复用”,没错socket中是可以对IP地址和端口号进行复用的,也就是监听和发送使用同一个IP和端口号;

找到了资料开始百度如何去复用端口号操作,查到了一个关键函数:setsockopt

具体有何意义,可以自行百度下此函数的使用,另外需要注意下,IP和端口号复用的参数是:SO_REUSEADDR

注意:监听和发送的时候必须同时使用setsockopt 这个函数方有效;

UDP服务监听示例代码:

static void* Create_UdpServer_Tread(void *point)
{
int sockfd;
int len;
int recvLen;
unsigned char buf[BUF_SIZE];
char log[BUF_SIZE];
char temp[8];
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lock颠颠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值