80,350
社区成员
发帖
与我相关
我的任务
分享
public class TncUdpServer implements ITncInterface
PORT = 6000;
private byte[] msg = new byte[2048];
private boolean life = true;
private IResponse respListener;
private int mState;
private int TcpRecNum,TcpSendNum;
private WorkThread Workserver;
private ITncInterface.TncInterface msStype;
private DatagramSocket dSocket = null;
private ITncInterface.TncType Tnc_Type;
public TncUdpServer(IResponse respListener) {
msStype= ITncInterface.TncInterface.Tnc_Upd ;
mState = STATE_NONE;
this.respListener=respListener;
}
@Override
public boolean getState(){
return mState==STATE_CONNECT_SUCCESS;
}
public int getRecNum(){
return TcpRecNum;
}
public int getSendNum(){
return TcpSendNum;
}
@Override
public void SetStratkey(String _Key){
}
@Override
public void Open() {
mState = STATE_CONNECT_SUCCESS;// 开启服务器
ExecutorService exec = Executors.newCachedThreadPool();
Workserver = new WorkThread();
exec.execute(Workserver);
respListener.onSocketConnectSucc(msStype) ;
}
@Override
public void Close() {
life=false ;
// Workserver.stop();
if (dSocket!=null){
dSocket.disconnect() ;
dSocket.close() ;
dSocket=null;
}
new Handler().postDelayed(new Runnable(){
public void run() {
//execute the task
}
}, 200);
respListener.onSocketConnectDiss(msStype) ;
mState = STATE_NONE;
//setState(STATE_NONE);
}
@Override
public void write(String mstring){
}
private class WorkThread extends Thread {
@Override
public void run() {
// setName("ConnectThread");
DatagramPacket dPacket = new DatagramPacket(msg, msg.length);
try {
InetAddress msADD;
// try
// {
// msADD=InetAddress.getByName(NetworkUtil.getLocalHostIp());
// dSocket = new DatagramSocket(PORT,msADD );
// }
// catch(UnknownHostException e)
// {
// respListener.onSocketConnectDiss(msStype);
// }
dSocket = new DatagramSocket(PORT );
dSocket.setBroadcast(true);
msADD=dSocket.getLocalAddress();
// dSocket.setSoTimeout(2000);
while (life) {
try {
//this.lock.acquire();
dSocket.receive(dPacket);
// dPacket.getLength();
byte[] target = new byte[dPacket.getLength()];
System.arraycopy(dPacket.getData(), 0, target, 0, dPacket.getLength());
//result=new String(dPacket.getData());
respListener.onSocketResponse(msStype,target);
TcpRecNum++;
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SocketException e) {
Logex.e( "WorkThread: " ,e.getMessage());
}
respListener.onSocketConnectDiss(msStype) ;
mState = STATE_NONE;
}
}
}