Re: [問題] socket接收 與 multithread 問題

看板C_and_CPP (C/C++)作者 (purpose)時間15年前 (2010/10/07 02:22), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
: 而server 送給 client 接收這段 : 查詢封包後確實該server程式有送東西出來(一千多個bytes) : 但是使用 numbytes = recv(sockClient, (char *) buf, sizeof(buf), 0); : 似乎沒收到資料, : 該如何實作才能正確接收到資料呢? 有收到資料。 對方 (Server端) 的行為很簡單。 初始設定 char *send_buf = malloc(1600); int send_size = 1460; 在 accept 你客戶端的連線後,接收你的第一筆整數值,判斷出該值為 17 時, 則對方會做一次資料傳送給你客戶端,送完他就會 closesocket 也就是 send(sock, send_buf, 1460, 0); 檢驗方法很簡單,你先把你的接收 buffer 全部設值為 -1,檢查接受完是不是變了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.143.12

10/07 02:22, , 1F
修正 send(sock, send_buf, send_size, 0);
10/07 02:22, 1F

10/07 03:09, , 2F
*buf=-1 若有改變 則繼續送17收 --> loop ? 來算時間
10/07 03:09, 2F
我不知道你要算的所謂時間,其定義到底是什麼。 當你有從 Server 端收到資料時,對方會關閉此次連線,你的 Client 端程式要重新 呼叫 connect() 函數,等對方 accept(),也就是再次建立與你的連線後,再去送一次 17 使對方知道要進行傳送資料的測試並且再次 send() 一筆 1460 大小的資料給你。 Server 程式運作流程就是這樣,我從執行檔反組譯觀察出來的。 告訴你流程了,你想幹嘛就幹嘛吧

10/07 18:54, , 3F

10/07 18:54, , 4F
欄封包是出現這個
10/07 18:54, 4F
我不知道你貼這是什麼東西,也不知道什麼欄封包是什麼 -- 我嘛閱讀能力真的很差,如果你有要詢問我些什麼,麻煩把問題描述詳細,把可能有幫助 的所有資訊盡力提供出來。 ※ 編輯: purpose 來自: 124.8.131.140 (10/07 19:10)
文章代碼(AID): #1ChBvINz (C_and_CPP)
文章代碼(AID): #1ChBvINz (C_and_CPP)