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

标签 java multithreading file chat webcam

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

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

  • 假设一次允许的最大用户数为 100,我总共需要分配多少个线程?
  • 如何管理端口?我的意思是,分配、取消分配等
  • 我最初的猜测是,我将需要一个线程在客户端和服务器之间用于 session 文本聊天,1 个线程用于一对一文本聊天,每个启动网络摄像头的用户 1 个线程。每个一对一聊天有 1 个线程用于文件共享,n 线程用于 session 中的文件共享,其中 n 是一次连接的用户数

    最佳答案

    假设您使用 java 实现客户端,您可以为每个用户使用一个线程进行群聊,并为每个一对一连接使用一个线程,如果您想要 p2p 连接(为了安全,您可以通过服务器进行初始握手原因,然后以 p2p 模式进行)。

    如果您打算使用 websocket 和 web 客户端,则不能使用 p2p,因为浏览器只能启动 websocket 连接,而不能接受。要为每个客户端使用一个 channel ,您可以为传出数据包标记内容类型并对其进行适当解码。这个方案很容易在 netty 中实现,您可以在 netty 中将协议(protocol)实现放在 TCP\IP 套接字之上。此外,由于 netty 是异步的,您可以通过 NIO 获得一些速度改进

    关于java - 我需要为聊天客户端分配多少个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789134/

    相关文章:

    multithreading - Parallel For-Each 与 Scatter Gather in mule

    python - 关于 fit_generator()/fit() 和线程安全

    c# - 在 C# 上使用多线程的问题

    c++ - 相互比较文本文件的元素

    java - 获取仅包含 JSON 的日志

    java - shade插件生成的dependency-reduced-pom.xml的目的是什么?

    c - 你如何将从文件中读取的字符串拆分为C中的数组

    c - readdir() 32/64 兼容性问题

    java - 返回 java 数字数组

    java - 无法在 Java 中创建临时文件