這是一個使用java ServerSocket服務端 和 Socket客戶端寫的一個客戶端發送消息,服務端接收消息的Demo
寫在前面,首先需知道服務端的ip地址和端口號,這裏我們就是拿本機ip地址既作爲服務端也作爲客戶端
,區別它們在於端口的不同
,服務端需要設置固定端口
,客戶端需要使用服務端的ip和服務器設置的固定端口
開發客戶端使用Socket
分爲四個步驟
- 1創建Socket連接,並指定服務器ip和服務器端口
- 2從建立的Socket哪裏獲取輸入輸出流
- 3處理輸入輸出流
- 4關閉連接
客戶端Socket代碼如下
public static void main(String[] args) throws Exception{
//Socket客戶端有四個步驟
//第一步創建socket,指定服務器ip和服務器端口
System.out.println("正在發起和服務器的連接");
//這裏的ip地址可以設置爲你自己的IP地址
//端口可以隨便設置,但一定要和下面服務端的端口一致,而且端口不能被佔用
Socket socket = new Socket("10.9.21.233",9999);
//第二步獲取輸入輸出流
//這裏只獲取了輸出流
OutputStream os = socket.getOutputStream();
//第三步處理輸入輸出流
//只發送消息給服務器,字符參數需轉爲byte字節參數發送
os.write("對服務器說:hello".getBytes());
//必須刷新
os.flush();
//第四步關閉資源
//發送完成就關閉
os.close();
socket.close();
System.out.println("退出");
}
開發服務端使用ServerSocket
分爲五
個步驟,比客戶端多一個步驟
- 1創建ServerSocket連接,並指定服務器端口,這個端口就是ServerSocket用來監聽的端口
- 2監聽該端口,獲取與客戶端Socket的連接
- 3從監聽到的Socket哪裏獲取輸入輸出流
- 3處理輸入輸出流
- 4關閉連接
客戶端ServerSocket代碼如下
public static void main(String[] args) throws Exception {
//ServerSocket服務器端有五個步驟
//創建ServerSocket連接,並指定服務器端口,這個端口就是ServerSocket用來監聽的端口
System.out.println("服務器啓動成功:");
ServerSocket listener = new ServerSocket(9999);
//第二步監聽該端口,獲取與客戶端Socket的連接
Socket clientSocket = listener.accept();
//第三步獲取輸入輸入流
InputStream is = clientSocket.getInputStream();
//第四步處理輸入輸出流
//這裏建立了一個字節數組,用做緩衝區來接收客戶端Socket發過來的字節信息
byte[] buf = new byte[1024];
//用於判斷是否讀取完畢和保存讀取的數據存到了buf緩衝的哪一個位置了,從0開始存
int len=-1;
//這裏使用循環讀取,發送過來的字節信息,不等於-1代表還沒有讀取完畢
while ((len=is.read(buf))!=-1){
//從0位置開始讀取,到len位置結束
// 因爲buf數組中有效的數據就是從0到len長度這個區間的數據
String str = new String(buf,0,len);
System.out.println("客戶端說:"+str);
}
}
上述就是最基礎的ServerSocket和Socket之間的通信
記得首先啓動服務端,然後在啓動客戶端,ip地址和端口號不要寫錯了