java中,利用socket传送大文件,中途停止问题

java中,利用socket传送大文件,中途停止问题,第1张

thread里面接收数据应该是一个循环把?

那么就给这个循环加一个跳出条件,比如说

private boolean stop=true

在循环当中增加

if(stop=false){

break

}

public void setStop(boolean stop)

{

this.stop=stop

}

然后在需要停的时候调用setStop(false)就可以了

上面纯手打,代码拼写什么的可能有错大概就是这个意思

顺便说一下,thread.interrupt()是用来防止sleep或者wait方法卡死的,不会让线程终结。你要让线程结束还是要手动让程序跳出循环

java中用socket一次传多个文件,参考思路如下:

1、把线程放到Vector 线程池里面;

2 、每次从Vector里面拿到第一个空闲的,如果没有,就新建一个线程,并保存到线程池, 线程状态为使用中;

3 、线程完毕后,通知管理类,管理类把线程标识为空闲;

可以封装为简单的方法,如下:

public MyThread getFreeThread(){

.. // 从池里面获取一个空闲线程

}

public void finished(MyThread o){

// 线程通知管理类,我已经完成了

}

你是不是尝试把文本都读到内存里再传输?这样客户端或者服务器的内存早就爆了。

你应该申请一个固定长度(4K)的byte数组作为缓冲区,打开InputStream从数据源读取固定长度数据到缓冲区,再把缓冲区数据写入OutputSteam中,循环直到数据传输完毕,然后把Socket关掉。OutputSteam也应该用缓冲BufferedOutputStream封装一下。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12030398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存