JAVA的ServerSocket服务端如何获取远程请求连接客户端的IP地址
ServerSocket中并不提供getRemoteSocketAddress()的方法我该如何在服务端获取到客户端的IP地址。有什么方法吗?求教...
ServerSocket中并不提供getRemoteSocketAddress()的方法
我该如何在服务端获取到客户端的IP地址。有什么方法吗?求教 展开
我该如何在服务端获取到客户端的IP地址。有什么方法吗?求教 展开
2011-06-25
展开全部
serversocket()不提供这个方法,但是server端获取到的请求new serversocket().accept()返回的是一个socket对象,也就是当前连接的信息,这里面包含有一个 getRemoteAddress方法。多看看API
追问
你帮我看一下这个题目
编写防火墙规则:禁止除管理员计算机(172.18.25.110)外任何一台计算机访问某主机(172.18.25.109)的终端服务(TCP端口为3389)
如果按照accept方法返回的对象来获取IP地址。如果获取到的是非管理员的IP地址,那我们的Soket连接已经建立了。难道要调用ServerSocket的close方法,这样程序好像不是很明了
追答
你想说的是程序流程控制的问题吧?
socket通讯的过程就是打好招呼传输数据,而且在 server .accept()某个 连接的时候,就已经是有最基本的标识通讯了,(也就是说你想要辨别访问者得信息这就足够了,),而在socket通讯程序中,想要传输数据,一般还要打开inputstream,然后读取输入流进行数据处理,所以,一个典型的服务器端socket server应该是下面这个样子的:
server = new SocketServer(3389);
while(true){
Socket s = server.accept();//(1)
new Processer().start();//每个 连接 开启一个线程处理器中的数据。这里的Processer是Runnable的实现 或者 Thread的子类
}
所以,如果想要控制的话,直接在(1) 这个动作的后面做。判断是不是受到限制的ip,如果不受限制,那么可以开启线程,如果受控制,continue到下一个循环监听,或者做一些提醒啊什么的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询