相关疑难解决方法(0)

在套接字库中调用recv时,我的recv缓冲区应该有多大

我对C中的套接字库有几个问题.这是我在问题中引用的一段代码.

char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
Run Code Online (Sandbox Code Playgroud)
  1. 如何确定recv_buffer的大小?我使用3000,但这是任意的.
  2. 如果recv()收到的数据包大于我的缓冲区会怎么样?
  3. 我怎么知道我是否收到了整个消息而没有再次调用recv并且在没有任何东西被接收时让它永远等待?
  4. 有没有办法让缓冲区没有固定的空间,这样我可以继续添加它而不用担心空间不足?也许strcat用于连接recv()缓冲区的最新响应?

我知道这里有很多问题,但我非常感谢任何回复.

c sockets buffer recv

126
推荐指数
4
解决办法
10万
查看次数

前往:如何接收完整的UDP数据报

我的问题:使用net.Read ...方法仅复制给定字节数组或切片大小的字节数。我当然不想每次都分配64 kB的最大UDP数据报。

有没有办法确定数据报的大小(在数据报标头中)还是再次读取直到完全读取数据报?

udp go

5
推荐指数
1
解决办法
1343
查看次数

标签 统计

buffer ×1

c ×1

go ×1

recv ×1

sockets ×1

udp ×1