作者heyguys123 (前面右转)
看板java
标题[问题] socket自动断开
时间Thu May 9 17:44:51 2013
先说说我程式的架构
有一个class MultiThreadedServer
它有个inner class叫 HandleClient implements Runnable
顾名思义就是让外面的class去accept client的连结
再把它分配到inner class里
----------------以上前言----------------
我的HandleClient长这样
class HandleClient implements Runnable
{
private Socket skt;
private String path;
HandleClient(Socket ss){skt = ss;}
public void run()
{
try{
while(true)
{
... //recieve request to String msg
if( msg.equals("sendPic") ) { recievePic(); }
else if( msg.equals("sendPicMenu") ) { sendPicMenu(); }
else if( msg.equals("login") ) { login(); }
}
} catch(Exception e) {
System.out.println(e.toString());
}
}
private void recievePic(){...;}
private void sendPicMenu(){...;}
private void login(){...;}
}
Bug:
在最下面三个methods里我都没有写到 skt.close();
login(); 没有问题
但当我执行sendPicMenu();的时候
它做完这个method, socket会自动断线
我有关掉的只有一个读取档案的 FileInputStream
还有一个传输的BufferedOutputStream
请问我应该要怎麽改才能让他不断线呢QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.235.115
1F:→ popcorny:BufferedOutputStream close就跟着关啦 05/09 17:53
2F:→ heyguys123:为什麽~~~ 05/09 17:56
3F:→ popcorny:你不需要close也不需要BufferedOutputStream 05/09 18:00
4F:→ popcorny:自己写copy自己开buffer才是比较好的做法... 05/09 18:01
5F:→ popcorny:不然就是改call flush()或是用IOUtils.copy 05/09 18:02
6F:→ heyguys123:好喔谢谢^_^ 05/09 20:30