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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。