如何 产生 随机 linux 端口,怎么知道0产生的随机的端口号是多少

如何知道0产生的随机的端口号是多少?

为了实现并发处理,我用了0端口来发送,因为0表示由系统分配一个端口,该端口介于1024和5000之间,但在程序中要如何知道这个随机端口号是多少呢?还望大牛指教。。。

e65465b53c09fc105901b37b544adcbe.gif

udp

并发

分享到:

------解决方案--------------------

connect之后再发送就可以了

connect之后用getsockname就能查到本地端口号

/*-

* Copyright (C) mymtom

*

* vi:set ts=4 sw=4:

*/

#ifndef lint

static const char rcsid[] = "$Id$";

#endif /* not lint */

/**

* @file        udpport.c

* @brief

*/

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

int main(int argc, char *argv[])

{

int fd;

int ret;

struct sockaddr_in servaddr;

struct sockaddr_in addr;

socklen_t len;

fd = socket(PF_INET, SOCK_DGRAM, 0);

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(8080);

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

ret = connect(fd, (struct sockaddr *)&servaddr, sizeof(servaddr));

printf("ret=%d\n", ret);

memset(&addr, 0, sizeof(addr));

len = sizeof(addr);

getsockname(fd, (struct sockaddr *)&addr, &len);

printf("ret=%d\n", ret);

printf("port=%d\n", (int)ntohs(addr.sin_port));

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值