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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】Socket网络编程解读与实战

發布時間:2025/3/15 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】Socket网络编程解读与实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Socket原理

Socket原理

《Socket 到底是什么》

  • Socket——套接字
  • 是網絡應用程序編程的接口和一種機制
  • 用套接字中的相關函數來建立連接和完成通信
  • Socket可以看成在兩個程序進行通訊連接中的一個端點
  • 將區分不同應用程序進程的三個參數:通信的目的的IP地址、使用的傳輸層協議、使用的端口號 與一個socket綁定

端口工作原理

服務器上的端口不是監聽端口。

基于TCP的Socket編程

基于TCP的Socket編程

  • 利用TCP協議進行通信
    存在兩個應用程序,有主從之分。一個稱為服務器程(Server), 另外一個稱為客戶機程(Client)
  • 交互過程
  • 服務器程序創建一個 ServerSocket,然后調用 accept方法等待客戶來連接
  • 客戶端程序創建一個socket 并請求與服務器建立連接
  • 剛才建立了連接的兩個 socket在一個單獨的線程上 對話
  • 服務器開始等待新的連接請 求
  • ServerSocket —— java.net.ServerSocket

    • 實現服務器套接字
    • 構造函數
      • ServerSocket(int port)
      • ServerSocket(int port, int maxqu)
    • accept( ) 方法用于等待客戶端觸發通信,返回值類型為 Socket

    Socket —— java.net.Socket

    • 實現客戶端套接字
    • 構造函數
      • Socket(String hostName, int port)
      • Socket(InetAddress a, int port)
    • 可用方法
      • InetAddress getInetAddress( )
      • int getPort( )
      • int getLocalPort( )
      • InputStream getInputStream()
      • OutputStream getOutputStream()
      • void close()

    基于多線程的Socket編程

    import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;public class TServer {public static void main(String[] args) {ServerSocket ss = null;try {ss = new ServerSocket(8888);System.out.println("服務器啟動");while(true) {Socket s = ss.accept();System.out.println("連接的客戶端IP "+s.getInetAddress().getHostAddress());Servicer ser = new Servicer(s);Thread t = new Thread(ser);t.start();}} catch (IOException e) {e.printStackTrace();}} } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner;public class TClient {public static void main(String[] args) {Socket s = null;try {s = new Socket("127.0.0.1", 8888);BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()), true);while (true) {Scanner sc = new Scanner(System.in);System.out.println("客戶端:");String str = sc.nextLine();//將控制臺輸入的信息,發送給服務器out.println(str);if (str.equals("exit")) {break;}//接收服務器端傳來的信息String msg = in.readLine();System.out.println("接收服務器數據:" + msg);}System.out.println("客戶端退出");} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (s != null) {s.close();}} catch (IOException e) {e.printStackTrace();}}} }

    經典案例——Socket網絡聊天室

    發過三個版本的,分享一下!

    • 簡單版
    • 升級版
    • GUI+命令行結合版

    總結

    以上是生活随笔為你收集整理的【Java】Socket网络编程解读与实战的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。