成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽

這篇文章主要介紹了Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、臨川網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

使用spring boot實(shí)現(xiàn)項(xiàng)目啟動時(shí)的監(jiān)聽,

UDPListener

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

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class UDPListener implements ServletContextListener {

  public static final int MAX_UDP_DATA_SIZE = 4096;
  public static final int UDP_PORT = 26666;

  @Override
  public void contextInitialized(ServletContextEvent sce) {

    System.out.println("========UDPListener Initialized=========");
    try {
       // 啟動一個(gè)線程,監(jiān)聽UDP數(shù)據(jù)報(bào)
      new Thread(new UDPProcess(UDP_PORT)).start();
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  class UDPProcess implements Runnable {
    DatagramSocket socket = null;

    public UDPProcess(final int port) throws SocketException {
      socket = new DatagramSocket(port);
    }

    @Override
    public void run() {
      // TODO Auto-generated method stub
      System.out.println("=======UDPProcess======");
      while (true) {
        byte[] buffer = new byte[MAX_UDP_DATA_SIZE];
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
        try {
          socket.receive(packet);
          new Thread(new Process(packet)).start();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

    }
  }

  class Process implements Runnable {

    public Process(DatagramPacket packet) throws UnsupportedEncodingException {
      // TODO Auto-generated constructor stub
      byte[] buffer = packet.getData();// 接收到的UDP信息,然后解碼
      String srt1 = new String(buffer,"GBK").trim();
      String srt2 = new String(buffer, "UTF-8").trim();
      String srt3 = new String(buffer,"ISO-8859-1").trim();
      System.out.println("=======Process srt1 GBK======" + srt1);
      System.out.println("=======Process srt2 UTF-8======" + srt2);
      System.out.println("=======Process srt3 ISO-8859-1======" + srt3);
    }

    @Override
    public void run() {
      // TODO Auto-generated method stub
      System.out.println("====Process run=====");
    }
    
  }

  @Override
  public void contextDestroyed(ServletContextEvent sce) {
    System.out.println("========UDPListener Destroyed=========");
  }

}

DemoApplication

@SpringBootApplication
@ServletComponentScan 
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

@ServletComponentScan Servlet掃描,啟動時(shí)把servlet、filter、listener自動掃描注入

UDP測試客戶端(也可以用測試工具發(fā)送UDP包測試):

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClientTest {

  public static final String SERVER_HOSTNAME = "localhost";
  // 服務(wù)器端口
  public static final int SERVER_PORT = 26666;
  // 本地發(fā)送端口
  public static final int LOCAL_PORT = 8888;

  public static void main(String[] args) {
    try {
      // 1,創(chuàng)建udp服務(wù)。通過DatagramSocket對象。
      DatagramSocket socket = new DatagramSocket(LOCAL_PORT);
      // 2,確定數(shù)據(jù),并封裝成數(shù)據(jù)包。DatagramPacket(byte[] buf, int length, InetAddress
      // address, int port)
      byte[] buf = "你好,世界".getBytes();
      DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(SERVER_HOSTNAME),
          SERVER_PORT);
      // 3,通過socket服務(wù),將已有的數(shù)據(jù)包發(fā)送出去。通過send方法。
      socket.send(dp);
      // 4,關(guān)閉資源。
      socket.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

}

結(jié)果:

Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

標(biāo)題名稱:Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽
當(dāng)前網(wǎng)址:http://jinyejixie.com/article38/ggiosp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、移動網(wǎng)站建設(shè)商城網(wǎng)站、軟件開發(fā)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
平谷区| 长泰县| 隆子县| 岱山县| 四平市| 友谊县| 亳州市| 微山县| 沙田区| 随州市| 柳江县| 湖州市| 繁峙县| 盐源县| 芦溪县| 迁安市| 平远县| 衢州市| 丰原市| 商丘市| 五大连池市| 黄平县| 乐安县| 丹棱县| 河西区| 象山县| 海晏县| 赤峰市| 莆田市| 义马市| 威远县| 平利县| 晴隆县| 洛隆县| 潞西市| 安康市| 东乡| 屏东县| 塔城市| 镇原县| 揭东县|