Socket通信
一、socket通信概念
套接字(socket)是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。
應用層通過傳輸層進行數據通信時,TCP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個 TCP協議端口傳輸數據。爲了區別不同的應用程序進程和連接,許多計算機操作系統爲應用程序與TCP/IP協議交互提供了套接字(Socket)接口。應用層可以和傳輸層通過Socket接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的併發服務。
一句話,socket是對TCP/IP協議的封裝。
二、使用Socket步驟(client)
1、建立Socket(Tcp)連接
在Java中建立Socket連接是相當容易的事情,使用類庫提供的Socket類就可以實現。
Socket client = null ; // 表示客 戶端
client = new Socket("localhost",5000) ;
2、發送數據
PrintStream out = new PrintStream(socket.getOutputStream()) ; // 發送 數據,PrintStream 最方便
3、接收返回信息
buf=newBufferedReader(new InputStreamReader(socket.getInputStream())) ; ; // 一次性接收完成
讀取Socket的輸入流,在其中讀出返回信息
4、關閉Socket
Socket.close();
補充:Socket sever端(非多線程實現)
ServerSocket server = null ; // 定義ServerSocket類
Socket client = null ; // 表示客 戶端
PrintStream out = null ; // 打印流輸出最方便
server = new ServerSocket(8888) ; // 服務器在8888端口上監聽
System.out.println("服務器運行,等待客戶端連接。") ;
client = server.accept() ; // 得到連接,程序進入到阻塞狀態
String str = "hello world" ; // 表示要輸出的信息
out = new PrintStream(client.getOutputStream()) ;
out.println(str) ; // 向客戶端輸出信息
client.close() ;
server.close() ;