赞
踩
Sockets
Sockets:两个计算机应用程序之间逻辑链接的一个端点,是应用程序用来通过网络发送和接收数据的逻辑接口
IP地址和端口号
的组合Java为客户端编程提供了java.net.Socket类
服务器端TCP/IP编程使用java.net.ServerSocket类
。Java为UDP操作提供了java.net.DatagramSocket
为了从客户端建立到服务器的连接,调用Socket构造函数,它实例化一个Socket对象
构造函数将远程主机地址和端口号作为输入参数。之后,它尝试根据给定的参数建立到远程主机的连接,该操作将阻塞所有其他进程,直到成功建立连接
然而,如果连接在一段时间后没有成功,程序会抛出一个ConnectionException
,并带有" connection timed out "消息
:java.net.ConnectException: Connection timed out: connect
在服务器端,ServerSocket类持续侦听传入的连接请求。当ServerSocket接收到连接请求时,它调用accept()方法来实例化一个新的Socket对象。类似地,此方法也会阻塞,直到与远程客户机成功建立连接。
没有服务正在侦听远程主机上的给定端口
远程主机不接受任何连接
远程主机不可用
网速慢
没有到远端主机的转发路径
有时,防火墙出于安全原因会阻塞某些端口。因此,当客户端试图建立到服务器的连接时,可能会出现“连接超时”错误。因此,在将端口绑定到服务之前,我们应该检查防火墙设置,看看它是否阻塞了端口。
对于TCP客户端和服务器端,我们可以使用setSoTimeout(int timeout)方法指定socketInputStream.read()方法阻塞的时间量:
Socket socket = new Socket(host, port);
socket.setSoTimeout(30000);
但是,如果在方法返回之前超时,程序将抛出SocketTimeoutException。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。