看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) winsock 問題(Question): 1.想問控制碼要輸入甚麼 EX:上下左右 2.如何顯示不要亂碼 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/Ei42rD0L 補充說明(Supplement): 我用winsock連線到ptt 開了兩條thread 一條傳資料 一條收資料 目前我可以打自己帳號密碼登入 我自己測的結果 英文可以直接傳送 Enter則傳送"\x0d\x0a" \x0A is the escaped hexadecimal Line Feed. The equivalent of \n. \x0D is the escaped hexadecimal Carriage Return. The equivalent of \r. 目前到這邊就卡住了 所以想請問 1.想問控制碼要輸入甚麼 EX:上下左右 2.如何顯示不要亂碼 我有嘗試使用putty和wireshark看封包內容 但是太難看懂了 http://imgur.com/4lZSo5G 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.160.116 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464245090.A.A4C.html
Ebergies: http://goo.gl/8pgYsR 05/26 15:53
Ebergies: Implement 完應該就能看到正確的 layout 了 05/26 15:54
Caesar08: 幫你推一下。希望之後能回饋一下本板 05/26 23:42
bjk: 樓上大大要一起研究嗎 哈 05/27 00:09
uranusjr: 其實特殊字元只有這些而已 http://d.pr/1d6kF 05/27 00:17
uranusjr: 上下左右 pgup pgdn home end delete backspace 05/27 00:17
uranusjr: 不要亂碼的話就是要用 Big 5 Extended, 轉 Unicode 表 05/27 00:19
uranusjr: 在這裡 http://d.pr/1crWn 05/27 00:20
Caesar08: 其實我手有點癢了 XD 05/27 00:21
Caesar08: 用putty的話,big5要去bbs@ptt.cc;utf8要去bbsu@ptt.cc 05/27 10:51
我剛剛發現如果移除色彩控制馬就會比較好 template<typename T> void removeSubstrs3(basic_string<T>& s, const basic_string<T>& p, const basic_string<T>& p2) { basic_string<T>::size_type n = p.length(); for (basic_string<T>::size_type i = s.find(p); i != basic_string<T>::npos; i = s.find(p)) { basic_string<T>::size_type i2 = s.find(p2); s.erase(i, i2-i+1); } } template<typename T> void removeSubstrs2(basic_string<T>& s) { int n=3; for(int i=0;i<n;i++) { //如果含有色彩控制碼 removeSubstrs3(s,string("\x1b["),string("m")); } } ※ 編輯: bjk (118.168.236.12), 05/27/2016 15:02:20
Caesar08: C++11 regex ESC\\[(\\d+;)*(\\d+)?m ESC=ascii code27 05/27 15:26
Caesar08: 配合regex_replace,就可以全弄掉了 05/27 15:27
Caesar08: 經過稍微研究,用ssh配合Cursor Control,就不用自己寫 05/27 15:34
Caesar08: 連線的部分。 05/27 15:34
我在pcman裡面的程式碼找到上下左右 /* const char* CKeyMap::default_left ="\x1bOD"; const char* CKeyMap::default_right ="\x1bOC"; const char* CKeyMap::default_up ="\x1bOA"; const char* CKeyMap::default_down ="\x1bOB"; */ ※ 編輯: bjk (118.168.236.12), 05/27/2016 16:09:30
bjk: 不用自己寫連線 是說不用socket嗎 05/27 16:10
bjk: winsock 05/27 16:10
Caesar08: 是,不過好像有其他問題要考慮... 05/27 16:11
bjk: 哈~ 05/27 17:13
bjk: bbs@ptt.cc bbsu@ptt.cc 這兩個我連不上 05/27 21:02
uranusjr: 上面這兩個是 SSH 喔, 不能直接用 winsock 走 telnet 05/27 21:58
bjk: 了解~~ 05/28 09:28
Caesar08: 為什麼飛馬那邊的編碼要用big5呢... 05/29 17:07
bjk: 傳過來的資料好像就是big5 05/29 23:24
Caesar08: 我是連utf8,但飛馬的畫面卻是big5,但之後的又變回utf8 05/30 00:07
bjk: 要怎麼知道是哪一種編碼呢 05/30 00:54
char recvbuf[DEFAULT_BUFLEN]; iResult = recv(*pConnectSocket, recvbuf, recvbuflen, 0); 我是直接這樣收進來就是中文字 沒有處理編碼 ※ 編輯: bjk (118.168.236.12), 05/30/2016 00:55:35
Caesar08: 看binary格式跟實際的文字 就可以知道了 05/30 00:55
holishing: 因為程式碼就是 Big5 寫的啊..... (ref: pttbbs.conf 10/12 16:51