gpt4 book ai didi

c - 如何将recvfrom()中的缓冲区值保存到数组中?

转载 作者:行者123 更新时间:2023-11-30 14:34:39 26 4
gpt4 key购买 nike

我正在研究 BSD 套接字,并且使用这个函数

int recvfrom( int socket , void *buffer , size_t nbytes , int flags , struct sockaddr *sender , int *addrlen)

但在服务器中打印消息之前,我想将缓冲区的值保存在字符数组中并进行一些操作。怎么做?

编辑:示例

缓冲区存储消息“Hello”,我的数组应该类似于 arr[]={'h','e','l','l','o'}

最佳答案

recvfrom()函数

int recvfrom( int socket , void *buffer , size_t nbytes ,
int flags , struct sockaddr *sender , int *addrlen);

允许用户从 UDP 套接字接收数据。成功时(返回值 > 0),它返回接收到的字节数,最多将 nbytes 字节写入 buffer 指向的内存区域。发起者的地址及其长度也由函数分别写入调用者提供的 senderaddrlen 指针中。

因此,为了在 char 数组中包含传入字节(字符是字节!),您只需将其作为缓冲区参数传递给 recvfrom 即可。

#define MAX_RECV_BUF_LEN 100

char arr[MAX_RECV_BUF_LEN + 1];
struct sockaddr senderAddr;
int addrLen, res;

res = recvfrom( yourSocketDescr , arr, MAX_RECV_BUF_LEN, yourFlags , &senderAddr, &addrLen);
if ( res > 0 )
{
arr[res] = 0; // Add a string terminator. Useful only if you expect 'printable' data

// ... some operations
}
/* else... manage errors */

关于c - 如何将recvfrom()中的缓冲区值保存到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58882559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com