UDP通信原理



package org.web.dup;

import java.io.IOException;
import java.net.*;
import java.sql.Date;

public class TimeServiceSample {
 int buffersize=256;
 byte buf[]=new  byte[buffersize];
 String data="";
 int port=8080;
 DatagramPacket outTimePackate;//数据报变量
 DatagramSocket outTimeSocket;//DUP套接字变量
 public void getConnection(){
  try {
   outTimeSocket= new DatagramSocket(port);
   while(true){//在port出等待客户机的通信请求
    outTimePackate =new  DatagramPacket(buf,buf.length);
    try {
     outTimeSocket.receive(outTimePackate);//接受 客户机段发送的数据报
     data=new Date(0).toString();//得到服务器时间
     buf=data.getBytes();//转化 为字节数组
     InetAddress tempAddress=outTimePackate.getAddress();//获取客户机地址
     int tempport=outTimePackate.getPort();//获取客户机端口
     outTimePackate=new DatagramPacket(buf,buf.length,tempAddress,tempport);//创建数据报
     outTimeSocket.send(outTimePackate);
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  } catch (SocketException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 public static void main(String args[]){
  new TimeServiceSample().getConnection();
 }
 
}



package org.web.dup;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class GetTimeSample {
 int buffersize=256;
 byte buf[]=new byte[buffersize];
 String host="localhost";
 int port=8080;
 static DatagramPacket inTimePacket;
 DatagramSocket inTimeSocket;//DUP套接字变量
 public void connectionRecive(){
  try {
   InetAddress  localAddress=InetAddress.getByName(host);
   System.out.print("chect at"+localAddress);
   inTimePacket=new DatagramPacket(buf,buf.length,localAddress,port); //创建发送到服务器段的数据报  
   inTimeSocket= new DatagramSocket();//创建DUP套接字变量
   try {
    inTimeSocket.send(inTimePacket);//发送数据报
    inTimePacket=new DatagramPacket(buf,buf.length);//创建一个 用于接收的数据报
    inTimeSocket.receive(inTimePacket);
    String time=new String(inTimePacket.getData());
    System.out.print("the time  at:"+host+"is "+time);
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
   catch (SocketException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 public static void main(String args[]){
  new GetTimeSample().connectionRecive();
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值