無限ループを使用してTCPサーバーからデータを受信しています より高い優先度を持つループで他のタスクを同時に実行する必要があります 制御はrecv()
がTCPデータ。TCP関数recv()はループでは機能しません
while(1)
{
rdlen = read(fd1, buf, (sizeof(buf) - 1));
if (rdlen > 0)
{
buf[rdlen] = 0;
printf("%s",buf);
memset(buf, 0, strlen(buf));
}
if((numbytes=recv(sockfd, buf1, wGetLen, 0)) != -1)
{
printf("%s %d\n", buf1, numbytes);
memset(buf1, 0, strlen(buf1));
}
}
TCPがデータを受信するのを待たずに上記の操作を実行するにはどうすればよいですか?
https://stackoverflow.com/questions/15108122/recv -with-non-blocking-socket –
ソケットをノンブロッキングモードにしたり、 'select()'、 'poll()'などを使ってソケットから読み込もうとする前に利用可能なデータがあるかどうかを調べるソケット。 –
カーゴカルチャープログラミング: 'memset(buf1、0、strlen(buf1));'これは危険なナンセンスです、IMHO – wildplasser