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();
	}
}


posted @ 2015-01-09 13:47  静以养身 俭以养德  阅读(161)  评论(0编辑  收藏  举报