java socket通信03

3045 ワード

1.Socket通信UDP
    UDPプロトコル:接続なし、信頼できない、無秩序な。スピードが比較的速いです。
  1.データ転送を行う場合。まずデータをデータグラム(Datagram)に包装し、指定されたデータが到着したソケット(サービスアドレスとポート番号)で、最後にデータを送信します。
関連操作クラス
     データパケット
     Datagram Socket:ポート対ポートの通信クラスです。
2.サービス:
  ステップ:
     1.Datagram Socketを作成し、ポート番号を指定します。
     2.Datagram Packetを作成する
     3.クライアントから送信されたデータ情報を受信する
     4.データの読み込み
3.クライアント
   ステップ:
    1.送信情報を定義する
    2.Datagram Packetを作成し、送信する情報を含みます。
    3.Datagram Socketを作成する
    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();
	}
}