天天看點

udp server java_udpserver.java

import java.awt.*;import java.net.*;import java.io.*;import java.util.*;public class UdpServer{public static final int PORT = 30000;//定義每個資料報的最大大小為4Kprivate static final int DATA_LEN = 4096;//定義該伺服器使用的DatagramSocketprivate DatagramSocket socket = null;//定義接收網絡資料的位元組數組byte[] inBuff = new byte[DATA_LEN];//以指定位元組數組建立準備接受資料的DatagramPacket對象private DatagramPacket inPacket = new DatagramPacket(inBuff , inBuff.length);//定義一個用于發送的DatagramPacket對象private DatagramPacket outPacket;//定義一個字元串數組,伺服器發送該數組的的元素String[] books = new String[]{"輕量級J2EE企業應用實戰","基于J2EE的Ajax寶典","Struts2權威指南","ROR靈活開發最佳實踐"};public void init()throws IOException{try{//建立DatagramSocket對象socket = new DatagramSocket(PORT);//采用循環接受資料for (int i = 0; i < 1000 ; i++ ){//讀取Socket中的資料,讀到的資料放在inPacket所封裝的位元組數組裡。socket.receive(inPacket);//判斷inPacket.getData()和inBuff是否是同一個數組System.out.println(inBuff == inPacket.getData());//将接收到的内容轉成字元串後輸出System.out.println(new String(inBuff ,0 , inPacket.getLength()));//從字元串數組中取出一個元素作為發送的資料byte[] sendData = books[i % 4].getBytes();//以指定位元組數組作為發送資料、以剛接受到的DatagramPacket的//源SocketAddress作為目标SocketAddress建立DatagramPacket。outPacket = new DatagramPacket(sendData ,sendData.length , inPacket.getSocketAddress());//發送資料socket.send(outPacket);}}//使用finally塊保證關閉資源finally{if (socket != null){socket.close();}}}public static void main(String[] args) throws IOException{new UdpServer().init();}}