1. 程式人生 > >JAVA 網路程式設計(簡單的傳送端和接受端)

JAVA 網路程式設計(簡單的傳送端和接受端)

/*
	UDP
	1,將資料及源和目的封裝成資料包中,不需要建立連線
	2,每個資料報的大小在限制在64k
	3,因為無連線,是不可靠協議的
	4,不需要建立連線,速度快

	TCP
	1,建立連線,形成傳輸資料的通道
	2,在連線中進行最大資料量傳輸
	3,通過三次握手完成連線,是可靠傳輸協議
	4,必須建立連線,效率會稍低


	Socket
	1,Socket 就是為了網路服務提供的一種機制
	2,通訊的兩端都有Socket 
	3,網路通訊其實就是Socket之間的通訊
	4,資料在兩個Socket間通過IO傳輸


*/
import java.net.*;
import java.io.*;

//傳送端

class UDPSend
{
	public static void main(String []args) throws Exception
	{
		//1,建立UDP服務 通過DatagramSocket 物件
		DatagramSocket ds = new DatagramSocket();

		//鍵盤錄入
		BufferedReader bufr =
			new BufferedReader(new InputStreamReader(System.in));
	
		String line = null;

		while((line = bufr.readLine()) != null)
		{
			if("Bye".equals(line))
				break;
			//將字串轉變成位元組流
			byte [] buf = line.getBytes();
		
			//2,確定資料 並封裝成資料包
			DatagramPacket dp = 
				new DatagramPacket(buf,buf.length,InetAddress.getByName("127.1"),1000);

			//3 通過socket 服務 將已有的資料包傳送出去 通過send 方法
			ds.send(dp);
		}
		//關閉資源
		ds.close();
	}
}

 

class UDPRecv
{
	public static void main(String []args) throws Exception
	{
		// 1  建立UDP socket  此處設定埠號為1000
		DatagramSocket ds = new DatagramSocket(1000);

		while(true)
		{
			//2  定義資料包 用於儲存資料
			byte []buf = new byte[1024];
			DatagramPacket dp = new DatagramPacket(buf,buf.length);

			//3 通過服務的receive  方法將收到的資料存入資料包中
			ds.receive(dp);
			
			//4  通過資料包的方法獲取其中的資料
			String ip = dp.getAddress().getHostAddress();
			String data = new String(dp.getData(),0,dp.getLength());

			System.out.println(ip + "::"+data);
		}
		//關閉資源
		ds.close();
	}
}