中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 网络
UDP通讯源码
作者:未知 时间:2005-07-24 21:17 出处:JR 责编:chinaitpower
              摘要:UDP通讯源码
//UDPServer.java

import java.net.*;
import java.io.*;
import java.util.*;

public class UDPServer {
   static final int INPORT=1711;
   private byte[] buf=new byte[1000];
   private DatagramPacket dp=new DatagramPacket(buf,buf.length);
   private DatagramSocket socket;
   public UDPServer(){
     try{
       socket=new DatagramSocket(INPORT);
       System.out.println("Server started!");
       while(true){
         socket.receive(dp);
         String rcvd=Dgram.toString(dp)+",from ddress:"+dp.getAddress()+
                     ",port:"+dp.getPort();
         System.out.println(rcvd);
         String echoString="Echoed:"+rcvd;
         DatagramPacket echo=Dgram.toDatagram(echoString,dp.getAddress(),dp.getPort());
         socket.send(echo);
      }
     }catch(SocketException e){
         System.err.println("Can't open socket");
         System.exit(1);
       }catch(IOException e){
         System.err.println("Communication error!");
         e.printStackTrace();

       }

     }
   public static void main(String[] args){
     new UDPServer();
   }
}

//UDPClient.java

import java.lang.Thread;
import java.net.*;
import java.io.*;


public class UDPClient extends Thread{

  private DatagramSocket s;
  private InetAddress hostAddress;
  private byte[] buf=new byte[1000];
  private DatagramPacket dp=new DatagramPacket(buf,buf.length);
  private int id;

  public UDPClient(int identifier){
    id=identifier;
    try{
      s=new DatagramSocket();
      hostAddress=InetAddress.getByName("localhost");
    }catch(UnknownHostException e){
      System.err.println("Cannot find host");
      System.exit(1);
    }catch(SocketException e){
      System.err.println("Can't open Socket");
      e.printStackTrace();
      System.exit(1);
    }
  }

  public void run(){
    try{
      for(int i=0;i<1;i++){//消息数

        String outMessage="Client #"+
                id+",message#"+i;

        s.send(Dgram.toDatagram(outMessage,hostAddress,UDPServer.INPORT));
        s.receive(dp);
        String rcvd="Client #"+id+",rcvd from "+
                    dp.getAddress()+","+
                    dp.getPort()+":"+
                    Dgram.toString(dp);
        System.out.println(rcvd);

      }
    }catch(IOException e){
      e.printStackTrace();
      System.exit(1);

    }
  }

  public static void main(String[] args){
    for (int i=0;i<1;i++)//客户数量
      new UDPClient(i).start();
  }
}

//Dgram.java 数据报格式
import java.net.*;

public class Dgram {
  public static DatagramPacket toDatagram(
    String s,InetAddress destIA,int destPort){
      byte[] buf=new byte[s.length()+1];
      s.getBytes(0,s.length(),buf,0);
      return new DatagramPacket(buf,buf.length,destIA,destPort);
  }

  public static String toString(DatagramPacket p){
    return new String(p.getData(),0,p.getLength());
  }
}
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有