java.net.Socket 类允许我们创建套接字对象,帮助我们实现所有基本的套接字操作。我们可以执行各种网络操作,例如发送、读取数据和关闭连接。使用 java.net.Socket 类创建的每个 Socket 对象都与 1 个远程主机精确关联,为了连接到另一个不同的主机,我们必须创建一个新的套接字对象。
从 java.net 包导入 Socket 类的语法:
import java.net.Socket;
Socket类中使用的方法:
方法 | 说明 |
---|---|
bind(SocketAddress bindpoint) | 该方法用于将套接字绑定到本地地址。 |
Close() | 该方法用于终止套接字。 |
connect(SocketAddress endpoint) | 该方法用于将套接字连接到服务器。 |
getChannel() | 此方法返回与套接字关联的对象(如果有)。 |
getInetAddress() | 此方法返回套接字连接到的地址。 |
getInputStream() | 此方法返回套接字的输入流。 |
getKeepAlive() | 该方法用于检查SO_KEEPALIVE是否启用。 |
getLocalAddress() | 该方法用于获取套接字绑定的本地地址。 |
getLocalPort() | 此方法返回套接字绑定到的本地地址。 |
getLocalSocketAddress() | 此方法返回绑定套接字的端点。 |
getOOBInline() | 此方法检查SO_OOBINLINE是否已启用。 |
getOutputStream() | 此方法返回套接字的输出流。 |
getPort() | 此方法返回与套接字关联的远程端口号。 |
getReceiveBufferSize() | 该方法用于获取套接字的SO_RCVBUF选项的值,该值是平台在套接字上用作输入的缓冲区大小。 |
getRemoteSocketAddress() | 此方法返回套接字端点的地址,如果未连接,则返回 null。 |
getReuseAddress() | 此方法检查REUSE_ADDR是否已启用。 |
getSendBufferSize() | 该方法用于获取套接字的SO_SNDBUF选项的值,该值用作平台在套接字上输出的缓冲区大小。 |
getSoLinger() | 此方法返回SO_LINGER的设置 |
getSoTimeout() | 此方法返回 S0_TIMEOUT 的设置 |
getTcpNoDelay() | 该方法用于测试TCP_NODELAY是否启用。 |
getTrafficClass() | 此方法获取从此套接字发送的数据包的 IP 标头中的流量类别或type-of-service。 |
isBound() | 该方法返回套接字的绑定状态 |
isClosed() | 该方法返回套接字的关闭状态。 |
isConnected() | 该方法返回套接字的连接状态。 |
isInputShutdown() | 该方法返回socket连接的read-half是否关闭 |
isOutputShutdown() | 该方法返回套接字连接的write-half是否关闭。 |
sendUrgentData(int data) | 该方法在socket上发送一字节的紧急数据 |
setKeepAlive(boolean on) | 此方法启用/禁用SO_KEEPALIVE |
setOOBInline(boolean on) | 此方法启用/禁用 SO_OOBINLINE(TCP 紧急数据的接收) 默认情况下,此选项被禁用,并且在套接字上接收到的 TCP 紧急数据将被静默丢弃。 |
setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 此方法设置此套接字的性能首选项。 |
setReceiveBufferSize(int 大小) | 此方法将 SO_RCVBUF 选项设置为此套接字的指定值。 |
setReuseAddress(布尔值 | 此方法启用/禁用 SO_REUSEADDR 套接字选项 |
setSendBufferSize(int size) | 此方法将此 Socket 的 SO_SNDBUF 选项设置为指定值 |
setSocketImplFactory(SocketImplFactory fac | 此方法为应用程序设置客户端套接字实现工厂。 |
setSoLinger(boolean on, int linger) | 此方法以指定的停留时间(以秒为单位)启用/禁用SO_LINGER。 |
setSoTimeout(int timeout) | 此方法以指定的超时(以毫秒为单位)启用/禁用SO_TIMEOUT。 |
setTcpNoDelay(布尔值 | 此方法启用/禁用TCP_NODELAY(禁用/启用 Nagle 算法)。 |
setTrafficClass(int tc) | 此方法为从此套接字发送的数据包设置 IP 标头中的流量类别或 type-of-service 八位字节。 |
shutdownInput() | 此方法将此套接字的输入流放置在“end of stream”处。 |
toString() | 该方法将 Socket 转换为字符串。 |
Socket类的应用:
1. Socket类的实现是创建一个流套接字,并连接到指定的端口号和端口地址。
public Socket(InetAddress address, int port)
2. Socket类用于创建socket并连接javax.net中指定远程端口上的指定远程地址
SocketFactory.createSocket(InetAddress address, int port, InetAddress localAddress, int localPort)
3. 在 javax.ssl.net 中,Socket 类用于返回一个套接字,该套接字位于连接到给定端口上的指定主机的现有套接字之上。
SSLSocketFactory.createSocket(Socket s, String host, int port, boolean autoClose)
4. 在javax.rmi.ssl中,Socket类用于创建SSL套接字。
SslRMIClientSocketFactory.createSocket(String host, int port)
5. 在java.nio.channels中,Socket类用于检索与其通道关联的套接字
SocketChannel.socket()
Socket 类实现的 Java 示例:
1. 对于服务器端:
Java
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args)
{
try {
ServerSocket ss = new ServerSocket(6666);
// establishes connection
Socket soc = ss.accept();
// invoking input stream
DataInputStream dis = new DataInputStream(ss.getInputStream());
String str = (String)dis.readUTF();
System.out.println("message= " + str);
// closing socket
ss.close();
} // for catching Exception in run time
catch (Exception e) {
System.out.println(e);
}
}
}
客户端输出:
2. 对于客户端:
Java
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args)
{
try {
// initializing Socket
Socket soc = new Socket("localhost", 6666);
DataOutputStream d = new DataOutputStream(
soc.getOutputStream());
// message to display
d.writeUTF("Hello GFG Readers!");
d.flush();
// closing DataOutputStream
d.close();
// closing socket
soc.close();
}
// to initialize Exception in run time
catch (Exception e) {
System.out.println(e);
}
}
}
服务器上的输出:
相关用法
- Java java.net.SocketException用法及代码示例
- Java java.net.SocketOption用法及代码示例
- Java java.net.SocketImplFactory用法及代码示例
- Java java.net.SecureCacheResponse用法及代码示例
- Java java.net.ServerSocket用法及代码示例
- 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.Socket Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。