zoukankan      html  css  js  c++  java
  • UDP通信

    UDPServer.java

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.StringReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UDPServer{
    	public static void main(String[] args) throws IOException{
    		new UDPServerThread().start();
    	}
    }
    class UDPServerThread extends Thread{
    	protected DatagramSocket socket=null;
    	protected BufferedReader in =null;
    	protected Boolean moreQuotes = true;
    	public UDPServerThread() throws IOException{
    		super();
    		socket = new DatagramSocket(4445);
    		in = new BufferedReader(new StringReader("one
    two
    three"));
    	}
    	public void run(){
    		while(moreQuotes){
    			try{
    				byte[] buf=new byte[256];
    				DatagramPacket packet=new DatagramPacket(buf,buf.length);
    				socket.receive(packet);
    				
    				String received =new String(packet.getData(),0,packet.getLength(),"utf-8");
    				System.out.println("Server received: "+received);									
    				
    				String dString = getNextQuote();
    				
    				buf=dString.getBytes("utf-8");
    				
    				InetAddress address =packet.getAddress();
    				int port =packet.getPort();
    				packet = new DatagramPacket(buf,buf.length,address,port);
    				socket.send(packet);
    			}catch(IOException e){
    				e.printStackTrace();
    				moreQuotes = false;
    			}
    		}
    		socket.close();
    	}
    	protected String getNextQuote(){
    		String returnValue=null;
    		try{
    			if((returnValue=in.readLine())==null){
    				in.close();
    				moreQuotes=false;
    				returnValue="No more quotes.Goodbye.";
    			}
    		}catch(IOException e){
    			returnValue="IOException occurred.";
    		}
    		return returnValue;
    	}
    }
    

      

    UDPClient.java

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    class UDPClient{
    	public UDPClient(){
    		
    	}
    	public static void main(String[] args) throws IOException{
    		if(args.length!=1){
    			System.out.println("Usage:java UDPClient……");
    			return;
    		}
    		DatagramSocket socket = new DatagramSocket();
    		
    		byte[] buf =new byte[256];
    		buf[0]='O';
    		buf[1]='S';
    		InetAddress address= InetAddress.getByName(args[0]);
    		DatagramPacket packet =new DatagramPacket(buf,buf.length,address,4445);
    		socket.send(packet);
    		String send =new String(packet.getData(),0,packet.getLength(),"utf-8");
    		System.out.println("Client send: "+send);
    
    		
    		packet =new DatagramPacket(buf,buf.length);
    		socket.receive(packet);
    		
    		String received =new String(packet.getData(),0,packet.getLength(),"utf-8");
    		System.out.println("Server Say: "+received);
    		
    		socket.close();
    	}
    }
    

     输出:

  • 相关阅读:
    阅读笔记十四
    惨淡的蓝桥杯国赛经历
    阅读笔记十三
    阅读笔记十二
    阅读笔记十一
    阅读笔记十
    阅读笔记九
    阅读笔记八
    阅读笔记七
    阅读笔记六
  • 原文地址:https://www.cnblogs.com/yuanzhenliu/p/5788957.html
Copyright © 2011-2022 走看看