`
accpxudajian
  • 浏览: 452752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于UDP的Socket编程

    博客分类:
  • Java
阅读更多
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网页为例)


接上一张

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics