暂时还没看出问题来,可以测试一下
1、判断getpeername的返回值,若有错误,把错误代码打印出来;
2、wsprintf函数是针对UNICODE字符的吧?为什么不用sprintf
3、你的备注里说因为网络传送是低位先传送,正确的应该是网络字节序和主机字节序的问题,在网络上使用网络字节序,是高位先存。主机字节序其实又包括大端和小端,而htons, htonl, inet_addr, inet_ntoa, inet_ntol这些函数就是用于实现主机字节序和网络字节序的转换的,这些函数内部会根据大端还是小端来决定如何将数值转换成网络字节序。
你是想知道代码还是想了解原理,一般的C/S模型都由客户端发出连接请求(客户端在代码中都是存有服务器端的具体ip地址和端口信息(也就是服务器端的INET协议族地址结构)的),当客户端发送连接请求后,服务器端通过accpet函数接收连接请求,accpet函数示例:accept(ServerSocket,(structsockaddr)&from,&len)(from是一个INET协议族地址结构变量,(structsockaddr)的作用是把INET协议族地址结构强制转换为通用地址结构),accpet函数在接收连接的同时会把客户端的具体ip和端口信息赋值给from,所以说客户端socket连接的ip(非绑定的话客户机随机绑定ip和端口)是包含在连接报文数据里,服务器端只有接收到客户端发送的连接信息后,才会获得客户端的ip和端口信息,获得具体ip的方式是通过函数,这个函数可以提取出IPv4地址结构中的点分十进制地址,函数用法:inet_ntoa(fromsin_addr)。
所谓的 协议 就是双方进行数据传输的一种格式。
网络中,一帧以太网数据包的格式:
TCP/IP 是传输层协议,主要解决数据如何在网络中传输;而 >
Socket newSocket = ssAccept();
IPEndPoint clientipe = (IPEndPoint)newSocketRemoteEndPoint;
string ipaddr=clientipeAddressToString();
新建一个ServerSocket对象然后用accept()方法接受请求连接的Socket对象在调用获得的Socket对象的getInetAddress()方法获取InetAddress对象在调用InetAddress对象的getHostAddress方法来获取IP地址。
以上就是关于通过SOCKET句柄获取连接客户端的IP和端口的问题!全部的内容,包括:通过SOCKET句柄获取连接客户端的IP和端口的问题!、怎么获取socket ip 地址、socket 编程中怎么获得别人的IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)