阅读:1892回复:6
如何得到对方IP
我UDP写了一个通信软件,我要知道对方的IP,该如何得到,MSDN上说,用Getpeername()可以,前提是必须先建立连接,但UDP是面向无连接的,请指教,我该如何做。谢谢。
|
|
沙发#
发布于:2004-02-12 19:32
好象应用层不好办。
|
|
板凳#
发布于:2004-02-13 08:29
在UDP报文理没IP信息,是不是要用原始套接字写。
|
|
地板#
发布于:2004-02-13 13:15
UDP也可以connect,这个connect只是绑定对方IP,
connect以后,就可以用send,recv,不一定非要用sendto,recvfrom。 getpeername可以取到这个绑定的IP。 |
|
地下室#
发布于:2004-02-13 19:09
还是不行,请帮忙看一下。
m_Socket=new DASocket(this); m_Socket->Create(3550,SOCK_DGRAM); m_SVSocket=new DASocket(this); m_SVSocket->Create(3555,SOCK_DGRAM); m_SVSocket->Bind(3555,"127.0.0.1"); m_SVSocket->Listen(5); m_Socket->Connect("127.0.0.1",3555); 服务器端不能响应,如果SOCK_DGRAM改为SOCK_STREAM用TCP连接就有响应了。请帮 我看看那里有问题了。 |
|
5楼#
发布于:2004-02-14 17:30
基本概念不清,UDP本来就不是基于连接的,你在server端怎么听到连接?
仔细想想我前面说得每句话的含义,我没有暗示你server这么写吧? |
|
6楼#
发布于:2004-02-16 22:18
小弟不才,还请多指教。
UDP也可以connect,这个connect只是绑定对方IP, getpeername可以取到这个绑定的IP。 我的理解是connect由客户端发起,getpeername得到的也是客户端帮定的IP,就是connect绑定的对方的IP。 我的情况是这样的CLIENT在内网,server在公网。我要知道的是内网的IP经过NAT后的地址,也就是在SERVER上如何得到这个NAT后的地址。 |
|