recv

    1熱度

    1回答

    TCP可以任意合併和拆分數據包。因此,假設我這樣做,例如,這樣的電話: `recv(sock, buf, 15, 0)` 但此時此刻只有5字節的數據立即可用 - 威爾recv()塊,直到15字節的數據是可用的,或將我只能得到5字節? 我這麼問是因爲我想知道如果我能讀,例如uint32_t只是這樣(假設i是uint32_t類型的變量): if(recv(sock, &i, sizeof(uint

    0熱度

    1回答

    我有一個模塊接收兩部分的數據。首先是一個無符號整數,表示接下來將要跟隨的數據的長度。然後是數據本身。我這樣做如下無限循環 unsigned int z; struct kvec vec; struct msghdr msg; while(1) { memset(&vec, 0, sizeof(vec)); memset(&msg, 0, sizeof(msg));

    0熱度

    1回答

    標誌MSG_WAITALL可用於recv,它要求recv阻塞,直到滿足完整請求。這意味着recv將不會返回,直到收到儘可能多的數據(由參數len指定),除非發生錯誤或連接已關閉。 爲什麼這樣的標誌不適用於send?我認爲這將是非常有用的發送(send不會返回,直到主叫方想發送的所有字節已交給TCP發送緩衝區)

    0熱度

    1回答

    發送的所有數據我真的不知道這是否是某種延遲的網絡,我的電腦,或其他什麼,我很新的套接字編程,並已努力使這項工作了一段時間,實現一個簡單的框架,以緩解我的課將來的項目我的工作,我在我有問題使用這些功能: void TCPSocket::send(const std::string& message, int flags) { if (isListening || !isConnected

    0熱度

    1回答

    假設下面的代碼(爲簡單起見,我省略了必要的錯誤處理): recv(sockfd, NULL, 0, MSG_PEEK); recv(sockfd, buff, bufflen, 0); 在這種情況下,我可以肯定的是,第一次調用recv後整個數據報已經收到並因此第二個電話recv不會阻止? 或者它可以發生,如果IP拆分數據報,第一recv回報,只要該數據報的任何部分被接收,而第二recv將阻塞

    1熱度

    1回答

    我想學習鉤子,並且只想鉤住.exe的send/recv函數。 我建設項目作爲一個.dll文件,然後將其注入到.EXE 現在我的問題是我堅持。 我能夠順利地找到地址recv函數,接下來我想查看通過接收數據包.. 小指南請在下一步做什麼.. 這是我的.cpp #include <windows.h> #include <stdio.h> #include <stdlib.h> #include

    2熱度

    2回答

    如果一個C socket的recvmsg()有一個隊列,我怎麼知道有多少項目在隊列中積壓? 我的問題是,我從recvmsg()收到的東西后,代碼的速度有時慢於發送到recvmsg()的數據的速度,這會在邏輯上導致隊列?如果隊列變得太大會發生什麼? 例如,如果這是我的recv()代碼: while (recvmsg(SocketA,...) > 0) { ... ...some

    0熱度

    1回答

    我不能得到的recv數據() 我想要的數據,在表單字段的用戶輸入 代碼: def recvall(self, conn): BUFF_SIZE = 4096 # 4 KiB data = "" while True: packet = conn.recv(BUFF_SIZE).decode('utf-8') data += packet

    0熱度

    2回答

    我有一個TCP處理數據流。它一次只需要4096個字節,但我需要一種方法在recv之前找出整個套接字的大小。這樣我就可以確定在套接字切換之前套接字將被讀取多少次。它也會通知這是這個套接字的最後一個recv,所以我可以在選擇切換到另一個套接字之前做一些事情。 def handle_tcp(self, sock, remote): fdset = [sock, remote] whi

    0熱度

    1回答

    在阻塞套接字上,可以在對recv()的調用中標記MSG_WAITALL,並將套接字選項SO_RCVTIMEO 與套接字上的setsockopt()調用一起使用? 我在這裏的目標是要麼接受一個完整的郵件,或超時/錯誤...