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。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
神龙海外代理IP
2025-08-08 广告
动态Socks5代理IP是一种先进的网络代理技术,它通过中间服务器(代理服务器)动态分配IP地址,以路由网络流量。该技术不仅隐藏了用户的真实IP地址,提供了高度的匿名性和安全性,还能有效防止网络攻击和未经授权的访问。在数据采集、跨境电商、网...
点击进入详情页
本回答由神龙海外代理IP提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询