服務器在Socket的輸出流中寫入壹些東西,客戶端可以通過Socket的輸入流讀取相應的內容。Socket和Socket是雙向連接的,所以客戶端也可以寫壹些東西到相應的Socket輸出流中,然後服務器相應的Socket輸入流就可以讀取相應的內容。讓我們看看服務器和客戶端之間的壹些通信示例:
公共?班級?服務器?{
公共?靜電?作廢?main(字符串?args[])?摔投?IOException?{
//為簡單起見,拋出所有異常信息。
int?港口?=?8899;
//定義壹個ServerSocket來偵聽端口8899。
ServerSocket?服務器?=?新的?ServerSocket(端口);
//服務器嘗試從其他套接字接收連接請求,服務器的accept方法正在阻塞。
插座?插座?=?server . accept();
//與客戶端建立連接後,我們就可以獲取socket的InputStream,從中讀取客戶端發送的信息。
讀者?讀者?=?新的?InputStreamReader(socket . getinputstream());
夏爾?chars[]?=?新的?char[64];
int?len
StringBuilder?sb?=?新的?StringBuilder();
什麽時候?((len=reader.read(chars))?!=?-1)?{
sb追加(新?字符串(字符,0,?len));
}
System.out.println("from?客戶端:?”?+?sb);
reader . close();
socket . close();
server . close();
}
}客戶代碼
Java代碼公開?班級?客戶?{
公共?靜電?作廢?main(字符串?args[])?摔投?例外?{
//為了簡單起見,直接拋出所有異常。
字符串?主持人?=?"127.0.0.1";//要連接的服務器的IP地址。
int?港口?=?8899;?//與要連接的服務器對應的監聽端口
//與服務器建立連接。
插座?客戶?=?新的?套接字(主機,港口);
//連接建立後,可以向服務器寫入數據。
作家?作家?=?新的?output streamwriter(client . get output stream());
writer.write("餵?服務器。);
writer . flush();//寫完後記得沖掉。
writer . close();
client . close();
}
}