Java网络编程--UDP、TCP协议实现简单接收和发送数据

一、UDP协议

(一)服务器端:

步骤如下:

  • 1、创建接收端Socket对象

  • 2、创建一个接收数据包

  • 3、调用socket对象的接收数据方法

  • 4、解析数据包,并将其输出在控制台

  • 5、释放资源

    代码实现如下:

    public class ReceiveDemo {
    	public static void main(String[] args) throws IOException {
    		//创建接收端socket对象
    		DatagramSocket ds = new DatagramSocket(12345);
    		
    		//创建接收数据包
    		byte[] buf = new byte[1024];
    		DatagramPacket dp = new DatagramPacket(buf, buf.length);
    		
    		//接收数据
    		ds.receive(dp);
    		
    		//解析数据包
    		String ip = dp.getAddress().getHostName();
    		String datas = new String(dp.getData(), 0, dp.getLength());
    		System.out.println("接收到来自 "+ip+" 的数据:"+datas);
    		
    		//释放资源
    		ds.close();
    	}
    }
    

(二)客户端:

步骤如下:

  • 1、创建发送端Socket对象

  • 2、创建数据,并把数据打包

  • 3、调用socket对象的发送方法来发送数据包

  • 4、释放资源

    代码实现如下:

    public class SendDemo {
    	public static void main(String[] args) throws IOException {
    		//创建发送端socket对象
    		DatagramSocket ds = new DatagramSocket();
    		
    		//创建需要发送的数据,并封装成数据包
    		byte[] datas = "Hello UDP".getBytes();
    		DatagramPacket dp = new DatagramPacket(datas, datas.length, netAddress.getByName("127.0.0.1"), 12345);
    		
    		//发送
    		ds.send(dp);
    		
    		//释放资源
    		ds.close();
    	}
    }
    

    服务器端收到数据如下:

二、TCP协议

(一)服务器端:

步骤如下:

  • 1、创建服务器端socket对象(ServerSocket类)

  • 2、监听客户端连接。并且针对每一个客户端都返回一个socket对象(Socket类的实例)

  • 3、获取输入流,读取数据

  • 4、释放资源

    代码实现如下:

public class ServerDemo {
	public static void main(String[] args) throws IOException{
		//创建ServerSocket对象
		ServerSocket ss = new ServerSocket(12345);
		
		//监听客户端连接。返回客户端socket对象
		Socket s = ss.accept();
		
		//获取输入流,读取数据
		InputStream is = s.getInputStream();
		byte[] datas = new byte[1024];
		int len = is.read(datas);
		System.out.println("Server:"+new String(datas, 0, len));
		
		//获取输出流,写出反馈
		OutputStream os = s.getOutputStream();
		os.write("数据已收到".getBytes());
		
		//释放资源
		s.close();
	}
}

(二)客户端:

步骤如下:

  • 1、创建发送端socket对象(这一步如果成功,表明连接已经建立成功)
  • 2、获取输出流,发送数据
  • 3、释放资源
public class ClientDemo {
	public static void main(String[] args) throws IOException {
		//创建socket对象
		Socket s = new Socket("127.0.0.1", 12345);
		
		//获取输出流
		OutputStream os = s.getOutputStream();
		os.write("Hello TCP".getBytes());
		
		//获取输入流
		InputStream is = s.getInputStream();
		byte[] datas = new byte[1024];
		int len = is.read(datas);
		System.out.println("Client:"+new String(datas, 0, len));
		
		//释放资源
		s.close();
	}
}

运行结果如下:

服务器端收到消息:

客户端收到反馈:

Java新手,若有错误,欢迎指正!

原文地址:https://www.cnblogs.com/Java-biao/p/12589106.html