Tag: 数据报

UDP – 以块的forms从队列中读取数据

我正在使用UDP(在C中)实现一个小应用程序。 服务器以给定数量的块(例如100字节/调用)向客户端发送来自给定文件的数据。 客户端下载文件并将其保存在某处。 问题是客户端可以接收一个参数,说明要读取/调用多少字节。 我的问题是当服务器发送100字节/调用,并且客户端设置为只读15字节/调用。 其他85个字节丢失,因为消息已从UDP队列中删除。 有没有办法在块中读取这些消息而不将它们从队列中删除,直到它们被完全读取?

如何在没有网络的情况下通过wifi发送原始数据包?

我试图在两个覆盆子pi之间通过wifi发送一些数据,而不用它们连接到网络。 我希望它的工作方式类似于信标和探测请求的工作方式,其中广播可以从无线接口发出。 我要发送的数据将是设备的主机名和数据包发送的时间。 我一直试图在过去几天解决这个问题,但如果没有它们在同一个网络上,我就无法工作。 有人能指出我正确的方向吗? 我对于我使用的语言并不太感兴趣。 我一直在尝试使用python和C,但收效甚微。

如何使用SOCK_DGRAM制作双向unix域套接字?

我正在尝试编写一个简单的Unix数据报服务器/客户端,并且遇到了一些问题。 我想要的是一个服务器,它监听数据报套接字并将收到的每封邮件的回复发送给原始发件人。 我决定首先尝试使用socat作为“服务器”并在C中编写客户端。我正在运行这样的socat: socat UNIX-DGRAM:/tmp/test.socket,fork EXEC:echo 根据我的理解,这应该监听/tmp/test.socket并回复使用相同字符串收到的所有内容? 然后我有一个看起来像这样的客户端程序(为清楚起见,删除了错误检查): int s = socket(AF_UNIX, SOCK_DGRAM, 0); struct sockaddr_un sa; sa.sun_family = AF_UNIX; strcpy(sa.sun_path, “/tmp/test.socket”); const char *data = “Testing data”; int err = sendto(s, data, strlen(data), 0, (struct sockaddr *)(&sa), sizeof(struct sockaddr_un)); printf(“Sent!\n”); unsigned char *buffer = malloc(BUFFER_LENGTH); struct sockaddr_storage recv_sa; int recv_sa_len = 0; int recv_len […]