java socket通信03


1.Socket通信 UDP

    UDP协议:无连接、不可靠、无序的。速度相对比较快。

  1.进行数据传输时。先将数据打包成数据报(Datagram),然后在指明数据到达的Socket(服务地址和端口号),最后将数据报发送出去。

相关操作类;

     DatagramPacket: 数据报包

     DatagramSocket: 端口对端口的通信类。

2.服务端:

  步骤:

     1.创建DatagramSocket,指定端口号

     2.创建DatagramPacket

     3.接收客户端发送的数据信息

     4.读取数据

3..客户端

   步骤:

    1.定义发送信息

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

    3.创建DatagramSocket

    4.发送数据

=====================

先运行服务端在运行客户端


package cn.lanz.socket.udp;

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

/**
 * @描述: 基于UDP的服务端
 * @version 创建时间: 2016-12-5:下午5:41:53
 * @E-mail 邮箱: 
 * @author 作者: 
 */
public class UDPServer {
	public static void main(String[] args) throws IOException {
			/*
			 * 服务器端接收客户端信息。
			 */
			//1.创建服务端的datagramsocket,指定端口
			DatagramSocket socket=new DatagramSocket(8888);
			//2.创建数据报datagrampacket,用于接收客户端发送的数据
			byte[] data=new byte[1024];//创建字节数组,接受指定数据包的大小
			
			DatagramPacket packet=new DatagramPacket(data, data.length);
			
			//3.接收客户端发送的数据信息
			socket.receive(packet);//此方法在接受数据报之前会一直阻塞
		    //4.读取数据
			String info=new String(data, 0, packet.getLength());//转为数组
			System.out.println("我是服务器,客户端说:"+info);
		
			/*===============================
			 * 向客户端响应
			 */
		  //1.定义客户端的地址,端口号,数据。
			InetAddress address=packet.getAddress();
			int port=packet.getPort();
			byte[] data2="欢迎你".getBytes();
		 //2.创建数据报datagrampacket,包含响应的数据
			DatagramPacket packet2=new DatagramPacket(data2, data2.length, address, port);
		 //3.响应客户端
			socket.send(packet2);
			
			socket.close();
	}
}

package cn.lanz.socket.udp;

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

/**
 * @描述:客户端 基于UDP
 * @version 创建时间: 2016-12-5:下午5:41:30
 * @E-mail 邮箱: 
 * @author 作者: 
 */
public class UDPClient {
	public static void main(String[] args) throws Exception {
		
		/*
		 * 
		 * 发送请求信息
		 * 
		 */
		//1.定义服务器的地址,端口号 、数据
		InetAddress address=InetAddress.getByName("localhost");
		int port=8888;
		byte[] data="用户名:admin;密码:123".getBytes();
		//2.定义数据包datagrampacket, 发送数据信息
		DatagramPacket packet=new DatagramPacket(data, data.length, address, port);
		//3.创建datagramsocket,
		DatagramSocket socket=new DatagramSocket();
		//4.向服务器端发送数据包新
		socket.send(packet);
		
		/*
		 * 
		 * 接收请求信息
		 * 
		 */
		//1.创建数据报 datagrampacket,用于接收响应数据。
		byte[] data2=new byte[1024];
		DatagramPacket packet2=new DatagramPacket(data2, data2.length);
		//2.接收服务器响应的数据
		socket.receive(packet2);
		//读取数据
		String reply=new String(data2, 0, packet2.getLength());
		System.out.println("我是客户端》服务端响应:"+reply);
		//关闭资源
		socket.close();
	}
}


你可能感兴趣的:(java socket通信03)