首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux、C、socket:如何使用结构sockaddr_storage指定TCP客户端端口

Linux、C、socket:如何使用结构sockaddr_storage指定TCP客户端端口
EN

Stack Overflow用户
提问于 2016-02-03 23:41:55
回答 1查看 1.1K关注 0票数 0

我正在尝试创建具有多个TCP连接的Linux工具,它同时支持IPv4和IPv6,因此我选择使用"sockaddr_storage“。

现在,我的问题是,如何将客户端套接字绑定到指定(或随机) TCP端口?

对于TCP客户端,在一个线程中,如果我只创建10个套接字然后连接()到服务器,那么这10个套接字将在客户端使用顺序的TCP端口,例如,从54594开始,然后从54596、54600、54602开始,等等。

现在,我想将这些客户端套接字绑定到不同的(随机) TCP端口,如何处理sockaddr_storage?

谢谢!

=============adding码============

代码语言:javascript
复制
struct sockaddr_storage local_addr; 

sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol)    

(*(struct sockaddr_in*)&local_addr).sin_port = 0;
local_addr_size = sizeof(local_addr);
bind(sockfd, (struct sockaddr *)&local_addr, local_addr_size);

............
connect(sockfd, p->ai_addr, p->ai_addrlen)
EN

回答 1

Stack Overflow用户

发布于 2016-02-03 23:47:14

我想将这些客户端套接字绑定到不同的(随机) TCP端口。

当您调用connect()而不首先调用bind()时,就会自动发生这种情况。您不需要为此编写任何代码,因此sockaddr_storage根本不需要编写任何代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35189924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档