首页 > 代码库 > java socket 基于UDP/IP 协议

java socket 基于UDP/IP 协议

Java  socket 基于UDP/IP协议应用

服务器端:  1、创建DatagramSocket,指定端口号

                            2、创建DatagramPacket

                            3、接收客户端发送的数据

                            4、读取数据

客户端:        

1、  定义发送信息: 服务器的IP 端口号  发送的内容

2、  创建DatagramPacket,包含将要发送的信息

3、  创建DatagramSocket

4、  发送数据

 

服务器端

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

/**
 *
服务器端,实现基于UDP的用户登录
 * Created by Jim Calark on 2017/3/19.
 */
public class UDPServer {
    public static void main(String[] args)  throws  SocketException , IOException{
        //1、创建服务器端DatagramSocket,指定端口
        DatagramSocket datagramSocket = new DatagramSocket(8800);
        //2、创建数据报,用于接受客户端发送的数据
        byte [] data = http://www.mamicode.com/new byte[ 1024];//创建字节数组,指定接受的数据报的大小
        DatagramPacket datagramPacket = new DatagramPacket(data,data.length);
        //3、接收客户端发送的数据
        System.out.println("服务器已经开启,等待客户端的连接");
        //此方法在接收到数据之前会一直阻塞
        datagramSocket.receive(datagramPacket);
        //4、读取客户端发送的数据
        //参数: data 要转换的数组 0 从数组的下标0 开始  datagramPacket.getLength() 长度为接收到的长度
        String info = new String(data,0,datagramPacket.getLength());
        System.out.println("这里是服务器,客户端发来的消息:--"+info);

        /**
         * 
向客户端进行响应
         */
       
//1、定义客户端的地址、端口号、数据
        //获取客户端 ip地址
        InetAddress inetAddress = datagramPacket.getAddress();
        //获取客户端端口号
        int port = datagramPacket.getPort();
        //将要响应的内容保存到byte数组中
        byte [] data2 = "欢迎您!".getBytes();
        //2创建数据报,包含响应的数据信息
        DatagramPacket datagramPacket12 = new DatagramPacket(data2,data2.length,inetAddress,port);
        //3、响应客户端
       datagramSocket.send(datagramPacket12);
       //4、关闭资源
       datagramSocket.close();

    }
}

 

                           

 

客户端

import java.io.IOException;
import java.net.*;

/**UDP 客户端
 * Created by Jim Calark on 2017/3/19.
 */
public class UDPClient {
    public static void main(String[] args) throws UnknownHostException  , SocketException,IOException{
        //1、定义服务器地址、端口号、数据
        InetAddress inetAddress = InetAddress.getByName("localhost");
        int port = 8800;
        byte [] data = "http://www.mamicode.com/用户名: 最帅的;密码: 123".getBytes();
        //2、创建数据报,包含发送的信息
        DatagramPacket datagramPacket = new DatagramPacket(data,data.length,inetAddress,port);
        //3、创建DatagramSocket对象
        DatagramSocket datagramSocket = new DatagramSocket();
        //4、向服务器端发送数据报
        datagramSocket.send(datagramPacket);

        /**
         *
客户端接收服务器端响应信息
         *
         */
       
//1、创建数据报,用于接收服务器端响应数据,数据保存到字节数组中
        byte [] data2 = new byte[1024];
        DatagramPacket datagramPacket1 =new DatagramPacket(data2 ,data2.length);
        //2、接收服务器响应的数据
        datagramSocket.receive(datagramPacket1);
        //3、读取数据
        String reply = new String(data2,0,datagramPacket1.getLength());
        System.out.println("这里是客户端,服务器端发来的消息:--"+ reply);
        //4、关闭资源
        datagramSocket.close();


    }
}

 

java socket 基于UDP/IP 协议