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。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
快又稳
2024-10-28 广告
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应...
点击进入详情页
本回答由快又稳提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询