socket程式設計的一個簡單的hello world程式
阿新 • • 發佈:2019-01-27
一些理論的東西,我在這裡一概不提,我們先看例子程式,關於理論的部分,我會在後續的部落格中會進行詳細的說明。
首先我們來看一個socket的一個簡單的hello world程式,
我們首先來完成第一個需求:
(1) 讓客戶端和伺服器端建立起連線
那麼我們必須要有一個客戶端程式(TCPClient),一個伺服器端程式(TCPServer),我們的專案結構如下:
程式碼思想: 編寫socket程式和其他程式不一樣,關於我們socket程式,服務端和客戶端程式碼需要同時編寫,但是執行的時候,必須先要執行伺服器端程式碼,然後再執行客戶端程式碼,這是因為客戶端是請求的發起者,伺服器端是請求的接受者,只有接受者是活躍的狀態,請求發起才具有實際的意義。
package com.niepengfei.server;
import java.net.ServerSocket;
public class TCPServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(6666);
Socket s = ss.accept();
System.out.println("A client connect.");
}
}
package com.niepengfei.client; import java.net.Socket; public class TCPClent { public static void main(String[] args) throws Exception { Socket s = new Socket("127.0.0.1", 6666); } }
以上程式碼的含義如下:
我們首先執行TCPServer:
再執行TCPClient,(請注意控制檯)
(2) 現在客戶端和伺服器端已經建立起連線了,那麼現在我們讓客戶端向伺服器端傳入一段字串。
package com.niepengfei.client; import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket; public class TCPClent { public static void main(String[] args) throws Exception { Socket s = new Socket("127.0.0.1", 6666); OutputStream out = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(out); dos.writeUTF("hello server."); dos.flush(); dos.close(); s.close(); } }
package com.niepengfei.server;
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(6666);
while(true){
Socket s = ss.accept();
System.out.println("A client connect.");
InputStream input = s.getInputStream();
DataInputStream dai = new DataInputStream(input);
System.out.println(dai.readUTF());
}
}
}
執行伺服器端:
執行客戶端(注意控制檯):