我相信不止我一个遇到这样的问题。
代码块:
package TCP;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class TCP_send {
public static void main(String[] args) throws Exception {
Socket s = new Socket("192.168.2.1", 7890);
System.out.println("创建输出端");
OutputStream output = s.getOutputStream();
Scanner scanner = new Scanner(System.in);
String str = null;
while(true) {
System.out.println("please input an word");
str = scanner.nextLine();
if(str.equals("end")) {
break;
}
output.write(str.getBytes());
}
s.close();
}
}
package TCP;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_recieve {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(7890);
Socket client = ss.accept();
System.out.println("接收到一个客户端的连接");
InputStream input = client.getInputStream();
byte[] buf = new byte[1024];
int length =-1;
while((length = input.read(buf)) != 1) {
System.out.println(new String(buf, 0, length));
}
client.close();
ss.close();
}
}
问题:
- 我们首先在输入端中输入第一个句子

- 接收端接收成功,而且就是我们输出的内容

- 接着我们继续输出

- 这一次的输出一定会出错

- 我们发现我们通过拼音输出的中文会变成一串很奇怪的东西

解决方案:
- 经过我的调查,这种错误的起因是因为控制台输入中文的时候eclipse光标的没有自动换行到下一行所导致的。英文输出则会自动换行,目前唯一的解决方法就是手动将光标下移后再输入,这是eclipse一个令人恶心又没有解决方式的bug!
