簡體   English   中英

如何在C中使用TCP套接字編程查找客戶端ip地址

[英]how to find clients ip address using tcp socket programming in c

我正在嘗試開發TCP服務器,因為該服務器客戶端在建立連接后正在與服務器連接。 但是我如何從該連接中找到IP地址。 此處提供示例代碼。

int connfd;
int listenfd;
struct sockaddr_in cliaddr;
socklen_t clilen;

connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);

這不是確切的代碼。 但是現在我需要找到字符串形式的客戶地址。

accept()分別以sin_addrsin_port結構成員的形式在您填充的sockaddr_in結構中為您提供客戶端的遠程IP地址和端口號。 這兩個值都是網絡字節順序的數字值。 您可以使用像inet_ntoa()這樣的函數將IP轉換為人類可讀的字符串,並使用ntohs()將端口號轉換為字節順序與調用方機器匹配的整數,以便您更自然地使用它。

還要看看getpeername()getsockname()函數。

cliaddr是客戶端的結構sockaddr_in的結構變量。

cliaddr.sin_addr.s_addr包含客戶端的IP地址。

inet_ntop(AF_INET,&(cliaddr.sin_addr),clientAddr,CLADDR_LEN); 將客戶端的IP地址檢索到字符串clientAddr中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM