日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java Socket编程总结

發(fā)布時間:2023/12/3 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Socket编程总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、網(wǎng)絡(luò)API

InetAddress   ?  用于標(biāo)識網(wǎng)絡(luò)上的硬件資源,主要是IP地址

URL      ?  ?統(tǒng)一資源定位符,通過URL可以直接讀取或?qū)懭刖W(wǎng)絡(luò)上的數(shù)據(jù) Sockets      使用TCP協(xié)議實現(xiàn)的網(wǎng)絡(luò)通信Socket相關(guān)的類 Datagram     使用UDP協(xié)議,將數(shù)據(jù)保存在用戶數(shù)據(jù)報中,通過網(wǎng)絡(luò)進行通信。

?

二、地址

A、InetAddress ? ? ? ? ? ip地址

(1)靜態(tài)方法

  • getLocalHost() ??InetAddress?
  • getByName(String host) ? ? ??InetAddress
  • getAllByName(String host) ??InetAddress[]
  • getByAddress(byte[] addr) ??InetAddress
  • getByAddress(String host, byte[] addr) ? ?InetAddress?

(2)成員方法

  • getAddress() ? ?byte[]?
  • getCanonicalHostName() ?String
  • getHostAddress() ??String
  • getHostName() ?String?
  • isAnyLocalAddress() ?boolean
  • isMulticastAddress() ??boolean?
  • isReachable(int timeout) ??boolean?

?

B、InetSocketAddress ? ? ? ? socket地址

(1)構(gòu)造方法

  • InetSocketAddress(InetAddress addr, int port) ? ??根據(jù) IP 地址和端口號創(chuàng)建套接字地址。
  • InetSocketAddress(int port) ? ? ?        創(chuàng)建套接字地址,其中 IP 地址為通配符地址,端口號為指定值。
  • InetSocketAddress(String hostname, int port) ? ? ?根據(jù)主機名和端口號創(chuàng)建套接字地址。

(2)成員方法

  • getAddress() ?InetAddress ? ? ??獲取 InetAddress。
  • getHostName() ??String ? ? ? ? ? ?獲取 hostname。
  • getPort() ?int ? ? ? ? ? ? ? ? ? ? ? ? ? ?獲取端口號。

(4)靜態(tài)方法

  • createUnresolved(String host, int port) ? InetSocketAddress? ? ? ?根據(jù)主機名和端口號創(chuàng)建未解析的套接字地址。

?

三、Socket

(1)構(gòu)造方法

  • Socket()                  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?通過系統(tǒng)默認(rèn)類型的 SocketImpl 創(chuàng)建未連接套接字
  • Socket(InetAddress address, int port)    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建一個流套接字并將其連接到指定 IP 地址的指定端口號。
  • Socket(InetAddress address, int port, InetAddress localAddr, int localPort) ? ? ? ?創(chuàng)建一個套接字并將其連接到指定遠程地址上的指定遠程端口。
  • Socket(Proxy proxy) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建一個未連接的套接字并指定代理類型(如果有),該代理不管其他設(shè)置如何都應(yīng)被使用。
  • Socket(String host, int port) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建一個流套接字并將其連接到指定主機上的指定端口號。
  • Socket(String host, int port, InetAddress localAddr, int localPort) ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建一個套接字并將其連接到指定遠程主機上的指定遠程端口。

(2)成員方法

1)關(guān)聯(lián)地址

  • bind(SocketAddress bindpoint) ?void? ? ? ? ? ?將套接字綁定到本地地址。
  • connect(SocketAddress endpoint) ? void?? ? ? ?將此套接字連接到服務(wù)器。
  • connect(SocketAddress endpoint, int timeout) ? ?void? ? ? ? ?將此套接字連接到服務(wù)器,并指定一個超時值。
  • isBound() ?boolean ? ? ? ? ? 返回套接字的綁定狀態(tài)。?
  • isConnected() ?boolean ? ?返回套接字的連接狀態(tài)。

2)獲取IP地址

  • getInetAddress() ? InetAddress?? ??    ?返回套接字連接的地址。?
  • getLocalAddress() ? InetAddress?? ?    獲取套接字綁定的本地地址。
  • getPort() ? ? ? ? ? ?int????返回此套接字連接到的遠程端口。
  • getLocalPort() ? ? ?int?返回此套接字綁定到的本地端口。
  • getLocalSocketAddress() ?SocketAddress?返回此套接字綁定的端點的地址,如果尚未綁定則返回 null。?
  • getRemoteSocketAddress() ? SocketAddress?返回此套接字連接的端點的地址,如果未連接則返回 null。

3)獲取數(shù)據(jù)

  • getInputStream() ? InputStream?? ? ? ? ? 返回此套接字的輸入流。?
  • getOutputStream() ??OutputStream ? ??返回此套接字的輸出流。
  • getChannel() ? SocketChannel ? ? ? ? ? ?返回與此數(shù)據(jù)報套接字關(guān)聯(lián)的唯一 SocketChannel 對象(如果有)。

4)設(shè)置緩沖區(qū)

  • setReceiveBufferSize(int size)?void ? ? ? ? ? ?將此 Socket 的 SO_RCVBUF 選項設(shè)置為指定的值。?
  • setSendBufferSize(int size)?void ? ? ? ??將此 Socket 的 SO_SNDBUF 選項設(shè)置為指定的值。

5)重用端口

  • setReuseAddress(boolean on)?void?? ? ?啟用/禁用 SO_REUSEADDR 套接字選項。?
  • getReuseAddress() ??boolean?? ? ? ? ? ? ??測試是否啟用 SO_REUSEADDR。

6)關(guān)閉

  • close() ?void ? ? ? ? ? ? ? ? ? ?關(guān)閉此套接字。
  • isClosed() ?boolean? ? ? ?返回套接字的關(guān)閉狀態(tài)。

?

四、ServerSocket

(1)構(gòu)造方法

  • ServerSocket() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??創(chuàng)建非綁定服務(wù)器套接字。
  • ServerSocket(int port) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建綁定到特定端口的服務(wù)器套接字。
  • ServerSocket(int port, int backlog) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 利用指定的 backlog 創(chuàng)建服務(wù)器套接字并將其綁定到指定的本地端口號。
  • ServerSocket(int port, int backlog, InetAddress bindAddr) ? ??使用指定的端口、偵聽 backlog (最大的等待隊列)和要綁定到的本地 IP 地址創(chuàng)建服務(wù)器。

(2)綁定地址

  • bind(SocketAddress endpoint) ? void??       ? ?將 ServerSocket 綁定到特定地址(IP 地址和端口號)。
  • bind(SocketAddress endpoint, int backlog) ?void ?  將 ServerSocket 綁定到特定地址(IP 地址和端口號)。
  • isBound() ?boolean ? ? ? ??   ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回套接字的綁定狀態(tài)。?

?(3)獲取地址

  • getInetAddress() ? InetAddress ? ? ??    ?返回此服務(wù)器套接字的本地地址。
  • getLocalPort() ??int       ? ??    ?返回此套接字在其上偵聽的端口。
  • getLocalSocketAddress() ?SocketAddress ? ??返回此套接字綁定的端點的地址,如果尚未綁定則返回 null。

(4)設(shè)置緩沖區(qū)

  • setReceiveBufferSize(int size)?void ? ? ? ? ? ?將此 Socket 的 SO_RCVBUF 選項設(shè)置為指定的值。?
  • setSendBufferSize(int size)?void ? ? ? ??將此 Socket 的 SO_SNDBUF 選項設(shè)置為指定的值。

(5)重用端口

  • setReuseAddress(boolean on)?void?? ? ?啟用/禁用 SO_REUSEADDR 套接字選項。?
  • getReuseAddress() ??boolean?? ? ? ? ? ? ??測試是否啟用 SO_REUSEADDR。

(6)接受連接

  • accept() ? Socket?? ??偵聽并接受到此套接字的連接。

(7)關(guān)閉

  • close() ?void ? ? ? ? ? ? ? ? ? ?關(guān)閉此套接字。
  • isClosed() ?boolean? ? ? ?返回套接字的關(guān)閉狀態(tài)。

?

五、DatagramSocket

(1)構(gòu)造方法

  • DatagramSocket()              ? ??構(gòu)造數(shù)據(jù)報套接字并將其綁定到本地主機上任何可用的端口。
  • DatagramSocket(int port)            創(chuàng)建數(shù)據(jù)報套接字并將其綁定到本地主機上的指定端口。
  • DatagramSocket(int port, InetAddress laddr)  創(chuàng)建數(shù)據(jù)報套接字,將其綁定到指定的本地地址。
  • DatagramSocket(SocketAddress bindaddr)    創(chuàng)建數(shù)據(jù)報套接字,將其綁定到指定的本地套接字地址。

(2)綁定地址

  • bind(SocketAddress addr)  void?      ? ? ?將此 DatagramSocket 綁定到特定的地址和端口。
  • connect(InetAddress address, int port) void?  將套接字連接到此套接字的遠程地址。
  • connect(SocketAddress addr)  void?     將此套接字連接到遠程套接字地址(IP 地址 + 端口號)。
  • disconnect()  void?             斷開套接字的連接。
  • isBound() ?boolean ? ? ? ? ?           返回套接字的綁定狀態(tài)。?
  • isConnected() ?boolean ?           ?返回套接字的連接狀態(tài)。

(3)獲取IP地址

  • getInetAddress() ? InetAddress?? ??    ?返回套接字連接的地址。?
  • getLocalAddress() ? InetAddress?? ?    獲取套接字綁定的本地地址。
  • getPort() ? ? ? ? ? ?int????   ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回此套接字連接到的遠程端口。
  • getLocalPort() ? ? ?int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回此套接字綁定到的本地端口。
  • getLocalSocketAddress() ?SocketAddress ? ? ? ? ?返回此套接字綁定的端點的地址,如果尚未綁定則返回 null。?
  • getRemoteSocketAddress() ? SocketAddress ? ? 返回此套接字連接的端點的地址,如果未連接則返回 null。

(4)設(shè)置緩沖區(qū)

  • setReceiveBufferSize(int size)?void ? ? ? ? ? ?將此 Socket 的 SO_RCVBUF 選項設(shè)置為指定的值。?
  • setSendBufferSize(int size)?void ? ? ? ??將此 Socket 的 SO_SNDBUF 選項設(shè)置為指定的值。

(5)重用端口

  • setReuseAddress(boolean on)?void?? ? ?啟用/禁用 SO_REUSEADDR 套接字選項。?
  • getReuseAddress() ??boolean?? ? ? ? ? ? ??測試是否啟用 SO_REUSEADDR。

(6)發(fā)送接收數(shù)據(jù)

  • receive(DatagramPacket p) ? void ? ? ??從此套接字接收數(shù)據(jù)報包。
  • send(DatagramPacket p) ? ?void?   從此套接字發(fā)送數(shù)據(jù)報包。?
  • getChannel() ?DatagramChannel ? ? ??返回與此數(shù)據(jù)報套接字關(guān)聯(lián)的唯一 DatagramChannel 對象(如果有)。

(7)關(guān)閉

  • close() ?void ? ? ? ? ? ? ? ? ? ?關(guān)閉此套接字。
  • isClosed() ?boolean? ? ? ?返回套接字的關(guān)閉狀態(tài)。

?

六、DatagramPacket

(1)構(gòu)造方法

  • DatagramPacket(byte[] buf, int length) ? ? 構(gòu)造 DatagramPacket,用來接收長度為 length 的數(shù)據(jù)包。
  • DatagramPacket(byte[] buf, int length, InetAddress address, int port) ? ? ? ? 構(gòu)造數(shù)據(jù)報包,用來將長度為 length 的包發(fā)送到指定主機上的指定端口號。
  • DatagramPacket(byte[] buf, int offset, int length) ? ? ? ? ?構(gòu)造 DatagramPacket,用來接收長度為 length 的包,在緩沖區(qū)中指定了偏移量。
  • DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) ? ? ? ? ? 構(gòu)造數(shù)據(jù)報包,用來將長度為 length 偏移量為 offset 的包發(fā)送到指定主機上的指定端口號。
  • DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) ? ? ? ?構(gòu)造數(shù)據(jù)報包,用來將長度為 length 偏移量為 offset 的包發(fā)送到指定主機上的指定端口號。
  • DatagramPacket(byte[] buf, int length, SocketAddress address) ? ? ? ? ? 構(gòu)造數(shù)據(jù)報包,用來將長度為 length 的包發(fā)送到指定主機上的指定端口號。

(2)地址

  • getAddress() InetAddress?      返回某臺機器的 IP 地址,此數(shù)據(jù)報將要發(fā)往該機器或者是從該機器接收到的。
  • getPort()  int?           ?返回某臺遠程主機的端口號,此數(shù)據(jù)報將要發(fā)往該主機或者是從該主機接收到的。
  • getSocketAddress() SocketAddress? ??獲取要將此包發(fā)送到的或發(fā)出此數(shù)據(jù)報的遠程主機的 SocketAddress(通常為 IP 地址 + 端口號)。
  • setAddress(InetAddress iaddr) void?  ?設(shè)置要將此數(shù)據(jù)報發(fā)往的那臺機器的 IP 地址。
  • setPort(int iport) ?void?        ??設(shè)置要將此數(shù)據(jù)報發(fā)往的遠程主機上的端口號。
  • setSocketAddress(SocketAddress address) ?void?  設(shè)置要將此數(shù)據(jù)報發(fā)往的遠程主機的 SocketAddress(通常為 IP 地址 + 端口號)。

(3)數(shù)據(jù)

  • getData()  byte[] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回數(shù)據(jù)緩沖區(qū)。
  • getLength()  int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回將要發(fā)送或接收到的數(shù)據(jù)的長度。
  • getOffset()  int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回將要發(fā)送或接收到的數(shù)據(jù)的偏移量。
  • setAddress(InetAddress iaddr) void ? ? ? ? ? ? ? ? ? ? ? ?設(shè)置要將此數(shù)據(jù)報發(fā)往的那臺機器的 IP 地址。
  • setData(byte[] buf)  void ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為此包設(shè)置數(shù)據(jù)緩沖區(qū)。
  • setData(byte[] buf, int offset, int length) ?void ? ? ? ? ?為此包設(shè)置數(shù)據(jù)緩沖區(qū)。
  • setLength(int length) ??void ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為此包設(shè)置長度。

?

七、URL

(1)構(gòu)造方法

  • URL(String spec)      根據(jù) String 表示形式創(chuàng)建 URL 對象。
  • URL(String protocol, String host, int port, String file)    根據(jù)指定 protocol、host、port 號和 file 創(chuàng)建 URL 對象。
  • URL(String protocol, String host, int port, String file, URLStreamHandler handler)      根據(jù)指定的 protocol、host、port 號、file 和 handler 創(chuàng)建 URL 對象。
  • URL(String protocol, String host, String file)     根據(jù)指定的 protocol 名稱、host 名稱和 file 名稱創(chuàng)建 URL。
  • URL(URL context, String spec)     通過在指定的上下文中對給定的 spec 進行解析創(chuàng)建 URL。
  • URL(URL context, String spec, URLStreamHandler handler)   ?通過在指定的上下文中用指定的處理程序?qū)o定的 spec 進行解析來創(chuàng)建 URL。

?

(2)URL信息

  • getDefaultPort()  int?   獲取與此 URL 關(guān)聯(lián)協(xié)議的默認(rèn)端口號。
  • getFile()  String?     ? 獲取此 URL 的文件名。
  • getHost() String?     ? 獲取此 URL 的主機名(如果適用)。
  • getPath()  String?     ?獲取此 URL 的路徑部分。
  • getPort()  int?       獲取此 URL 的端口號。
  • getProtocol() String?    獲取此 URL 的協(xié)議名稱。
  • getQuery() String?    獲取此 URL 的查詢部分。
  • getRef()  String?     獲取此 URL 的錨點(也稱為“引用”)。

(3)連接

  • openConnection()  URLConnection?   返回一個 URLConnection 對象,它表示到 URL 所引用的遠程對象的連接。
  • openConnection(Proxy proxy)  URLConnection?   ??與 openConnection() 類似,所不同是連接通過指定的代理建立;不支持代理方式的協(xié)議處理程序?qū)⒑雎栽摯韰?shù)并建立正常的連接。
  • openStream() ? InputStream?     打開到此 URL 的連接并返回一個用于從該連接讀入的 InputStream。

(4)文本內(nèi)容

  • getContent()  Object?       獲取此 URL 的內(nèi)容。?
  • getContent(Class[] classes) Object?? ? 獲取此 URL 的內(nèi)容。?

?

總結(jié)

以上是生活随笔為你收集整理的Java Socket编程总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。