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

作者: applejuice64 (凝時)   2020-08-19 15:58:20
開發平台(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這個單字?
作者: Killercat (殺人貓™)   2020-08-19 16:08:00
你用什麼當buffer?用istream的話有現成的istream::peek
作者: applejuice64 (凝時)   2020-08-19 16:19:00
目前只用c,char buff[200]
作者: Killercat (殺人貓™)   2020-08-19 16:20:00
er... char array的話要不要清緩衝區不是你自己控制的?
作者: Davinais (水靈流喵)   2020-08-20 07:22:00
取消掉緩衝區直接讀進 buf ,然後每次有接到訊息到時候再把 buf 印出來應該也可以,不過這樣要自己處理倒退刪除跟 enter 那些字元
作者: longlongint (華哥爾)   2020-08-20 23:40:00
你講的行為有點像ncurses
作者: tomsawyer (安安)   2020-08-21 00:02:00
回車lul
作者: HMKRL (HMKRL)   2020-08-22 12:05:00
回車…你在用打字機寫程式喔

Links booklink

Contact Us: admin [ a t ] ucptt.com