[問題] server socket 緩衝 相關問題

看板C_and_CPP作者 (凝時)時間3年前 (2020/08/19 15:58), 3年前編輯推噓2(209)
留言11則, 6人參與, 3年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) pthread? 問題(Question): 目前用char buffer[200];來儲存 我的server會在main function 1.開一個pthread處理socket 2.進入while迴圈利用scanf主動send訊息 而pthread則是會 1.read從client寄來的訊息 2.printf從client來的訊息 3.一讀到訊息就會send回傳訊息給client 4.重複以上步驟... 假設我一氣呵成輸入pizza回車 client就會收到pizza訊息 但是我慢慢輸入piz時 被client打斷 這時緩衝區似乎沒被清空(piz) 繼續輸入za的話client就會得到pizza訊息 想問在這個狀況下能否先將buffer區的piz讀出來 讓pthread在不妨礙main的情況下 輸出client的message之後 把piz讀出來 main可以繼續輸入za來完成pizza這個單字? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.244.217 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1597823902.A.6D3.html ※ 編輯: applejuice64 (42.73.244.217 臺灣), 08/19/2020 16:02:05

08/19 16:08, 3年前 , 1F
你用什麼當buffer?用istream的話有現成的istream::peek
08/19 16:08, 1F

08/19 16:19, 3年前 , 2F
目前只用c,char buff[200]
08/19 16:19, 2F

08/19 16:20, 3年前 , 3F
er... char array的話要不要清緩衝區不是你自己控制的?
08/19 16:20, 3F
※ 編輯: applejuice64 (42.73.244.217 臺灣), 08/19/2020 16:21:54 目前是主程式進入scanf的時候 文字打到一半(piz) 被pthread接收到的client訊息打斷 雖然緩衝區沒被清掉 繼續輸入za回車可以scanf完整的pizza 但是我想讓pthread的訊息干擾完介面之後 pthread輸出piz讓介面好看一點 ※ 編輯: applejuice64 (42.73.244.217 臺灣), 08/19/2020 16:26:48

08/19 19:50, 3年前 , 4F
pthread收到的東西存到一個結構體 等scanf結束在
08/19 19:50, 4F

08/19 19:50, 3年前 , 5F
把那個結構體印出來
08/19 19:50, 5F

08/20 07:22, 3年前 , 6F
取消掉緩衝區直接讀進 buf ,然後每次有接到訊息到時候
08/20 07:22, 6F

08/20 07:22, 3年前 , 7F
再把 buf 印出來應該也可以,不過這樣要自己處理倒退刪
08/20 07:22, 7F

08/20 07:22, 3年前 , 8F
除跟 enter 那些字元
08/20 07:22, 8F

08/20 23:40, 3年前 , 9F
你講的行為有點像ncurses
08/20 23:40, 9F

08/21 00:02, 3年前 , 10F
回車lul
08/21 00:02, 10F

08/22 12:05, 3年前 , 11F
回車…你在用打字機寫程式喔
08/22 12:05, 11F
文章代碼(AID): #1VFDkURJ (C_and_CPP)