tpc socket 能不能 先bind一个自己的ip 再connet 服务器 ?

lwykj 2007-07-27 03:57:27
情况这样的!
我的机器上有多个ip(公网ip)!
我连接服务器的时候,希望通过不同的ip,连接到别的服务器上去!

struct sockaddr_in Server;
struct sockaddr_in mulIP;
memset(&Server, 0, sizeof(Server));
memset(&mulIP, 0, sizeof(mulIP));

Server.sin_family = AF_INET; //设置目标服务器地址
Server.sin_port = htons(RemotePort);
Server.sin_addr.s_addr = inet_addr(HostName);

// Create Socket
*ServerSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//
if (*ServerSocket == INVALID_SOCKET)
return false;

mulIP.sin_family = AF_INET; //设置本机ip
mulIP.sin_port = htons(0);//LisPort
mulIP.sin_addr.s_addr = inet_addr(listenip);

//希望通过 bind实现,将一个本机指定ip,关联到 *ServerSocket 然后通过connect 去连接目标服务器
//试验结果 bind 成功
//connect 返回 -1
err code : 10060 [Error] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

bind(*ServerSocket,(sockaddr*)&mulIP,sizeof(mulIP)); //添加发送ip
connect(*ServerSocket,(const SOCKADDR *)&Server,sizeof(Server));




请问下,这种方法是否可行,如何才能行的通?
...全文
376 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
songzijian 2007-07-30
  • 打赏
  • 举报
回复
……楼主你用mulIP.sin_addr.s_addr = htonl(INADDR_ANY);能连上服务器么??
如果连这个都连不上,就不是你说的绑定ip的问题了,只要服务器能响应,没有理由说绑定某个可用的IP就连不上啊??
lwykj 2007-07-29
  • 打赏
  • 举报
回复
平时怎么connect就怎么连,只要不和bind是同一个SOCKET就行
------------------------------------------------------
为什么不能 connect一个bind的socket呢?


因为一台机器上有多个ip,需要将连出去的socket使用不同的ip 例如:
我一台机器上
有 61.125.123.5 61.125.123.6 61.125.123.7 ............
我connect服务器的时候,需要 用
61.125.123.5 绑定一个socket 连接服务器
61.125.123.6 .....................
这样做! 如果不将本地ip bind socket 是没有办法 区分的!
他们都将使用一个默认的ip 连接出去!
VirtualDesktop 2007-07-29
  • 打赏
  • 举报
回复
可以
僵哥 2007-07-29
  • 打赏
  • 举报
回复
The connect function is used to create a connection to the specified destination. If socket s, is unbound, unique values are assigned to the local association by the system, and the socket is marked as bound.

不过如果你要选择本机的地址来绑定,那么你就需要注意一下你所绑定的那个IP与你的目标地址能不能通讯。并且绑定的地址不可以重复(除非地址允许重用)。
mynamelj 2007-07-28
  • 打赏
  • 举报
回复
邦定本机IP这样写就行了
mulIP.sin_addr.s_addr = htonl(INADDR_ANY);
Avoid 2007-07-28
  • 打赏
  • 举报
回复
需要要例子吗?

平时怎么connect就怎么连,只要不和bind是同一个SOCKET就行.
lwykj 2007-07-27
  • 打赏
  • 举报
回复
老大给个例子嘛!
  • 打赏
  • 举报
回复
当然可以了。

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧