基于UDP的Socket通讯

1.客户端

package com.zhao.hehe;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;


public class demo2_send {
    public demo2_send() {
        
    }
    /**1.send
     * DatagramSocket   随机端口号,也可以在创建的时候添加地址,端口等
     * 
      *DatagramPacket  指定数据 ,长度,地址,端口
      *使用DatagramSocket发送DatagramPacket
      *关闭DatagramSocket
     */
    public static void main(String[] args) throws Exception {
        
            DatagramSocket socket=new  DatagramSocket();  //创建socket 相当于码头
            Scanner sc=new Scanner(System.in);// 创建键盘录入对象        
              //String str="Hi,I'm socket ";  //要发的字节
            
            while (true) {
                String line=sc.nextLine(); //获取键盘录入的字符串
                if("quit".equals(line)){
                    break;
                }
                //创建packet ,相当于集装箱
                DatagramPacket p=new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("127.0.0.1"), 8008);
                socket.send(p); //发货(发送消息)
            }
            socket.close();
            System.out.println("----------------");
    }

}

2.服务端

package com.zhao.hehe;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * @author 光头强
 *
 */
public class demo2_Receive {

    /**
     2.Receive
     * DatagramSocket   制定他要接受的端口号
     * 
      *DatagramPacket  指定数据 ,长度,地址,端口
      *使用DatagramSocket使用DatagramPacket接受
      *关闭DatagramSocket
     */
    public demo2_Receive() {
        
    }

    
    public static void main(String[] args) throws Exception {
        DatagramSocket socket=new DatagramSocket(8008); //创建socket ,相当于接受的码头
        DatagramPacket p=new DatagramPacket(new byte[1024], 1024); //创建pack ,相当于集装箱,里面参数 相当于一个1024byte大小的箱子,里面有1024个格子
        while(true){
            socket.receive(p);//接受数据,接货
            byte[] arr=p.getData(); //获取p中的全部数据,包括空数据
            int len=p.getLength(); //获取p中接受到的有效的字节个数
            String ip=p.getAddress().getHostAddress();//获取ip地址
            int port=p.getPort(); //获取端口号
            //System.out.println(ip+"---------");
            System.out.println(ip+":"+port+":"+(new String(arr,0,len)));//输出字符串  arr,从0开始len结束
        }
        
        //System.out.println("===================");
        //socket.close();
        

    }

}

3.效果图

 

posted @ 2019-03-16 19:59  Angry-rookie  阅读(68)  评论(0)    收藏  举报