該程序如何編寫
寶慕林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();
??}
?}
}舉報