多程Socket通信
在在做一多程Socket通信在在接受端老是2到3小就有一程死掉例外有一是界面程的一是接收理段程是死循外循是不是否有循是在里搜索什么理完并返回信息。望高手能我意不感激
public void run()
{
try
{
String readMess= " ";
client=null;
in=null;
out=null;
client =new Socket(ip,port);
//client =new Socket( "10.242.10.75 ",4660);
System.out.println(line+ " CONNECTION OK! ");
out = new DataOutputStream(client.getOutputStream());
in = new DataInputStream(client.getInputStream());
flag=true;
while(true)
{
System.out.print(line);
System.out.println(client.isConnected());
readMess=in.readLine().trim();
if(readMess.equals( " ")||readMess==null)
{
System.out.println( "while end! ");
break;
}
else
{
id=trans.getID(readMess);
strData=trans.getData(readMess);
insert_RCV_Data(strData,id);
int count=0;
while(true)
{
int getflag=get_send_flag(id);
if(getflag==0)
{
sleep(150);
count++;
if(count==20)
{
try
{
Statement stmt=con.createStatement();
String strsqlupdate= "update SYS_DATA_CHANNEL set flag=4 where id= "+id+ " and flag=0 ";
stmt.executeUpdate(strsqlupdate);
stmt.close();
} catch(Exception ex)
{
System.out.println( "errorUpdate : "+ex.getMessage());
}
break;
}
}
else if(getflag==1||getflag==2)
{
trans.sendData(out,strData,id,false);
this.data.insertElementAt( "ID: "+id+ " Data: "+strData,0);
get_send_Data();
break;
}
}
}
}
catch(Exception e)
{
System.out.println(ip+ " Thread run error : "+e.getMessage());
}
}
[解决办法]
在在接受端老是2到3小就有一程死掉
你的程序是不是产生死锁了?
为什么要用繁体?
[解决办法]
你这段代码里没有锁,不知如何会牵涉到 "死锁 ".
你的程序 "死掉 "具体是什么意思?
1. 内循环: get_send_flag 保证总是返回 0/1/2 之一,才能较好地保证内循环能终止
2. 外循环: if(readMess.equals( " ")||readMess==null) 有待研究详情
[解决办法]
先在线程结束的的时候打印些东西,看看是正常结束的还是非正常结束。