日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java udp 心跳,udp简略通讯示例-心跳示例

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java udp 心跳,udp简略通讯示例-心跳示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當前位置:我的異常網? 軟件架構設計???udp簡略通訊示例-心跳示例

udp簡略通訊示例-心跳示例

www.myexceptions.net??網友分享于:2013-09-04??瀏覽:44次

udp簡單通訊示例---心跳示例

//發送心跳

new UDPToPointCenter(18056).start();

public class UDPToPointCenter extends Thread {

private static Logger logger = Logger.getLogger("com.hintsoft.pubwin.netcafe.socket.UDPToPointCenter");

private int listenPort;?? //發送的端口號

private static DatagramSocket sock;

private Timer timer;

private PooledExecutor _processExecutor = new PooledExecutor(new LinkedQueue(), 1);? //序列化

protected static PooledExecutor clientPool;

public UDPToPointCenter(int aListenPort) {

try {

this.timer = new Timer();

this.listenPort = aListenPort;

sock = new DatagramSocket(this.listenPort);

this.timer.schedule(new ConnSvrTask(),1 * 10 * 1000,Global.UDP_SYNC_SIGNAL_INTERVAL);

_processExecutor.setMaximumPoolSize(5);

_processExecutor.setMinimumPoolSize(1);

_processExecutor.setKeepAliveTime(10 * 1000);

_processExecutor.waitWhenBlocked();

_processExecutor.createThreads(1);

}

catch (SocketException e) {

logger.error(e, e);

}

catch (Exception e) {

logger.error(e, e);

}

}

private class ConnSvrTask extends TimerTask {

private Logger logger = Logger.getLogger("com.hintsoft.pubwin.netcafe.socket.ConnSvrTask");

public ConnSvrTask() {

super();

}

public void run() {

try {

byte[] b = new byte[21];

DatagramPacket packet = new DatagramPacket(b, b.length);

// 發送心跳

try {

byte[] desData = new byte[1024];

packet = new DatagramPacket(desData, desData.length, InetAddress.getByName(CachedConfigObject.getServerCenterCfgOtherObj().getPointCenterIP()), 18060);

sock.send(packet);

}catch (UnknownHostException e) {

logger.error(e, e);

}catch (IOException e) {

logger.error(e, e);

}

}

catch (Exception e) {

logger.error(e, e);

}

}

}

}

//接收心跳

new UderServerListen(18060).start();

public class UderServerListen extends Thread {

private static Logger logger = Logger.getLogger("com.hintsoft.pubwin.netcafe.socket.UdpServerClient");

private static DatagramSocket sock;

private List iplist;

private int listenPort;

private PooledExecutor _processExecutor = new PooledExecutor(new LinkedQueue(), 1);

private long udpBarBeg = System.currentTimeMillis();//開始搜索心跳的時間

public UderServerListen(int listenPort){

try {

this.iplist = Global.getAllIpAddress();

this.listenPort = listenPort;

sock = new DatagramSocket(this.listenPort);

_processExecutor.setMaximumPoolSize(5);

_processExecutor.setMinimumPoolSize(1);

_processExecutor.setKeepAliveTime(10 * 1000);

_processExecutor.waitWhenBlocked();

_processExecutor.createThreads(1);

}

catch (SocketException e) {

logger.error(e, e);

}catch (Exception e) {

logger.error(e, e);

}

}

public void run() {

if (sock == null) {

return;

}

while(true){

try {

byte[] data = new byte[1024];

DatagramPacket packet = new DatagramPacket(data, data.length);

sock.receive(packet);

UDPPacketProcessor processor = new UDPPacketProcessor(packet);

_processExecutor.execute(processor);

}

catch (java.net.SocketException e) {

logger.error(e, e);

}

catch (java.net.UnknownHostException e) {

logger.error(e, e);

}

catch (java.io.IOException e) {

logger.error(e, e);

}

catch (Exception e) {

logger.error(e, e);

}

}

}

private class UDPPacketProcessor implements Runnable {

private DatagramPacket _packet;

public UDPPacketProcessor(DatagramPacket packet) {

_packet = packet;

}

public void run() {

try {

List barList = new ArrayList();

barList.addAll(iplist);

String clientIP = _packet.getAddress().getHostAddress();

if(logger.isDebugEnabled()){

logger.debug("接收到的ip "+clientIP);

}

if (iplist.contains(clientIP)) {

Global.setBarStatus(Global.BAR_STATUS_ONLINE, clientIP);

for(int index=0;index

if(barList.get(index).equals(clientIP)){

barList.remove(index);

}

}

}else{

//判斷心跳斷開時間是否超過1小時,超過1小時則視為不在線

if (System.currentTimeMillis() - udpBarBeg >? 1 * 60 * 60 * 1000L){

if(null!=barList && barList.size()>0){

for(int i=0;i

Global.setBarStatus(Global.BAR_STATUS_UNONLINE, barList.get(i).toString());

}

}

}

}

}catch(Exception e){

logger.error(e,e);

}

}

}

}

文章評論

總結

以上是生活随笔為你收集整理的java udp 心跳,udp简略通讯示例-心跳示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。