socket的bind函数是否只能绑定本地IP,不能绑定外网IP么

socket的bind函数是不是只能绑定本地IP,不能绑定外网IP么?

CString m_SiteInfo="xxx.xxx.xxx.xxx";//外网IP
addrSock.sin_addr.S_un.S_addr=inet_addr(m_SiteInfo.LockBuffer());
int retval;
retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
if(SOCKET_ERROR==retval)
{
closesocket(m_socket);
MessageBox("绑定失败!");
return FALSE;
}
运行时就出现“绑定失败”
如果把CString m_SiteInfo="xxx.xxx.xxx.xxx"里的IP改为本地IP是没有错误的。
我没有用路由器,用的联通宽带。我认为和联通的NET技术有关
------解决思路----------------------
在这个条件if(SOCKET_ERROR==retval)中加入WSAGetLastError()查看是什么错误码, 然后你就能知道原因。

VS的工具中有查看错误码的工具。
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

什么叫外网和内网?你说的是保留类的IP地址么,比如192.168.X.X ?绑定IP和这个没有关系的。
我用ipconfig命令查出来的是内网IP而我用百度查出来的是外网IP.按照常理这两个IP应该是一样的,但是我的电脑确实不一样。因为联通NET了


这个应该是不可以的,你的电脑只能控制你自己的电脑的IP,不能控制别人电脑的IP,试想一下,如果你可以控制别人的电脑的IP,那网络不就乱套了,除非别人给你开了端口映射,你可以百度下端口映射技术。
我没有控制别人的IP啊,我只是想绑定我的外网IP,这个外网IP是联通的路由器分配给我的,与我的内网IP所对应的


我说的别人的电脑,就值指的这个联通的路由器,如果你想要绑定这个路由器上的端口,必须要让联通给你做端口映射才行,因为这个路由器是联通的,不是你的,你没有控制权,这么说你能懂吗?


引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

什么叫外网和内网?你说的是保留类的IP地址么,比如192.168.X.X ?绑定IP和这个没有关系的。
我用ipconfig命令查出来的是内网IP而我用百度查出来的是外网IP.按照常理这两个IP应该是一样的,但是我的电脑确实不一样。因为联通NET了


这个应该是不可以的,你的电脑只能控制你自己的电脑的IP,不能控制别人电脑的IP,试想一下,如果你可以控制别人的电脑的IP,那网络不就乱套了,除非别人给你开了端口映射,你可以百度下端口映射技术。
我没有控制别人的IP啊,我只是想绑定我的外网IP,这个外网IP是联通的路由器分配给我的,与我的内网IP所对应的


我说的别人的电脑,就值指的这个联通的路由器,如果你想要绑定这个路由器上的端口,必须要让联通给你做端口映射才行,因为这个路由器是联通的,不是你的,你没有控制权,这么说你能懂吗?
好吧,我也是这个意思,谢谢您的解答
那些远程控制软件是如何连接被控端的,如果被控端也是我这种情况?


这个就是他们黑客一般有一个外网的服务器,然后这些被控端主动连接到这个服务器上,然后黑客等着这些电脑上线就行了。