java - 我困惑的一些UDP socket编程问题

标签 java sockets networking udp

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

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

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

根据我的笔记,第 20 页:http://www.cs.ucc.ie/~cjs/teach/cs2505/02-app-layer-b.pdf .对这些有点困惑。

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

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

多个客户端不能使用服务器,因为那需要线程?

最佳答案

(1) 由于除了问题中的那个之外,我没有看到任何对 mySocket 的引用,所以我会说你的答案似乎是正确的。

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

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

关于java - 我困惑的一些UDP socket编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5924209/

相关文章:

java - 如何告诉 Android studio 某个方法没有返回

java - 创建不同的 ImageView 对象 - 不同的时间

Java 代理 - 无法接收来自主机/套接字问题的响应

c - 接收所有套接字(直到消息结束符号),C

c# - 检索进程网络使用情况

c++ - UDP 在第一次后停止发送

java - java编译器是否理解if语句中给出的条件?

java - 程序打印元音最多的单词

linux - 什么是 "internet protocol, pseudo protocol number"?

postgresql - 为 Postgresql 打开端口