SOCKET收不到TCP服务器发回的数据

听劝 2017-05-09 11:20:34
package com.cm.activity;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketUtils {

private final String IP = "192.168.1.107";
private final int PORT = 1111;

private static SocketUtils mInatance;
private Socket socket;

BufferedReader input;

private SocketUtils() {

}

public static SocketUtils getInstance() {
if (mInatance == null) {
mInatance = new SocketUtils();
}
return mInatance;
}

public boolean isConnected() {
return socket != null && socket.isConnected();
}

public boolean connect() {
if (isConnected()) {
return true;
}

try {
socket = new Socket(IP, PORT);
return socket.isConnected();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}

public void send(String msg) {
try {
OutputStream outputStream = socket.getOutputStream();
outputStream.write(msg.getBytes("UTF-8"));

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
public String send(String msg, int a) {
try {
OutputStream outputStream = socket.getOutputStream();
outputStream.write(msg.getBytes("UTF-8"));

input = new BufferedReader(new InputStreamReader(socket.getInputStream())); //这两句没有错吧?
return input.readLine();

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "0";
}
}


下面是重载的发送函数

package com.cm.activity;


public class SocketSender {

public static void send(final String cmd) {
new Thread(new Runnable() {
@Override
public void run() {
SocketUtils.getInstance().send(cmd);

}
}).start();
}
public static void send(final String cmd,final int a) {
new Thread(new Runnable() {
@Override
public void run() {
final String result = SocketUtils.getInstance().send(cmd,a);

}
}).start();
}
}


然后这个是接收对比的

private void query() {
new Thread(new Runnable() {
@Override
public void run() {
final String result = SocketUtils.getInstance().send("door_now" , 0);
runOnUiThread(new Runnable() {
@Override
public void run() {
if (result.compareTo(result)==1) {
isOpen = true;
setStatus();
}
}
});
}
}).start();
}
...全文
212 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
听劝 2019-10-18
  • 打赏
  • 举报
回复
好久没人回复,结帖了,也没解决
Birds2018 2017-05-10
  • 打赏
  • 举报
回复
input = new BufferedReader(new InputStreamReader(socket.getInputStream())); //这两句没有错吧? return input.readLine(); 你按行读取的数据的,要保证别人发给你的数据结尾有 \r\n 换行标记
听劝 2017-05-10
  • 打赏
  • 举报
回复
引用 2 楼 zrf1335348191 的回复:
大致看了下,先不说别的功能性的问题。单单看代码编写问题 1,输入输出留用完需要关闭 2,你确定你的serversocket可以绑定在socket创建时指定的ip和端口号吗,对于这个ip首先要保证同一局域网,或者是有一方作为网关,要不然你ping就ping不通。对于这个端口号据我所知0到1024貌似用户无权绑定。
关闭了流 不能接到服务端,端口也是可以用的,编译的时候用的5001,就不知道为什么收不到
zrf1335348191 2017-05-10
  • 打赏
  • 举报
回复
大致看了下,先不说别的功能性的问题。单单看代码编写问题 1,输入输出留用完需要关闭 2,你确定你的serversocket可以绑定在socket创建时指定的ip和端口号吗,对于这个ip首先要保证同一局域网,或者是有一方作为网关,要不然你ping就ping不通。对于这个端口号据我所知0到1024貌似用户无权绑定。

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧