c - UDP 多客户端服务器基础

标签 c linux udp

我期待着实现这一目标:服务器从多个客户端接收到一个字符串(文件名),他必须从文件夹中获取该字符串,并通过从命令行定义的 bufferSize 将其返回给客户端。它必须通过 UDP 通信来实现。我熟悉 TCP 套接字,但我不知道如何获取 udp 连接的文件描述符,因为缺少接受。

所以我在考虑这个:在配置之后我在服务器中做了一个 while 循环,在那里我得到“某种描述符”,我将把它发送到一个新线程,这个线程知道将数据发送回哪里。 .. 有任何想法吗?

网上查了下,没有找到具体的解释。

最佳答案

您无法使用 UDP 建立连接;你用sendto()recvfrom()发送和接收消息。

因此服务器将在套接字上调用recvfrom();从接收到的数据中解包请求,执行适当的操作,然后使用 sendto() 将响应发送回接收请求的客户端。

客户端会调用sendto()将消息打包发送给服务器,然后调用recvfrom()获取响应。请注意,UDP 是一种不可靠的协议(protocol);无法保证每条消息都会送达。客户端必须实现超时以防服务器丢弃 UDP 请求。服务器也必须能够处理重复的请求。

关于c - UDP 多客户端服务器基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731924/

相关文章:

c - 对 libncurses 中函数的 undefined reference

python 'Connection reset by peer'

java - 在 UDP 上发送和接收序列化对象

c - opencv保存文件xml

c - C中二叉树内部和外部节点的表示

c - 如何在Makefile.am中指定多个源文件

linux - shell 脚本 : Quotes Around Variable with\$

c - 为什么这个函数接受 `const char*` 而不是 `char*` 作为参数?

linux - EC2 用户访问或文件访问问题?

udp - 在 Vagrant 和 VirtualBox Env​​ 中使用 `socat` 进行多播