我很困惑一些UDP套接字编程问题

时间:2011-05-07 21:48:48

标签: java sockets networking udp

  1. 如果将clientSocket和serverSocket都更改为“mySocket”会发生什么?

  2. 客户端是否可以在不知道服务器的IP地址和/或端口号的情况下向服务器发送段?

  3. 多个客户端可以使用服务器吗?

  4. 从我的笔记,第20页:http://www.cs.ucc.ie/~cjs/teach/cs2505/02-app-layer-b.pdf。有点与这些混淆。

    我假设如果你将client和serverSocket都更改为mySocket,那么什么都不会发生,因为它只会是一个变量名更改(我假设)。

    我认为客户端无法在不知道IP地址/端口号的情况下发送消息?

    多个客户端无法使用服务器,因为这需要线程化?

1 个答案:

答案 0 :(得分:3)

(1)由于除了问题中的问题之外我没有看到对mySocket的引用,我会说你的回答是正确的。

(2)地址/端口显然是必要的。然而,这可能是一个棘手的问题,因为客户端可以在套接字上调用connect()。使用UDP,connect()内核会跟踪调用中作为套接字对等方传递的地址。然后套接字可以只调用write()或send()而不必使用sendto()。尽管如此,调用connect仍然需要首先使用地址/端口,以便知道他们得到了什么。

(3)UDP中没有“连接”。许多客户端可以发送到服务器。服务器可以从其recvfrom获取各个客户端的地址,然后转向并在其sendto中使用该地址。