UDP 客户端/服务器发送数据但无法读取
UDP client/server send data but can't read
我正试图通过LAN将数据从一个应用程序发送到另一个,我可以发送数据(sendto返回预期的字节数),但我无法读取数据。我知道这一点,因为我使用select测试读取操作,结果返回false。以下是用于创建客户端和服务器的代码:
创建套接字
sock_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
绑定到端口:
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = INADDR_ANY;
bind(sock_fd, (struct sockaddr*)&addr, sizeof(sockaddr));
将数据发送到我使用的另一台机器:
o_addr.sin_family = family;
o_addr.sin_port = port;
o_addr.sin_addr.s_addr = inet_addr("other_side_ip_address_here");
uint32 sent;
sent = sendto(sock_fd, data, length, 0, (struct sockaddr*)&o_addr, sizeof(struct sockaddr))
从我使用的另一台机器读取数据:
struct sockaddr_in o_addr;
uint32 read;
int l = sizeof(struct sockaddr);
read = recvfrom(sock_fd, data, length, 0, (struct sockaddr*)&o_addr, &l)
为了测试是否有一些数据要读取,我使用
int r;
struct timeval tv = { 0, 0 };
fd_set fds;
FD_ZERO(&fds);
FD_SET(sock, &fds);
r = select(sock + 1, &fds, NULL, NULL, &tv);
if (FD_ISSET(sock, &fds))
return true;
return false;
插座处于块模式,测试在两台机器中进行。感谢关注
我的猜测是,对接收套接字的bind
调用由于某种原因而失败。尝试添加一些错误检查。
相关文章:
- 如何在ros2中从rosbag2读取数据
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 使用C++从磁卡读卡器MT188读取数据
- HDF5 简单读取数据集失败
- 嵌套结构,从由空行分隔的文件中读取数据
- 不要从输入队列套接字读取数据
- 从文件中读取数据,操作员>>
- 如何从excel文件中读取数据并存储到变量中?
- C++:从文件中读取x y数据会产生无限循环吗
- 无法通过FT232RL读取数据
- 如何从QNetworkReply读取数据?
- C++ 逐行从文件(包含空格)读取数据
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- 从多个 tcp 连接读取数据
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- Qt TCP服务器不从客户端读取数据
- 累积从 C++11 中的文件中读取数据的整数
- 从 txt 文件中读取数据的最简单方法
- 从 txt 文件中读取数据的 Getline