基于UDP的Socket编程

本文详细介绍基于UDP协议的Socket编程,包括服务器端与客户端的具体实现方式。通过实例代码讲解如何使用DatagramSocket和DatagramPacket类进行数据包的发送与接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1>>基于UDP的Socket编程用到的类和方法
      DatagramSocket  数据报Socket对象
                          常用方法:ds.send(DatagramPacket)发送UDP包,  ds.receive(DatagramPacket)接收UDP包;
      DatagramPacket  UDP包对象
                          常用方法:1 new DatagramPacket(byte[],length)  常用来接收数据。
                                              2 new DatagramPacket(bytes[],length,InetAddress,port) 常用来发送数据。

2>>一个基于UDP协议的Socket编程。实现服务器/客户端的发送/接收数据
import java.net.*;
//基于UDP的Socket编程 服务器端代码
public class UDPServer
{
public static void main(String[] args)
{
  receive();
}
public static void receive()
{
  try{
  //创建数据报套接字,并绑定到固定端口。
   DatagramSocket ds = new DatagramSocket(6000);
   System.out.println("服务器端启动...");
   byte[] buf = new byte[100]; //声明byte数组,用于接收客户端Client输入
   //创建接收数据的UDP包    new DatagramPacket(byte[],length);  
   DatagramPacket dp = new DatagramPacket(buf,100);  
   ds.receive(dp);  //服务器端Server读取客户端Client的数据,并将数据保存到UDP包对象中
   System.out.println(new String(buf,0,dp.getLength()));  //服务器端输出客户端输入信息。

   String mess = "welcome you!"; //服务器端响应客户端信息
   //创建发送数据的UDP包对象 new DatagramPacket(bytes[],length,IPAddress,port);
   DatagramPacket senddp = new DatagramPacket(mess.getBytes(),mess.length(),dp.getAddress(),dp.getPort());
   //服务器端向客户端发送反馈信息
   ds.send(senddp);
   //数据报套接字关闭
   ds.close();

  }
  catch(Exception e){
   e.printStackTrace();
  }
}
}

客户端代码:
import java.net.*;
//基于UDP的SOcket编程的客户端代码
public class UDPClient
{
public static void main(String[] args)
{
  send();
}
public static void send()
{
  try{
   //创建数据报套接字
   DatagramSocket ds = new DatagramSocket();
   String str = "hello ,i am dajian";//客户端即将发送的数据
   //创建发送数据的UDP包对象  new DatagramPacket(bytes[] ,length,InetAddress,port)
   DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),6000);
   //向服务器端发送数据
   ds.send(dp);

   byte[] buf = new byte[100]; //用于接收数据的数组
   //创建结束服务器端数据的UDP包对象  new DatagramPacket(bytes[] ,length)
   DatagramPacket receivedp = new DatagramPacket(buf,100);
   //接收服务器端信息,保存到UDP包对象中
   ds.receive(receivedp);
   System.out.println(new String(buf,0,receivedp.getLength()));//客户端打印服务器端响应的信息
   ds.close(); //关闭数据报套接字
  }
  catch(Exception e){
   e.printStackTrace();
  }
}
}


3>>图片演示java Swing组建和URL实现文件下载(下载thml网页为例)


接上一张

》》 字节流读取和写出文件:源码读取源码写入。不会出现数据丢失的情况(上例会出现丢失)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值