TCP通信(java實現)

/*
演示tcp傳輸。


1,tcp分客戶端和服務端。
2,客戶端對應的對象是Socket。
	服務端對應的對象是ServerSocket。


*/


/*
客戶端,
通過查閱socket對象,發現在該對象建立時,就可以去連接指定主機。
因爲tcp是面向連接的。所以在建立socket服務時,
就要有服務端存在,並連接成功。形成通路後,在該通道進行數據的傳輸。


需求:給服務端發送給一個文本數據。

步驟:
1,創建Socket服務。並指定要連接的主機和端口。

*/
import java.io.*;
import java.net.*;
class  TcpClient
{
	public static void main(String[] args) throws Exception 
	{
		//創建客戶端的socket服務。指定目的主機和端口
		Socket s = new Socket("192.168.1.101",10003);
		
		//爲了發送數據,應該獲取socket流中的輸出流。
		OutputStream out = s.getOutputStream();

		out.write("tcp ge men lai le ".getBytes());


		s.close();
	}
}


/*
需求:定義端點接收數據並打印在控制檯上。

服務端:
1,建立服務端的socket服務。ServerSocket();
	並監聽一個端口。
2,獲取連接過來的客戶端對象。
	通過ServerSokcet的 accept方法。沒有連接就會等,所以這個方法阻塞式的。
3,客戶端如果發過來數據,那麼服務端要使用對應的客戶端對象,並獲取到該客戶端對象的讀取流來讀取發過來的數據。
	並打印在控制檯。

4,關閉服務端。(可選)


*/
class  TcpServer
{
	public static void main(String[] args) throws Exception
	{
		//建立服務端socket服務。並監聽一個端口。
		ServerSocket ss = new ServerSocket(10003);

		//通過accept方法獲取連接過來的客戶端對象。
		while(true)
		{
		Socket s = ss.accept();

		String ip = s.getInetAddress().getHostAddress();
		System.out.println(ip+".....connected");

		//獲取客戶端發送過來的數據,那麼要使用客戶端對象的讀取流來讀取數據。
		InputStream in = s.getInputStream();
		
		byte[] buf = new byte[1024];
		int len = in.read(buf);

		System.out.println(new String(buf,0,len));

		s.close();//關閉客戶端.
		}
		//ss.close();
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章