當客戶端連接到服務器時,怎樣獲取客戶端IP地址和端口,又怎樣獲取本機IP


當客戶端連接到服務器時,怎樣獲取客戶端IP地址和端口,又怎樣獲取本機IP

獲取本機IP,我這樣寫為什么不行?

12 个解决方案

#1


void CASockView::OnIp() 
{
// TODO: Add your command handler code here
char name[255];
PHOSTENT hostinfo;
CString ip;
if(gethostname(name,sizeof(name)))
{
if((hostinfo=gethostbyname(name))!=NULL)
{
LPCSTR ip=inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
MessageBox(ip);
}
}
}

#2


就是說gethostname(name,sizeof(name))得出來的結果是false

執行不到IF結構里去。

#3


用WSAGetLastError看看是什么錯誤

#4


你的name必須是服務器的名稱啊,size不能用sizeof(name),有多少個字就用多少個。
如果已經連結上了,可以用
GetPeerName()來得到對方IP
GetSockName()得到本地IP

#5


怎么用,??
具體一點好嗎

#6


BOOL GetPeerName( CString& rPeerAddress, UINT& rPeerPort );
BOOL GetSockName( CString& rSocketAddress, UINT& rSocketPort );

Parameters
rSocketAddress
   Reference to a CString object that receives a dotted number IP address.
rSocketPort
   Reference to a UINT that stores a port.


#7


我暈,MSDN里復制出來的

有沒有現成的例子?
讓我參考一下?

#8


本機地址:
    char chHostName[256];
  struct hostent *Host = NULL;
   gethostname(chHostName, 256);
   Host = gethostbyname(chHostName);
   if (Host)
   CopyMemory(&InternetAddr.sin_addr, Host->h_addr_list[0], Host->h_length);
客戶端地址:
SOCKADDR_IN ClientAddr;
int addr_length = sizeof(Socket,(SOCKADDR*)&ClientAddr,&adr_length);
LPCTSTR lpIp = inet_ntoa(ClientAddr.sin_addr);//Client IP
UINT nPort = ClientAddr.sin_port; //

#9


暈,少打了一行
客戶端地址:
SOCKADDR_IN ClientAddr;
int addr_length = sizeof(ClientAddr);
Socket accepteSocket = accept(Socket,(SOCKADDR*)&ClientAddr,&adr_length);
LPCTSTR lpIp = inet_ntoa(ClientAddr.sin_addr);//Client IP
UINT nPort = ClientAddr.sin_port; //

#10


CopyMemory(&InternetAddr.sin_addr, Host->h_addr_list[0], Host->h_length);
是什么意思,能解釋一下嗎?


取本機地址,我這樣寫不行,因為什么?
void CASockView::OnIp() 
{
// TODO: Add your command handler code here
char name[255];
PHOSTENT hostinfo;
CString ip;
if(gethostname(name,sizeof(name)))
{
if((hostinfo=gethostbyname(name))!=NULL)
{
LPCSTR ip=inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
MessageBox(ip);
}
}
}

#11


好的,
謝謝你們,

#12


學習學習!
多謝樓上各位!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com