UDP学习之一,UDP的简单例子

UDP学习之一,UDP的简单例子

import  java.net. * ;
import  java.io. * ;
public   class  EchoClient  {
  
private String remoteHost="localhost";
  
private int remotePort=8000;
  
private DatagramSocket socket;

  
public EchoClient()throws IOException{
     socket
=new DatagramSocket(); //与本地的任意一个UDP端口绑定
  }

  
public static void main(String args[])throws IOException{
    
new EchoClient().talk();
  }

  
public void talk()throws IOException {
    
try{
      InetAddress remoteIP
=InetAddress.getByName(remoteHost);

      BufferedReader localReader
=new BufferedReader(new InputStreamReader(System.in));
      String msg
=null;
      
while((msg=localReader.readLine())!=null){
        
byte[] outputData=msg.getBytes();
        DatagramPacket outputPacket
=new DatagramPacket(outputData,
                                    outputData.length,remoteIP,remotePort);
        socket.send(outputPacket);  
//给EchoServer发送数据报
        
        DatagramPacket inputPacket
=new DatagramPacket(new byte[512],512);
        socket.receive(inputPacket);
        System.out.println(
new String(inputPacket.getData(),0,inputPacket.getLength()));  
        
if(msg.equals("bye"))
          
break;
       }

    }
catch(IOException e){
       e.printStackTrace();
    }
finally{
       socket.close();
    }

  }

}
  



/** */ /****************************************************
 * 作者:孙卫琴                                     *
 * 来源:<<Java网络编程精解>>                       *
 * 技术支持网址:www.javathinker.org                *
 **************************************************
*/

import  java.io. * ;
import  java.net. * ;
public   class  EchoServer  {
  
private int port=8000;
  
private DatagramSocket socket;

  
public EchoServer() throws IOException {
    socket
=new DatagramSocket(port); //与本地的一个固定端口绑定
    System.out.println("服务器启动");
  }


  
public String echo(String msg) {
    
return "echo:" + msg;
  }


  
public void service() {
    
while (true{
      
try {
        DatagramPacket packet
=new DatagramPacket(new byte[512],512);
        socket.receive(packet);  
//接收来自任意一个EchoClient的数据报
        String msg=new String(packet.getData(),0,packet.getLength());         
        System.out.println(packet.getAddress() 
+ ":" +packet.getPort()
                            
+">"+msg);
        
        packet.setData(echo(msg).getBytes());
        socket.send(packet);  
//给EchoClient回复一个数据报
      }
catch (IOException e) {
         e.printStackTrace();
      }

    }

  }


  
public static void main(String args[])throws IOException {
    
new EchoServer().service();
  }

}




/** */ /****************************************************
 * 作者:孙卫琴                                     *
 * 来源:<<Java网络编程精解>>                       *
 * 技术支持网址:www.javathinker.org                *
 **************************************************
*/

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

public   class  SendUdpData  {
    
private String remoteHost = "localhost";
    
private int remotePort = 8000;
    
private DatagramSocket socket;

    
public SendUdpData() throws IOException {
        socket 
= new DatagramSocket(); // 与本地的任意一个UDP端口绑定
    }


    
public void sendData() {
        
try {
            InetAddress remoteIP 
= InetAddress.getByName(remoteHost);
            
byte[] outputData = "Hello!".getBytes();
            DatagramPacket outputPacket 
= new DatagramPacket(outputData,
                    outputData.length, remoteIP, remotePort);
            socket.send(outputPacket); 
// 给EchoServer发送数据报
        }
 catch (UnknownHostException e) {
            e.printStackTrace();
        }
 catch (IOException e) {
            e.printStackTrace();
        }
 finally {
            socket.close();
        }

    }


    
public static void main(String[] args) throws IOException {
        
new SendUdpData().sendData();
    }

}

你可能感兴趣的:(UDP学习之一,UDP的简单例子)