UDP 服务 建立后 不能连接

wangjian 2016-04-02 10:44:08

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;
}
}
}
...全文
97 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjian 2016-04-02
  • 打赏
  • 举报
回复
代码是对的。。上位机程序错误。。。纠结了2天

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧