如果服务器端要获取客户端ip的话:
//假设socket(),bind(),listen()函数已经完成
addrlen = sizeof(client);
connetfd = accept(listenfd,(struct sockaddr *)&client,&addrlen);
那么client.sin_port 就是客户端的端口
client.sin_addr.s_addr 就是客户端的ip。
这两个都是以网络字节序来保存的,如果要printf的话需要先转化为主机字节序
如果你测试访问的时候,使用的是 localhost 进行访问的,那么服务器端获得的也就是127.0.0.1,因为localhost是一个环路地址,特殊的.
如果你是通过你的ip地址进行访问的,那么获得的IP地址就会是正确的了.
-------
要通过自己本地的IP进行访问,在控制面板的网络连接里找到本地连接,查看它的属性,并找到"详细信息"按钮,点击后弹出的对话框中IPV4地址就是本地地址.
或打开命令行,输入 ipconfig /all 即可找到本地地址.
在浏览器中通过这个IP地址访问,就不会是127.0.0.1了.