該程序如何編寫
寶慕林8176504
2017-06-15 17:01:30
TA貢獻41條經驗 獲得超26個贊
去看下這個課程,專門講的這個例子 http://www.xianlaiwan.cn/learn/161
給你些代碼參照一下:
/* ?2017年5月10日13:06:53 ?TCP協議是面向連接、可靠的、有序的,以字節流的方式發送數據? ?基于TCP協議實現網絡通信的類 ?客戶端的Socket類 ?服務器端的ServerSocket類 ? ?創建客戶端大概步驟: ?1、創建Socket對象,指明需要連接的服務器的地址和端口號 ?2、連接建立后,通過輸出流向服務器端發送請求信息 ?3、通過輸入流獲取服務器響應的信息 ?4、關閉相關資源 */ import?java.io.OutputStream; import?java.io.PrintWriter; import?java.io.IOException; import?java.io.BufferedReader; import?java.io.InputStreamReader; import?java.net.Socket; import?java.net.UnknownHostException; //客戶端 public?class?Client?{ ?public?static?void?main(String[]?args)?{ ??try?{ ???//創建客戶端Socket,指定服務器地址和端口號,執行此語句時,自己向服務器端發送聯接請求 ???Socket?socket?=?new?Socket("localhost",?8888); ???//通過Socket類中的getOutputStream()方法獲取字節輸出流 ???OutputStream?os?=?socket.getOutputStream(); ???//將字節輸出流轉換成PrintWriter打印流 ???PrintWriter?pw?=?new?PrintWriter(os); ???//向服務器端發送信息 ???pw.write("用戶名:zhangsan;?密碼:123"?); ???//刷新緩沖區 ???pw.flush(); ???socket.shutdownOutput();?//關閉輸出流 ???//通過輸入流接收服務器端發送過來的信息 ???BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(socket.getInputStream())); ???String?info?=?null; ???while?((info?=?br.readLine())?!=?null)?{ ????System.out.println("我是客記端,服務器端說:"?+?info); ???} ???socket.shutdownInput();?//關閉輸入流 ???//關閉相關資源 ???br.close(); ???pw.close(); ???os.close(); ???socket.close(); ??}?catch?(UnknownHostException?e)?{ ???e.printStackTrace(); ??}?catch?(IOException?e)?{ ???e.printStackTrace(); ??} ?} } /* ?2017年5月10日13:05:46 ?TCP協議是面向連接、可靠的、有序的,以字節流的方式發送數據? ?基于TCP協議實現網絡通信的類 ?客戶端的Socket類 ?服務器端的ServerSocket類 ?創建服務器端大概步驟: ?1、創建ServerSocket對象,綁定監聽端口 ?2、通過accept()方法監聽客戶端請求 ?3、連接建立后,通過輸入流讀取客戶端發送的請求信息 ?4、通過輸出流向客戶端發送響應信息 ?5、關閉相關資源 */ import?java.net.ServerSocket; import?java.net.Socket; import?java.io.InputStream; import?java.io.InputStreamReader; import?java.io.BufferedReader; import?java.io.IOException; import?java.io.PrintWriter; //服務器端 public?class?Server?{ ?public?static?void?main(String[]?args)?{ ??try{ ???//創建一個服務端Socket,即ServerSocket,指定綁定的端口號,并監聽此端口 ???ServerSocket?serverSocket?=?new?ServerSocket(8888); ???System.out.println("***服務端即將啟動,等待客戶端的聯接***"); ???//調用Socket類中的accept()方法監聽客戶端的請求 ???Socket?socket?=?serverSocket.accept(); ???//調用Socket類中的getInputStream()方法,獲取一個字節輸入流 ???InputStream?is?=?socket.getInputStream(); ???//將字節輸入流轉換為字符輸入流 ???InputStreamReader?isr?=?new?InputStreamReader(is); ???//將字符輸入流轉換成帶緩沖區的輸入流 ???BufferedReader?br?=?new?BufferedReader(isr); ???//通過輸入流獲取客戶端發送過來的信息 ???String?info?=?null; ???while?((info?=?br.readLine())?!=?null)?{ ????System.out.println("我是服務器,?客戶端說:"?+?info); ???} ???socket.shutdownInput();?//關閉輸入流 ???PrintWriter?pw?=?new?PrintWriter(socket.getOutputStream()); ???pw.write("歡迎光臨!"); ???pw.flush(); ???//關閉相關資源 ???pw.close(); ???br.close(); ???isr.close(); ???is.close(); ???socket.close(); ???serverSocket.close(); ??}?catch?(IOException?e)?{ ???e.printStackTrace(); ??} ?} }
舉報