[問題] winsock 連線 ptt

看板C_and_CPP作者 (Up2u)時間9年前 (2016/05/26 14:44), 9年前編輯推噓3(3024)
留言27則, 5人參與, 最新討論串1/1
開發平台(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

05/26 15:53, , 1F
05/26 15:53, 1F

05/26 15:54, , 2F
Implement 完應該就能看到正確的 layout 了
05/26 15:54, 2F

05/26 23:42, , 3F
幫你推一下。希望之後能回饋一下本板
05/26 23:42, 3F

05/27 00:09, , 4F
樓上大大要一起研究嗎 哈
05/27 00:09, 4F

05/27 00:17, , 5F
其實特殊字元只有這些而已 http://d.pr/1d6kF
05/27 00:17, 5F

05/27 00:17, , 6F
上下左右 pgup pgdn home end delete backspace
05/27 00:17, 6F

05/27 00:19, , 7F
不要亂碼的話就是要用 Big 5 Extended, 轉 Unicode 表
05/27 00:19, 7F

05/27 00:20, , 8F
05/27 00:20, 8F

05/27 00:21, , 9F
其實我手有點癢了 XD
05/27 00:21, 9F

05/27 10:51, , 10F
用putty的話,big5要去bbs@ptt.cc;utf8要去bbsu@ptt.cc
05/27 10:51, 10F
我剛剛發現如果移除色彩控制馬就會比較好 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

05/27 15:26, , 11F
C++11 regex ESC\\[(\\d+;)*(\\d+)?m ESC=ascii code27
05/27 15:26, 11F

05/27 15:27, , 12F
配合regex_replace,就可以全弄掉了
05/27 15:27, 12F

05/27 15:34, , 13F
經過稍微研究,用ssh配合Cursor Control,就不用自己寫
05/27 15:34, 13F

05/27 15:34, , 14F
連線的部分。
05/27 15:34, 14F
我在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

05/27 16:10, , 15F
不用自己寫連線 是說不用socket嗎
05/27 16:10, 15F

05/27 16:10, , 16F
winsock
05/27 16:10, 16F

05/27 16:11, , 17F
是,不過好像有其他問題要考慮...
05/27 16:11, 17F

05/27 17:13, , 18F
哈~
05/27 17:13, 18F

05/27 21:02, , 19F
bbs@ptt.cc bbsu@ptt.cc 這兩個我連不上
05/27 21:02, 19F

05/27 21:58, , 20F
上面這兩個是 SSH 喔, 不能直接用 winsock 走 telnet
05/27 21:58, 20F

05/28 09:28, , 21F
了解~~
05/28 09:28, 21F

05/29 17:07, , 22F
為什麼飛馬那邊的編碼要用big5呢...
05/29 17:07, 22F

05/29 23:24, , 23F
傳過來的資料好像就是big5
05/29 23:24, 23F

05/30 00:07, , 24F
我是連utf8,但飛馬的畫面卻是big5,但之後的又變回utf8
05/30 00:07, 24F

05/30 00:54, , 25F
要怎麼知道是哪一種編碼呢
05/30 00:54, 25F
char recvbuf[DEFAULT_BUFLEN]; iResult = recv(*pConnectSocket, recvbuf, recvbuflen, 0); 我是直接這樣收進來就是中文字 沒有處理編碼 ※ 編輯: bjk (118.168.236.12), 05/30/2016 00:55:35

05/30 00:55, , 26F
看binary格式跟實際的文字 就可以知道了
05/30 00:55, 26F

10/12 16:51, , 27F
因為程式碼就是 Big5 寫的啊..... (ref: pttbbs.conf
10/12 16:51, 27F
文章代碼(AID): #1NHfjYfC (C_and_CPP)