• 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新手,若有错误,欢迎指正!

  • 相关阅读:
    初步理解Java的三大特性——封装、继承和多态
    设计模式
    区分super和this
    类—矩形面积
    生成不重复的随机数(待完善)
    关于类的创建和调用
    生成验证码
    endsWith和startsWith同样效果其他形式的写法(2016.1.12)
    去除字符串中空格的方法(2016.1.12P141-2)
    java的抽象类
  • 原文地址:https://www.cnblogs.com/Java-biao/p/12589106.html
Copyright © 2020-2023  润新知