同时在网络流上进行多发送和多接收

Posted

技术标签:

【中文标题】同时在网络流上进行多发送和多接收【英文标题】:Multi send and multi receive on networkstream at the same time 【发布时间】:2018-09-24 16:50:17 【问题描述】:

我正在开发一个应用程序 (Server_Client),它发送和接收消息并上传文件和许多..

上传文件:正在将文件分开发送到服务器。

主要问题:当客户端在上传文件时发送消息,服务器将在文件完成后读取消息。

如何在上传文件时发送消息,即使我使用线程问题仍然存在。

有什么我遗漏的东西以及如何实现这样的东西吗?

【问题讨论】:

您没有显示任何代码或提供有关您的实施的详细信息。但是您要问的是如何拥有两个并发数据流,一个用于文件传输,一个用于消息传递。为此,您要么需要两个套接字,要么需要一个允许多路复用的网络协议。 这正是我要问的 每个客户端都应该有两个套接字,而服务器也应该为每个客户端提供两个套接字? 【参考方案1】:

简单的多线程解决方案存在一个常见问题。

    保留工作线程池,用于处理传入请求; 使用一个专用的监听线程,监听传入的请求; 收到请求后,获取一个工作线程并为其处理上传数据; 专用的侦听器线程将返回到同一套接字上的侦听

这样,将立即收听下一条消息,而不是在上一个请求的文件上传结束时收听。

【讨论】:

如果我使用相同的套接字,处理上传的线程也会读取文件之间的消息 @yazan:只有一个线程可以听。一旦它收到请求,它就会分配一个工作线程来处理上传并返回在同一个套接字上监听请求。

以上是关于同时在网络流上进行多发送和多接收的主要内容,如果未能解决你的问题,请参考以下文章

UDP和多线程服务器

关于进程,线程,多进程和多线程的网络编程

计算机网络 - 物理层

互联网协议 — Ethernet — 网络数据报文的传输方式

互联网协议 — Ethernet — 网络数据报文的传输方式

网络通信中组播和多播的联系,区别分别是啥?