
Socket clientSock = ServerSocketAccpet();
接受客户端连接
DateTime connectTime = DateTimeNow;
连接一个客户端后,当前时间就是连接时间。
(clientSockRemoteEndPoint as IPEndPoint)IPAddress;
ip地址
(clientSockRemoteEndPoint as IPEndPoint)Port;
端口号
server = new SocketServer(3389);
Socket s = serveraccept();
sgetInetAddress()getHostAddress()
serversocket不提供这个方法,但是server端获取到的请求new serversocket()accept()返回的是一个socket对象,也就是当前连接的信息,这里面包含有一个 getRemoteAddress方法。多看看API
暂时还没看出问题来,可以测试一下
1、判断getpeername的返回值,若有错误,把错误代码打印出来;
2、wsprintf函数是针对UNICODE字符的吧?为什么不用sprintf
3、你的备注里说因为网络传送是低位先传送,正确的应该是网络字节序和主机字节序的问题,在网络上使用网络字节序,是高位先存。主机字节序其实又包括大端和小端,而htons, htonl, inet_addr, inet_ntoa, inet_ntol这些函数就是用于实现主机字节序和网络字节序的转换的,这些函数内部会根据大端还是小端来决定如何将数值转换成网络字节序。
网络通信可分为两种模式:TCP有连接的通信
UDP无连接的通信
依照上述的问题我可以理解为你是要进行有连接的通信。是要经过三次握手才能实现可靠的连接
第一次:建立连接时三次握手,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN(Synchronize Sequence Numbers)同步序列号。
服务器端即可使用:
Socket s=serverSocketaccept();
String clientIP=sgetInetAddress()toString();
这就实现了java服务器端获取到连接此服务器的客户端的IP了,你若想实现获取所有连接此服务器的客户端的IP,你可以把每次accept()返回的socket放进全局的Vector里面,然后在遍历这个vector方法就同上代码咯……
IPAddress remote_ip = ((SystemNetIPEndPoint)workerSocketRemoteEndPoint)Address;//获取远程连接IP
以上就是关于C#:客服端和服务端建立TCP连接后,怎么从服务端获取客户端的IP地址全部的内容,包括:C#:客服端和服务端建立TCP连接后,怎么从服务端获取客户端的IP地址、用socket怎么获取本机ip、JAVA的ServerSocket服务端如何获取远程请求连接客户端的IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)