TCP服务器如何检测客户端的IP和端口?

在TCP服务器端,有客户端登陆,TCP服务器是如何检测到有新客户连接的?服务器如何才知道客户端的IP以及端口号?咋服务器端获取的IP和端口号一点是客户端本机发出的IP和端口号吗?为什么?

第1个回答  2010-11-30
你熟悉socket API不?如果不熟悉的话建议先看看socket编程的文档。这是链接地址:http://msdn.microsoft.com/en-us/library/ms738545(v=VS.85).aspx

一般服务端的sokcet API调用顺序为:
bind() // 设置服务端口
listen() // 等待客户端连接
accept() // 与客户端建立连接

请参考:http://msdn.microsoft.com/en-us/library/ms737526(v=VS.85).aspx
这是accept函数的原型:
SOCKET accept(
__in SOCKET s,
__out struct sockaddr *addr,
__inout int *addrlen
);

第二个参数, addr,包含了客户端的IP地址和端口。你可以认为这就是客户端的IP和端口。但是,要注意的是这个IP不一定就完全等价于客户端本机的端口。比如:客户端在一个局域网里,IP地址是192.168.1.100,然后它通过ADSL路由连接到internet,再通过internet连接到服务端。这个时候,服务端获得的客户端IP地址就可能是那个ADSL路由的IP。本回答被提问者采纳
相似回答