【Java】Socket网络编程解读与实战
生活随笔
收集整理的這篇文章主要介紹了
【Java】Socket网络编程解读与实战
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Socket原理
Socket原理
《Socket 到底是什么》
- Socket——套接字
- 是網絡應用程序編程的接口和一種機制
- 用套接字中的相關函數來建立連接和完成通信
- Socket可以看成在兩個程序進行通訊連接中的一個端點
- 將區分不同應用程序進程的三個參數:通信的目的的IP地址、使用的傳輸層協議、使用的端口號 與一個socket綁定
端口工作原理
服務器上的端口不是監聽端口。
基于TCP的Socket編程
基于TCP的Socket編程
- 利用TCP協議進行通信
存在兩個應用程序,有主從之分。一個稱為服務器程(Server), 另外一個稱為客戶機程(Client) - 交互過程
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网络编程解读与实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】整数存储单元的设计与模拟
- 下一篇: 【VBS】网页脚本的放置位置与载入时机