ServerSocket 类用于提供客户端/服务器套接字连接的服务器端的系统独立实现。如果 ServerSocket 的构造函数无法侦听指定端口(例如,该端口已被使用),则会引发异常。
它的应用非常广泛,所以java.net.ServerSocket类的应用如下:
- 在java.nio通道中,ServerSocket类用于检索与该通道关联的serverSocket。
- 在java.rmi.Server中,ServerSocket类用于在指定端口(端口0表示匿名端口)上创建服务器套接字。
- 在javax.net中,服务器套接字被广泛使用,以便:
- 返回未绑定的服务器套接字。
- 返回绑定到指定端口的服务器套接字。
- 返回绑定到指定端口的服务器套接字,并使用指定的连接积压。
- 返回绑定到指定端口的服务器套接字,具有指定的侦听积压和本地 IP。
让我们来看看这个类的方法如下:
方法 | 说明 |
---|---|
accept() | 侦听与此套接字建立的连接并接受它。 |
bind(SocketAddress endpoint) | 将 ServerSocket 绑定到特定地址(IP 地址和端口号)。 |
绑定(SocketAddress端点,int积压) | 将 ServerSocket 绑定到特定地址(IP 地址和端口号)并请求队列长度。如果请求在队列已满时到达,则该请求将被服务器拒绝。 |
close() | 关闭此套接字 |
getChannel() | 返回与此套接字关联的唯一ServerSocketChannel 对象(如果有)。 |
getInetAddress() | 返回此服务器套接字的本地地址。 |
getLocalPort() | 返回此套接字正在侦听的端口号。 |
getLocalSocketAddress() | 返回此套接字绑定到的端点的地址,如果尚未绑定,则返回 null。 |
getReceiveBufferSize() | 获取此 ServerSocket 的 SO_RCVBUF 选项的值,即用于从此 ServerSocket 接受的套接字的建议缓冲区大小。 |
getReuseAddress() | 测试是否启用SO_REUSEADDR。 |
getSoTimeout() | 检索SO_TIMEOUT的设置。 |
implAccept(Socket s) | ServerSocket 的子类使用此方法覆盖 accept() 以返回它们自己的子类 插座。 |
isBound() | 返回 ServerSocket 的绑定状态。 |
isClosed() | 返回 ServerSocket 的关闭状态。 |
setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 为此ServerSocket 设置性能首选项 |
为此ServerSocket 设置性能首选项 | 为从此 ServerSocket 接受的套接字设置 SO_RCVBUF 选项的默认建议值。 |
setReuseAddress(boolean on) | 启用/禁用 SO_REUSEADDR 套接字选项。 |
setSocketFactory(SocketImplFactory fac) | 设置应用程序的服务器套接字实现工厂。 |
setSoTimeout(int timeout) | 使用指定的超时(以毫秒为单位)启用/禁用SO_TIMEOUT。 |
toString() | 以字符串形式返回此套接字的实现地址和实现端口。 |
implementation:
示例 1服务器端
Java
// Java Program to implement ServerSocket class
// Server Side
// Importing required libraries
import java.io.*;
import java.net.*;
// Main class
public class MyServer {
// Main driver method
public static void main(String[] args)
{
// Try block to check for exceptions
try {
// Creating an object of ServerSocket class
// in the main() method for socket connection
ServerSocket ss = new ServerSocket(6666);
// Establishing a connection
Socket soc = ss.accept();
// Invoking input stream via getInputStream()
// method by creating DataInputStream class
// object
DataInputStream dis
= new DataInputStream(soc.getInputStream());
String str = (String)dis.readUTF();
// Display the string on the console
System.out.println("message= " + str);
// Lastly close the socket using standard close
// method to release memory resources
ss.close();
}
// Catch block to handle the exceptions
catch (Exception e) {
// Display the exception on the console
System.out.println(e);
}
}
}
输出:
示例 2客户端
Java
// Java Program to implement ServerSocket class
// Client - side
// Importing required libraries
import java.io.*;
import java.net.*;
// Main class
public class MyClient {
// Main driver method
public static void main(String[] args)
{
// Try block to check if exception occurs
try {
// Creating Socket class object and
// initializing Socket
Socket soc = new Socket("localhost", 6666);
DataOutputStream d = new DataOutputStream(
soc.getOutputStream());
// Message to be displayed
d.writeUTF("Hello GFG Readers!");
// Flushing out internal buffers,
// optimizing for better performance
d.flush();
// Closing the connections
// Closing DataOutputStream
d.close();
// Closing socket
soc.close();
}
// Catch block to handle exceptions
catch (Exception e) {
// Print the exception on the console
System.out.println(e);
}
}
}
输出:
相关用法
- Java java.net.SecureCacheResponse用法及代码示例
- Java java.net.SocketException用法及代码示例
- Java java.net.SocketOption用法及代码示例
- Java java.net.SocketImplFactory用法及代码示例
- Java java.net.Socket用法及代码示例
- Java java.net.Proxy用法及代码示例
- Java java.net.ProxySelector用法及代码示例
- Java java.net.ProtocolFamily用法及代码示例
- Java java.net.CookiePolicy用法及代码示例
- Java java.net.CacheResponse用法及代码示例
- Java java.net.ResponseCache用法及代码示例
- Java java.net.URLPermission用法及代码示例
- Java java.net.NetPermission用法及代码示例
- Java java.net.CacheRequest用法及代码示例
- Java java.net.FileNameMap用法及代码示例
- Java java.net.CookieStore用法及代码示例
- Java java.net.PasswordAuthentication用法及代码示例
- Java java.net.CookieHandler用法及代码示例
- Java java.net.CookieManager用法及代码示例
- Java java.net.BindException用法及代码示例
- Java java.net.URLConnection用法及代码示例
- Java java.net.InetAddress用法及代码示例
- Java java.nio.ByteBuffer用法及代码示例
- Java java.nio.IntBuffer用法及代码示例
- Java java.nio.file.FileStore用法及代码示例
注:本文由纯净天空筛选整理自ravi.geek24大神的英文原创作品 java.net.ServerSocket Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。