如何与客户端建立TCP连接时建立UDP连接?

时间:2015-03-22 12:29:40

标签: java tcp udp

我有一个简单的服务器,它有一个主线程并接受客户端,并为每个客户端启动一个新线程。所以在这个线程中我想与客户端建立另一个连接(UDP),但我很困惑。如果有10个线程(客户端)正在运行,并且所有10个尝试使用相同的端口打开DatagramSocket,那么会抛出SocketBindException吗?那我怎么能这样做呢?

4 个答案:

答案 0 :(得分:2)

  • 客户端通过TCP连接到服务器。
  • 决定要侦听的UDP端口。将该信息发送到服务器 通过TCP。
  • 生成一个线程,绑定到UDP端口成为UDP服务器

  • 服务器在TCP套接字上接收UDP端口信息。
  • 生成接收端口信息的UDP线程。成为UDP 客户端。
  • UDP线程连接到UDP服务器(也是TCP) 客户端)。

答案 1 :(得分:1)

为每个UDP连接使用不同的端口。每个线程可以传递两个值,客户端通过TCP连接,线程可以用来连接客户端的UDP端口,它只使用该端口。这样你就不会发生冲突,启动线程的方法知道哪个线程正在使用哪个端口用于UDP。

答案 2 :(得分:0)

如果本地端口已经打开,则绑定将失败,但没有什么可以阻止您打开多个本地端口,每个工作线程一个端口。服务器只是将回复发送到发送消息的远程ip / port,回复将转到原始发送线程。

如果服务器可能是第一个将UDP发送回客户端的服务器,则必须在绑定后检索本地端口并通过TCP通道将其发送到服务器(或选择端口)时遇到额外的麻烦提前编号并明确约束它。

如果UDP通信是单向的,则可以在主线程中绑定UDP端口,并在所有工作线程中重用它。 UDP是无连接的,因此没有需要维护的状态。

答案 3 :(得分:0)

在向客户端发送UDP消息时,TCP服务器通过UDP套接字充当UDP发送方。没有UDP连接这样的东西。