TCP服务器如何检测客户端的IP和端口?
在TCP服务器端,有客户端登陆,TCP服务器是如何检测到有新客户连接的?服务器如何才知道客户端的IP以及端口号?咋服务器端获取的IP和端口号一点是客户端本机发出的IP和端...
在TCP服务器端,有客户端登陆,TCP服务器是如何检测到有新客户连接的?服务器如何才知道客户端的IP以及端口号?咋服务器端获取的IP和端口号一点是客户端本机发出的IP和端口号吗?为什么?
展开
1个回答
展开全部
你熟好虚悉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。
一般服务端的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。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
51IDC
2024-12-01 广告
2024-12-01 广告
独立IP服务器是专为满足高端网络需求而设计的服务器解决方案。它提供的、不可共享的IP地址,确保您的网站、应用或服务享有更高的安全性、稳定性和可靠性。独立IP服务器能有效避免共享IP可能带来的潜在风险,如IP被封禁等问题,为您提供更优质的网络...
点击进入详情页
本回答由51IDC提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询