【问题标题】:What is socket bind and how to bind an address?什么是套接字绑定以及如何绑定地址?
【发布时间】:2011-05-22 21:26:07
【问题描述】:
在Java中,我需要知道什么是绑定操作:
ServerSocket.bind()
来自 Javadoc:
将 ServerSocket 绑定到特定地址(IP 地址和端口)
号)。
我知道什么是绑定和 EJB(来自示例)到一个名称。是不是很像?
如何将本地地址绑定到服务器套接字?
我正在使用:
providerSocket.bind(new InetSocketAddress("192.168.0.1", 0));
我得到了Already Bound 错误!
【问题讨论】:
标签:
java
sockets
networking
【解决方案1】:
连接需要客户端和服务器。
为了让客户端向服务器发送数据,客户端必须拥有服务器的地址和端口号。同样,服务器要向客户端发送数据,服务器必须有客户端的地址和端口号。
绑定套接字意味着为套接字分配地址和端口号。
当你这样做时:
providerSocket.bind(new InetSocketAddress("192.168.0.1", 0));
您收到Already Bound 错误,因为providerSocket 已经有地址和端口号,并且不允许分配新的地址/端口号。一旦创建了 ServerSocket,它就会被绑定(除非它使用无参数构造函数 java.net.ServerSocket.ServerSocket())。
【解决方案2】:
你必须把ServerSocket()留空而不是ServerSocket(666,9)你不应该做第二个例子,否则它不会工作。在 ServerSocket 的括号内你什么也不输入。