作者twonia (小东)
看板java
标题[问题] 莫名的BUG= =
时间Sat Apr 28 01:43:57 2012
小弟原本在写简易传输档案的程式(如上一篇)
但是後来发现好像在非常根源的地方就有出问题了
不过却不知道问题在哪
所以希望能简单的帮我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
1F:推 LaPass:你的系统是不是Windows?伺服器是不是Linux?如果是,去查 04/28 02:00
2F:推 LaPass:一下Java的char 78是什麽,如果是\r,那就是换行符号问题 04/28 02:02
3F:推 LaPass:唔... 78是N 看来不是....... 04/28 02:10
4F:→ tkcn:client 用 writeBytes 送,server 用 readLine 接,当然不行 04/28 08:09
5F:→ twonia:是喔ˊˋ~可是之前写都接得到的说... 04/28 11:37
6F:推 LaPass:唔....readline? comm里面有包含\n吗? 04/28 12:24
7F:→ twonia:没耶~"~我的指令都很单纯的一行文 04/28 12:45
8F:推 LaPass:唔.... 刚刚试了一下,用DataOutputStream .writeBytes() 04/28 13:24
9F:推 LaPass:BufferedReader .readLine()去接,可以正常收发。 04/28 13:27
10F:→ twonia:真是莫名的BUG-.-+我看乾脆全部砍掉重打说不定就过了... 04/28 13:59
11F:→ tkcn:如果 writeBytes 後面接的是 EOL, EOF,当然还是接得下来 04/28 14:50
12F:推 LaPass:试试看 outToServer.writeBytes(comm+"\n"); 04/28 16:17
13F:推 LaPass:如果成功的话,原PO你要感谢tkcn。 04/28 16:20
14F:→ sbrhsieh:BufferedReader::readLine 是 "\r", "\n", "\r\n" 都吃的 04/28 17:20
15F:→ twonia:感动ˊˋ~加了 \n连档案问题都解决了 04/28 18:09
16F:→ twonia:感谢伟哉tkcn和LaPass大大的不离不弃帮忙Debug 04/28 18:17