Saj*_*ani 0 c sockets connection network-programming
我用这段代码从socket读取:
int n ;
char buffer[256];
n = read(newsockfd, buffer, 255);
if (n < 0)
{
error("ERROR reading from socket");
}
Run Code Online (Sandbox Code Playgroud)
如果必须读取的数据大于255字节(例如1000)必须发生哪些更改?
我知道改变char buffer[1000],我需要不同的解决方案.
只需从套接字读取几次,直到获得想要接收的所有数据.
例如,要接收1000个字节,它可能看起来像这样(成功时read返回读取的字节数):
int received = 0;
while (received < 1000) {
n = read(newsockfd, buffer, 255);
// error checking...
// do something with the partial data in "buffer"...
received += n;
}
Run Code Online (Sandbox Code Playgroud)
使用类似的东西:
char buffer[256];
memset(buffer, 0, sizeof(buffer));
char* pBuf = buffer;
int bytesLeft = sizeof(buffer) - sizeof(char);
while(bytesLeft > 0)
{
int n = read(newsockfd, pBuf, bytesLeft);
if (n < 0)
{
error("ERROR reading from socket");
break;
}
if(n == 0)
{
error("peer shutted down");
break;
}
pBuf += n;
bytesLeft -= n;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12495 次 |
| 最近记录: |