如何在与客户端建立 TCP 连接时建立 UDP 连接?
How to make a UDP Connection while having a TCP connection with the client?
我有一个简单的服务器,它有一个主线程并接受客户端,并为每个客户端启动一个新线程。所以在这个线程中我想与客户端建立另一个连接(UDP),但我很困惑。如果有 10 个 Threads(Clients) 运行 并且所有十个都尝试打开具有相同端口的 DatagramSocket,那将抛出 SocketBindException 对吗?那我该怎么做呢?
只需为每个 UDP 连接使用不同的端口即可。每个线程都可以传递两个值,即通过 TCP 连接的客户端和线程可用于与客户端连接的 UDP 端口,并且它将仅使用该端口。这样你就不会发生冲突,启动线程的方法知道哪个线程正在使用哪个 UDP 端口。
- 客户端通过 TCP 连接到服务器。
- 决定监听哪个UDP端口。将该信息发送到服务器
通过 TCP。
- 产生一个线程,绑定到 UDP 端口成为 UDP 服务器
- 服务器在 TCP 套接字上接收 UDP 端口信息。
- 生成一个接收端口信息的 UDP 线程。成为UDP
客户。
- UDP线程连接到UDP服务器(也是一个TCP
客户)。
如果 local 端口已经打开,绑定将失败,但是没有什么可以阻止您打开多个本地端口,每个工作线程一个。服务器仅向发送消息的远程 ip/port 发送回复,回复将转到原始发送线程。
如果服务器可能是第一个将 UDP 发送回客户端的,那么您必须在绑定后通过 TCP 通道将其发送到服务器(或选择一个端口号并明确绑定到它)。
如果UDP 通信是单向的,您可以在主线程中绑定一个UDP 端口并在所有工作线程中重新使用它。 UDP 是无连接的,因此不需要维护任何状态。
在向您的客户端发送 UDP 消息时,您的 TCP 服务器通过 UDP 套接字充当 UDP 发送方。没有UDP连接。
我有一个简单的服务器,它有一个主线程并接受客户端,并为每个客户端启动一个新线程。所以在这个线程中我想与客户端建立另一个连接(UDP),但我很困惑。如果有 10 个 Threads(Clients) 运行 并且所有十个都尝试打开具有相同端口的 DatagramSocket,那将抛出 SocketBindException 对吗?那我该怎么做呢?
只需为每个 UDP 连接使用不同的端口即可。每个线程都可以传递两个值,即通过 TCP 连接的客户端和线程可用于与客户端连接的 UDP 端口,并且它将仅使用该端口。这样你就不会发生冲突,启动线程的方法知道哪个线程正在使用哪个 UDP 端口。
- 客户端通过 TCP 连接到服务器。
- 决定监听哪个UDP端口。将该信息发送到服务器 通过 TCP。
- 产生一个线程,绑定到 UDP 端口成为 UDP 服务器
- 服务器在 TCP 套接字上接收 UDP 端口信息。
- 生成一个接收端口信息的 UDP 线程。成为UDP 客户。
- UDP线程连接到UDP服务器(也是一个TCP 客户)。
如果 local 端口已经打开,绑定将失败,但是没有什么可以阻止您打开多个本地端口,每个工作线程一个。服务器仅向发送消息的远程 ip/port 发送回复,回复将转到原始发送线程。
如果服务器可能是第一个将 UDP 发送回客户端的,那么您必须在绑定后通过 TCP 通道将其发送到服务器(或选择一个端口号并明确绑定到它)。
如果UDP 通信是单向的,您可以在主线程中绑定一个UDP 端口并在所有工作线程中重新使用它。 UDP 是无连接的,因此不需要维护任何状态。
在向您的客户端发送 UDP 消息时,您的 TCP 服务器通过 UDP 套接字充当 UDP 发送方。没有UDP连接。