gpt4 book ai didi

java - 发送文件时在同一个套接字连接上发送消息

转载 作者:行者123 更新时间:2023-12-02 02:34:17 24 4
gpt4 key购买 nike

我的应用可以在服务器客户端之间传输文件和消息。服务器是多线程的,客户端只需连接到它即可。在文件传输过程中,如果发送者发送一条消息,该消息将作为文件字节被消耗。

我不想打开更多端口,

Can I establish a new connection to the server for file transfer? Or I should open a separate port for files.

我不想在传输文件时阻止通信。

该问题被标记为重复,但事实并非如此,我正在尝试同时发送消息和文件,而不是一一发送。我已经可以一一接收文件了。再读一遍。

此外,由于服务器是多线程的,我无法再次调用 server socket.accept() 来接收新连接中的文件,因为监听传入的主线程将尝试处理它。有办法解决吗?

最佳答案

在我看来,尝试将文件和消息复用到同一个套接字流上是XYProblem .

我不是这方面的专家,但听起来你应该阅读一些有关“端口与套接字”的文章。我的理解是 ip:port 是监听服务的地址。一旦客户端连接,服务器将打开一个套接字来实际进行通信。

诀窍是每次客户端连接时,都会生成一个新线程(在新套接字上)来处理请求。这会立即释放主线程以返回监听新连接。您的文件传输和消息可以进入同一端口,但每个新请求都将获得自己的套接字和服务器线程 --> 不会发生冲突!

请参阅此问题以了解 java 实现: Multithreading Socket communication Client/Server

关于java - 发送文件时在同一个套接字连接上发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46631321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com