我正在开发一个java项目,我们有一个服务器和一个客户端应用程序。服务器接受连接并通过套接字编程将请求的数据发送到客户端。
一切正常但是当上传并在服务器上工作时,我会从未知的ip获得连接。此应用程序将在许多国家/地区使用,因此不会将特定的IP用于白名单。
有没有办法禁止/拒绝这些ip,以便服务器只能使用套接字接受来自我的应用程序的连接。是否可以在请求与服务器的连接时发送自定义数据,以便它告诉服务器只接受这些连接。
答案 0 :(得分:2)
您描述的选择性接受属于authentication and authorization的范围。您需要将客户端连接到:
我建议你看一下像Apache Shiro这样的图书馆,它会为你做一些繁重的工作。
答案 1 :(得分:1)
接受入站连接后,您可以在返回的Socket上使用Socket.getInetAddress()
来检索并随后验证IP。
如果不允许使用IP,请使用Socket.close()
关闭不需要的连接。
修改强>
验证当然可以基于IP之外的事情。连接打开后,您可以使用其流来传输任意数据以识别客户端,例如在身份验证失败后关闭连接。
但是,您应该考虑是否有人能够拦截您的通信。换句话说,使用安全连接是有道理的。
我不知道在打开(接受)连接之前可以用Java验证客户端的方式。
答案 2 :(得分:0)