簡體   English   中英

在C ++中用於TCP套接字的recv函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM