我尝试从 android 客户端连接我的 windows 桌面 java 服务器。我正在跨平台工作。桌面服务器和桌面客户端使用相同的代码工作正常,但桌面服务器和 android 客户端有一个有趣的问题。清单权限已设置。
桌面java服务器代码
ServerSocket serverSocket = new ServerSocket(tcp_port);
Socket link = null;
while(true) {
link = serverSocket.accept();
PrintWriter output = new PrintWriter(link.getOutputStream(),true); // flush true
BufferedReader input = new BufferedReader(new InputStreamReader(link.getInputStream()));
// step 1 password auth
String message = input.readLine(); // wait password
if(message.equals(password)) {
output.println("correct");
message = null;
message = input.readLine(); // wait udp port request
if(message.equals("UDP")) {
output.println(udp_port+"");
etc
.
.
安卓客户端代码
Socket link = null;
link = new Socket(hostip,tcp_port);
PrintWriter output = new PrintWriter(link.getOutputStream(),true); // auto flush true
BufferedReader input = new BufferedReader(new InputStreamReader(link.getInputStream()));
while(true) {
// step1 send the password wait the response
output.println(password);
String message = input.readLine(); // password response
if(message.equals("correct")) {
output.println("UDP"); // request udp
message = null;
message = input.readLine();
udpport = Integer.parseInt(message);
etc
.
.
我的问题是相同的代码在 java 桌面客户端和 java 桌面服务器上工作正常但是当我尝试从 android 客户端密码身份验证部分连接 java 桌面服务器时工作正常但是
output.println(udp_port+""); 当我查看服务器端时发送数据两次它首先发送空字符串然后发送我的值有什么问题?
message = null;
message = input.readLine(); // wait udp port request
if(message.equals("UDP")) {
它读取空字符串并跳转 if 语句,但如果我使用
message = null;
message = input.readLine(); // read empty string
message = input.readLine(); // read my data
if(message.equals("UDP")) {
statement works