(1)简单的TCP服务程序。

(2)TCP服务器程序模型的编写要点

(3)TCP网络程序的工作原理

ServerSocket
public ServerSocket()
throws IOException
-
创建非绑定服务器套接字。
-
抛出:
-
IOException- 如果打开套接字时发生 IO 错误。
-
ServerSocket
public ServerSocket(intport)
throws IOException
-
创建绑定到特定端口的服务器套接字。端口
0在所有空闲端口上创建套接字。传入连接指示(对连接的请求)的最大队列长度被设置为
50。如果队列满时收到连接指示,则拒绝该连接。如果应用程序已指定服务器套接字工厂,则调用该工厂的
createSocketImpl方法来创建实际套接字实现。否则创建“普通”套接字。如果存在安全管理器,则首先使用
port参数作为参数调用其checkListen方法,以确保允许该操作。这可能会导致 SecurityException 异常。-
参数:
-
port- 端口号;或者为0,表示使用任何空闲端口。
抛出:
-
IOException- 如果打开套接字时发生 I/O 错误。 -
SecurityException- 如果安全管理器存在并且其checkListen方法不允许进行该操作。
另请参见:
-
SocketImpl,SocketImplFactory.createSocketImpl(),setSocketFactory(java.net.SocketImplFactory),SecurityManager.checkListen(int)
-
ServerSocket
public ServerSocket(intport,
intbacklog)
throws IOException
-
利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。端口号
0在所有空闲端口上创建套接字。传入连接指示(对连接的请求)的最大队列长度被设置为
backlog参数。如果队列满时收到连接指示,则拒绝该连接。如果应用程序已指定服务器套接字工厂,则调用该工厂的
createSocketImpl方法来创建实际套接字实现。否则创建“普通”套接字。如果存在安全管理器,则首先使用
port参数作为参数调用其checkListen方法,以确保允许该操作。这可能会导致 SecurityException 异常。backlog参数必须是大于 0 的正值。如果传递的值等于或小于 0,则使用默认值。-
参数:
-
port- 指定的端口;或者为0,表示使用任何空闲端口。 -
backlog- 队列的最大长度。
抛出:
-
IOException- 如果打开套接字时发生 I/O 错误。 -
SecurityException- 如果安全管理器存在并且其checkListen方法不允许进行该操作。
另请参见:
-
SocketImpl,SocketImplFactory.createSocketImpl(),setSocketFactory(java.net.SocketImplFactory),SecurityManager.checkListen(int)
-
ServerSocket
public ServerSocket(intport,
intbacklog,
InetAddressbindAddr)
throws IOException
-
使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
bindAddr 参数可以在 ServerSocket 的多宿主主机 (multi-homed host) 上使用,ServerSocket 仅接受对其地址之一的连接请求。如果
bindAddr 为 null,则默认接受任何/所有本地地址上的连接。端口必须在 0 到 65535 之间(包括两者)。
如果存在安全管理器,则此方法使用
port作为参数调用其checkListen方法,以确保允许该操作。这可能会导致 SecurityException 异常。backlog参数必须是大于 0 的正值。如果传递的值等于或小于 0,则使用默认值。-
参数:
-
port- 本地 TCP 端口 -
backlog- 侦听 backlog -
bindAddr- 要将服务器绑定到的 InetAddress
抛出:
-
SecurityException- 如果安全管理器存在并且其checkListen方法不允许进行该操作。 -
IOException- 如果打开套接字时发生 I/O 错误。
从以下版本开始:
- JDK1.1 另请参见:
-
SocketOptions,SocketImpl,SecurityManager.checkListen(int)
-
方法:
accept
public Socket accept()
throws IOException侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
创建新套接字 s,如果存在安全管理器,则使用 s.getInetAddress().getHostAddress() 和 s.getPort() 作为参数调用安全管理器的 checkAccept 方法,以确保允许该操作。这可能会导致 SecurityException 异常。
返回:
新套接字
抛出:
IOException - 如果等待连接时发生 I/O 错误。
SecurityException - 如果安全管理器存在并且其 checkAccept 方法不允许进行该操作。
SocketTimeoutException - 如果以前使用 setSoTimeout 设置了超时并且已到达超时值。
IllegalBlockingModeException - 如果此套接字具有关联的通道、通道处于非阻塞模式并且不存在准备接受的连接
另请参见:
SecurityManager.checkAccept(java.lang.String, int)
本文深入探讨了TCP服务器程序的实现,包括如何创建服务器套接字、处理客户端连接、读写数据及关闭连接。重点介绍了TCP网络程序的工作原理,通过实例代码演示了基本操作流程。
1万+

被折叠的 条评论
为什么被折叠?



