[英]recv function for TCP socket in C++
我是套接字編程的新手。 我有一個用C ++編寫的客戶端應用程序,用於連接相機。 然后Camera以0-1460之間的塊為單位發送幀數據包。我已經使用過recv函數來接收數據包。 我看到了太多問題,其中明確提到recv函數返回接收到的字節,但是在我的情況下,recv函數返回在recv函數的第3個參數(即len)中寫入的值。 無論如何,我可以通過它們找到收到的實際字節。
我什至嘗試使用char *,但是那甚至行不通。
所以,任何人都可以告訴我解決方案,任何幫助都將是可貴的。 預先感謝
char *buf = new char[1461];
int bytes = recv(sock, buf, 2000, 0);
printf("%d", bytes);
始終打印2000。因此,在buf中的有效字節之后,它們是未知字節,從而導致意外的Image。
首先,您的代碼有一個錯誤(導致未定義的行為)。 您已分配1461字節,但您嘗試讀取的內容不止於此:
它應該像這樣:
vector<char> buf(5000); // you are using C++ not C
int bytes = recv(sock, buf.data(), buf.size(), 0);
std::cout << bytes;
其次,結果符合預期。 相機發送的數據超過2000字節,因此,讀取的字節數覆蓋整個請求的大小並不感到奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.