[問題] 莫名的BUG= =

看板java作者 (小東)時間13年前 (2012/04/28 01:44), 編輯推噓8(808)
留言16則, 4人參與, 最新討論串1/1
小弟原本在寫簡易傳輸檔案的程式(如上一篇) 但是後來發現好像在非常根源的地方就有出問題了 不過卻不知道問題在哪 所以希望能簡單的幫我De個小Bug 就是有關傳送字串的問題= =a Client端 Socket clientSocket = new Socket(serverAddress, serverPort); BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); System.out.println("ftp>Connected with "+serverAddress+ serverPort); while(true) { comm = inFromUser.readLine(); if(comm.substring(0,3).equals("ldi")) { ldir(); } else if(comm.substring(0,3).equals("put")) { outToServer.writeBytes(comm); else { System.out.println("指令輸入錯誤"); } } 在Server端 ServerSocket welcomeSocket = new ServerSocket(serverPort); Socket connectionSocket = welcomeSocket.accept(); System.out.println("Hi, connect confirm"); BufferedReader inFromClient = new BufferedReader (new InputStreamReader(connectionSocket.getInputStream())); get = inFromClient.readLine(); System.out.println(get); int k = get.length(); System.out.println(k); comm = get.substring(0,3); 理論上 只有一個發送和一個接收 假設我打put test01.txt在client端 但是到了Server卻讀不出來 之前原本把FTP的部份也放入的時候還更扯 我打put test01.txt 他還自己變成put test01.txt78 (暗指我78!?) 所以我到底是哪個地方重複定義到之類的嗎? 還是重複傳送了= = 現在感覺離真相不遠 卻卡在很莫名的地方了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.219.8

04/28 02:00, , 1F
妳的系統是不是Windows?伺服器是不是Linux?如果是,去查
04/28 02:00, 1F

04/28 02:02, , 2F
一下Java的char 78是什麼,如果是\r,那就是換行符號問題
04/28 02:02, 2F

04/28 02:10, , 3F
唔... 78是N 看來不是.......
04/28 02:10, 3F

04/28 08:09, , 4F
client 用 writeBytes 送,server 用 readLine 接,當然不行
04/28 08:09, 4F

04/28 11:37, , 5F
是喔ˊˋ~可是之前寫都接得到的說...
04/28 11:37, 5F

04/28 12:24, , 6F
唔....readline? comm裡面有包含\n嗎?
04/28 12:24, 6F

04/28 12:45, , 7F
沒耶~"~我的指令都很單純的一行文
04/28 12:45, 7F

04/28 13:24, , 8F
唔.... 剛剛試了一下,用DataOutputStream .writeBytes()
04/28 13:24, 8F

04/28 13:27, , 9F
BufferedReader .readLine()去接,可以正常收發。
04/28 13:27, 9F

04/28 13:59, , 10F
真是莫名的BUG-.-+我看乾脆全部砍掉重打說不定就過了...
04/28 13:59, 10F

04/28 14:50, , 11F
如果 writeBytes 後面接的是 EOL, EOF,當然還是接得下來
04/28 14:50, 11F

04/28 16:17, , 12F
試試看 outToServer.writeBytes(comm+"\n");
04/28 16:17, 12F

04/28 16:20, , 13F
如果成功的話,原PO妳要感謝tkcn。
04/28 16:20, 13F

04/28 17:20, , 14F
BufferedReader::readLine 是 "\r", "\n", "\r\n" 都吃的
04/28 17:20, 14F

04/28 18:09, , 15F
感動ˊˋ~加了 \n連檔案問題都解決了
04/28 18:09, 15F

04/28 18:17, , 16F
感謝偉哉tkcn和LaPass大大的不離不棄幫忙Debug
04/28 18:17, 16F
文章代碼(AID): #1FcjhX-r (java)