Java 我需要为聊天客户端分配多少线程?

Java 我需要为聊天客户端分配多少线程?,java,multithreading,file,chat,webcam,Java,Multithreading,File,Chat,Webcam,我正在创建一个聊天客户端,它将允许用户使用他们的网络摄像头和发送他们的视频。这是一个基于局域网的软件。没有语音聊天,只有视频和文字 此外,除了群组聊天,还可以进行一对一的聊天,使用户可以使用网络摄像头。会议聊天中没有网络摄像头。还有文件共享 假设一次允许的最大用户数为100,我总共需要分配多少个线程 如何管理端口?我的意思是,分配、取消分配等 我最初的猜测是,我需要一个线程在客户端和服务器之间进行会议文本聊天,一个线程用于一对一文本聊天,每个启动网络摄像头的用户一个线程。每个一对一聊天室1个线程

我正在创建一个聊天客户端,它将允许用户使用他们的网络摄像头和发送他们的视频。这是一个基于局域网的软件。没有语音聊天,只有视频和文字

此外,除了群组聊天,还可以进行一对一的聊天,使用户可以使用网络摄像头。会议聊天中没有网络摄像头。还有文件共享

  • 假设一次允许的最大用户数为100,我总共需要分配多少个线程
  • 如何管理端口?我的意思是,分配、取消分配等


    我最初的猜测是,我需要一个线程在客户端和服务器之间进行会议文本聊天,一个线程用于一对一文本聊天,每个启动网络摄像头的用户一个线程。每个一对一聊天室1个线程用于文件共享,每个会议室n个线程用于文件共享,其中n是一次连接的用户数

    假设使用java实现客户端,如果需要p2p连接,每个用户可以使用一个线程用于组聊天,每个一对一连接使用一个线程(出于安全原因,您可以通过服务器进行初始握手,然后在p2p模式下继续)


    如果您计划使用websocket和web客户端,则不能使用p2p,因为浏览器只能启动websocket连接,但不能接受。要为每个客户端使用一个通道,您可以为传出的数据包标记内容类型并对其进行适当解码。此方案在netty中易于实现,您可以将协议实现置于TCP之上\IP套接字。此外,由于netty是异步的,您可以通过NIO获得一些速度改进。是否会有一个中央服务器来处理所有事务,或者每个客户端都连接到其他客户端?@SotiriosDelimanolis将有一个中央服务器来侦听客户端连接,保留一个包含所有连接端口的
    向量er连接,将创建一个线程,并将
    向量
    传递给该线程。然后,新创建的线程将发送的消息广播到所有连接的套接字。因此,基本上,它是一个集中式系统:)我预计每个客户端最多需要3个线程;一个用于侦听传入流量,一个用于处理传出流量,另一个用于呈现客户端。当然,这只涉及客户机,而不是服务器。服务器可能还可以使用三个线程进行管理;一个用于监听所有客户端通信,一个用于调度,一个用于处理服务器逻辑(卫生、授权等)@Haz和三个端口,一个用于聊天,一个用于文件IO,一个用于网络摄像头?:)如果您的服务器能够区分不同类型的流量,那么我认为您应该能够为所有流量使用一个端口。监听一个端口是阻塞的,至少在常规的JavaSocket API中是这样,所以如果监听多个端口,就需要多个线程。