• 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();
    	}
    }
    

     输出:

  • 相关阅读:
    在Android Studio中用Gradle添加Robolectric
    Windows环境下利用github快速配置git环境
    上传Android代码到Jcenter(解决了字符映射的问题)
    RecyclerView和ScrollView嵌套使用
    Android Java类编写规范+优化建议
    3.0之后在LinearLayout里增加分割线
    【转】Android Studio中通过快捷键来提取提取方法
    为什么Android应该根据屏幕分辨率来加载不同的图片文件
    JSON/XML格式化插件比较
    利用在线工具根据JSon数据自动生成对应的Java实体类
  • 原文地址:https://www.cnblogs.com/yuanzhenliu/p/5788957.html
Copyright © 2020-2023  润新知