客戶端:
package demo03; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; /* * 實現TCP客戶端,接收到服務器 * 和服務器實現數據交換 * 實現TCP客戶端程序的類 java.net.Socket * * 構造方法: * Socket(String host,int port) 傳服務器IP和端口號 * 注意:構造方法只要運行,就會和服務器進行連接,連接失敗,拋出異常 * * OutputStream getOutputStream() 返回套接字的輸出流 * 作用:將數據輸出,輸出到服務器 * * InputStream getInputStream() 返回套接字的輸入流 * 作用:從服務端讀取數據 * * 客戶端服務器數據交換,必須使用套接字對象Socket中的獲取的IO流,自己new流,不行 */ public class TCPClient { public static void main(String[] args) throws IOException{ //創建Socket對象,連接服務器 Socket socket=new Socket("127.0.0.1",8888); //通過客戶端的套接字對象Socket方法,獲取字節輸出流,將數據寫向服務器 OutputStream out=socket.getOutputStream(); out.write("服務器你好!".getBytes()); //讀取服務器發回的數據,使用socket套接字對象中的字節輸入流 InputStream in=socket.getInputStream(); byte[] data=new byte[1024]; int len=in.read(data); System.out.println(new String(data,0,len)); socket.close(); } }
服務端:
package demo03; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /* * 實現TCP服務器程序 * 表示服務器程序的類 java.net.ServerSocket * 構造方法: * ServerSocket(int port) 傳遞端口號 * * 很重要的事情:必須要獲得客戶端的套接字對象Socket * Socket accept() */ public class TCPServer { public static void main(String[] args)throws IOException { ServerSocket server=new ServerSocket(8888); //調用服務器套接字對象中的方法accept()獲取客戶端套接字對象 Socket socket=server.accept(); //通過客戶端套接字對象,socket獲取字節輸入流,讀取的是客戶端發送來的數據 InputStream in=socket.getInputStream(); byte[] data=new byte[1024]; int len=in.read(data); System.out.println(new String(data,0,len)); //服務器向客戶端回數據,字節輸出流,通過客戶端套接字對象獲取字節輸出流 OutputStream out=socket.getOutputStream(); out.write("收到,謝謝".getBytes()); socket.close(); server.close(); } }
