1
我編寫了一個簡單的應用程序,它可以在C中的兩臺計算機之間提供連接。我在同步讀寫套接字時遇到了問題。我能夠檢查用戶是否按getch()
按任意鍵,但我不知道如何檢查它是否在套接字緩衝區中。當我使用read()
函數時,它會等待,直到成爲套接字。我想檢查套接字緩衝區,然後使用read()
,但我找不到任何函數/標誌來檢查此。也許是這個問題的不同解決方案,也許使用另一個線程來閱讀?如何檢查套接字是否可用?
我編寫了一個簡單的應用程序,它可以在C中的兩臺計算機之間提供連接。我在同步讀寫套接字時遇到了問題。我能夠檢查用戶是否按getch()
按任意鍵,但我不知道如何檢查它是否在套接字緩衝區中。當我使用read()
函數時,它會等待,直到成爲套接字。我想檢查套接字緩衝區,然後使用read()
,但我找不到任何函數/標誌來檢查此。也許是這個問題的不同解決方案,也許使用另一個線程來閱讀?如何檢查套接字是否可用?
您可以使用sys/ioctl.h
文件的方法ioctl
:
#include <sys/ioctl.h>
...
int count;
ioctl(fd, FIONREAD, &count);
參考信用:This Answer
一個超時的'選擇()'函數是一種方式來獲得當數據到達套接字上的通知。 – mathematician1975
您需要嘗試建立Async套接字。請檢查這個http://stackoverflow.com/questions/2331869/what-are-async-sockets – GingerJack
@Mautokar:你應該至少提供一個示例代碼開始。 – perror