C++多线程socket程序传送文件

C++多线程socket程序传送文件,第1张

从你代码上看貌似是发送多行文本。我看了下有几个问题,char len = sendFile.tellg()

怎么能用char呢,char只能到128,看看你的数组大小4096,是128的n倍。还有貌似你的

readBytes = sendFile.get()返回的是‘\n’的ansci码吧,怎么可以作为send的参数呢。

还有你怎么不用read函数读取整个文本呢,干嘛要一行行读取?你这么发送很不安全的!

可以写个demo试一下啊,应该是可以的,socket接收到的消息只能被其中一个线程接收。线程1

和2

接受到的肯定不是同一个消息。会有先后之分。看你怎么控制。比如从接收的消息是abcd,那么这相当于一个资源。线程1和2在这里拿消息,拿到之后,socket里面就少了,比如线程1拿到ab,线程2拿到cd

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

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

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

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

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

public MyThread getFreeThread(){

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

}

public void finished(MyThread o){

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

}


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

原文地址: http://outofmemory.cn/tougao/11934083.html

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

发表评论

登录后才能评论

评论列表(0条)

保存