Socket——基於TCP通訊的實現

TCP協議是面向鏈接、可靠的、有序的,以字節流的方式發送數據。java

基於TCP實現網絡通訊的類:緩存

  1. 客戶端Socket類服務器

  2. 服務器端的ServerSocket類網絡


  3. 通訊實現步驟:socket

    (1).建立ServerSocket和Socket.net

    (2).打開鏈接到Socket的輸入、輸出流code

    (3).按照協議對Socket進行讀寫操做server

    (4).關閉輸入輸出流,關閉Socket資源

  4. 服務端實現方式:get



  5. 客戶端:

package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
 *socket服務端 
 *
 */
public class TCPServer {

	public static void main(String[] args) {
		try {
			// 建立一個服務端socket實例,並綁定指定端口,同時監聽該端口
			ServerSocket serversocket = new ServerSocket(7777);
			//調用accept()啓動端口監聽,等待客戶端請求
			System.out.println("服務端已啓動,正在監聽......");
			Socket socket = serversocket.accept();//監聽7777端口
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			
			String info = br.readLine();
			while(!"".equals(info) && info != null){
				System.out.println("服務端捕獲到客戶端信息:######"+info);
				info = br.readLine();
			}
			//關閉相關資源
			socket.shutdownInput();
			br.close();
			isr.close();
			is.close();
			socket.close();
			serversocket.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 

	}

}
package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;


public class TCPClient {

	public static void main(String[] args) {
		
		try {
			//建立客戶端socket,指定服務端地址和端口
			Socket socket = new Socket("localhost", 7777);
			//創建一個輸出流,用於向服務端發送信息
			OutputStream os = socket.getOutputStream();
			//建立一個打印流幷包裝輸出流
			PrintWriter pw = new PrintWriter(os);
			pw.write("用戶名:admin   密碼:1234");
			pw.flush();//刷新緩存
			//關閉資源
			socket.shutdownOutput();
			pw.close();
			os.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

輸出結果:

服務端已啓動,正在監聽......

服務端捕獲到客戶端信息:######用戶名:admin   密碼:1234

相關文章
相關標籤/搜索