看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
Killercat: 你用什麼當buffer?用istream的話有現成的istream::peek08/19 16:08
applejuice64: 目前只用c,char buff[200]08/19 16:19
Killercat: er... char array的話要不要清緩衝區不是你自己控制的?08/19 16:20
※ 編輯: 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
Killercat: pthread收到的東西存到一個結構體 等scanf結束在 08/19 19:50
Killercat: 把那個結構體印出來 08/19 19:50
Davinais: 取消掉緩衝區直接讀進 buf ,然後每次有接到訊息到時候 08/20 07:22
Davinais: 再把 buf 印出來應該也可以,不過這樣要自己處理倒退刪 08/20 07:22
Davinais: 除跟 enter 那些字元 08/20 07:22
longlongint: 你講的行為有點像ncurses 08/20 23:40
tomsawyer: 回車lul 08/21 00:02
HMKRL: 回車…你在用打字機寫程式喔 08/22 12:05