Android 与电脑的Socket通信为什么不能接收数据

qq_34618106 2016-05-21 11:27:42
将电脑作为服务端,android平板作为客户端,进行同一局域网下的TCP的socket通信,结果测试时发现可以android客户端可以向电脑发送数据缺接受不到数据,求大神帮忙看看什么问题

public static String receiveData;
public static Socket s;
public static BufferedReader in;
public static BufferedWriter out;

public static void connect(){
new Thread() {
public void run() {

try {//打开app后按下一个按钮开启连接,可以连接上

s = new Socket("192.168.0.100", com.android.dafenqi.MainActivity.port);
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
//每次按下一个按钮便调用下面的send()方法接受和发送数据,接受在前时,便不能发送,发送在前电脑服务端能正常收到数据,就是android接受数据时卡住了,接受不到

public static void send() {


try {

//receiveData = in.readLine();这时能发送数据,但不能接收数据,去掉//就连数据都不能发了

out.write(sendData + "\n");

out.flush();

receiveData = in.readLine();
/*byte[] datas = new byte[2048];
//从服务端程序接收数据
s.getInputStream().read(datas);
com.android.dafenqi.ScoketClient.receiveData=new String(datas);*/

} catch (Exception e) {
e.printStackTrace();
}

}
...全文
461 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34618106 2016-05-22
  • 打赏
  • 举报
回复
引用 2 楼 always_0122 的回复:
接受和发送都属于网络操作,放进线程里试试,你最好再多提供一些代码,服务端的也贴出来看一下。
谢谢大神的帮忙,但还是有点问题 接受和发送放到线程后确实可以接受数据了,这是我服务端的代码,请问服务端要怎么一直输出每次接受的数据,现在只能输出第一次,还有请问是不是每次调用客户端的in.readLine(),如果服务端没有输出,或者断开了,是不是就会接收到null? public class TcpServer { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(23344); while(true){ Socket s= ss.accept(); String ip = s.getInetAddress().getHostAddress(); System.out.println(ip+"....connected"); BufferedWriter out =new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); out.write("FA##F8##BBbao##CCjing##TSL1##TSR9##WBL##QQ4##SEC14:1##SEC22:7##SEC35:1##SEC40:0##SEC50:0##SEC60:0##SEC70:0##TOTAL2:1"+"\n"); out.flush(); BufferedReader in =new BufferedReader (new InputStreamReader(s.getInputStream())); String len = in.readLine(); System.out.println(len+""+"\n"); } } }
反魂蝶五分 2016-05-22
  • 打赏
  • 举报
回复
如果没连上时,会一直处于accept状态,就是程序运行到accept时阻塞了,两边联通后,客户端或服务端会在readline那地方停止,等待接收数据。你可以打断点调试。
Ray•Zhang 2016-05-22
  • 打赏
  • 举报
回复
服务端这边ccept之后也开启也一个线程来和客户端交互,在run里while 一直获取readLine方法,这样就客户端就可以一直收消息了,readLine为null不一定是断开,可能是没拿到数据而已,做个非空判断。
Ray•Zhang 2016-05-21
  • 打赏
  • 举报
回复
接受和发送都属于网络操作,放进线程里试试,你最好再多提供一些代码,服务端的也贴出来看一下。
qq_34618106 2016-05-21
  • 打赏
  • 举报
回复
就是接受数据时卡住了,不能进行下去,为什么会这样?新手,求帮忙

80,360

社区成员

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

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