PC與PC之間的交流(B/S)
首先是Client端:
* TCP通信的客戶端:向服務器發送連接請求給服務器發送數據,讀取服務器回寫的數據表示客戶端的類 * java.net.Socket:此類實現客戶端套接字(也可以就叫"套接字")。套接字是兩臺機器間通信的端點。 * 套接字:包含了IP地址和端口號的網絡單位 * * 構造方法 * Socket:string host,int port)創建一個流套接字並將其連接到指定主機上的指定端囗號 * 參數: * String host.:服務器主機名稱/IP地址 * int port :服務器端口號 * * 成員方法 * Outputstream getoutputstream()返回此套接字的輸出流。 * Inputstream getInputstream()返回此套接字的輸入流 * void close()關閉此套接字。 * * 實現步驟: * 1.創建一個客戶端對象Socket,構造方法綁定服務器的IP地址和端口號 * 2.使用Socket對象中的方法getOutputStream()獲取網絡字節輸出流對象 * 3.使用網絡字節輸出流getOutputStream()對象中的方法write,給服務器發送數據 * 4.使用Socket對象中的方法getInputStream()獲取網絡字節輸入流對象 * 5.使用網絡字節輸入流對對象中的方法read,讀取服務器回寫的數據 * 6.釋放資源(Socket)
客戶端的代碼實現:
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
OutputStream os = socket.getOutputStream();
os.write("你好服務器".getBytes());
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes,0,len));
socket.close();
}
}
然後是Server端:
* TCP通信的服務器端:接收客戶端的請求,讀取客戶端發送的數據給客戶端回寫數據表示服務器的類:java.net.ServerSocket:此類實現服務器套接字。 * 構造方法 * Serversocket(int port)創建綁定到特定端口的服務器套接字 * 服務器端必須明確一件事情,必須的知道是哪個客戶端請求 * 的服務器 * 所以可以使用 accept方法獲取到請求的客戶端對象 * Socket成員方法 * Socket accept()偵聽並接受到此套接字的連接 * * 實現步驟: * 1.創建ServerSocket對象和系統要指定的端口號 * 2.使用ServerSocket對象中的accept方法,獲取到請求客戶端對象socket * 3.使用socket對象中的方法getOutputStream()獲取網絡字節輸入流對象 * 4.使用網絡字節輸入流getInputStream對象中的方法read,讀取客戶端發送的數據 * 5.使用socket對象中的方法getInputStream()獲取網絡字節輸出流對象 * 6.使用網絡字節輸出流getOutputStream對象中的方法write,給客戶端回寫消息 * 7.釋放資源(Socket,SocketServer)
服務器端的代碼實現:
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println("服務器收到的消息:"+new String(bytes,0,len));
OutputStream os = socket.getOutputStream();
os.write("服務器回覆的消息:收到謝謝".getBytes());
socket.close();
server.close();
}
}
運行結果:
Client:服務器回覆的消息:收到謝謝
Server:服務器收到的消息:你好服務器
服務端的端口號必須自己向系統指定特定端口號,以便客戶端能正確訪問到