作者jacky75113 (crazydream)
看板AndroidDev
标题[问题] android TCP socket 接收失败
时间Tue Feb 11 17:19:40 2014
是这样的 我现在要连一个tcp连线
server端目前是电脑 用C写的
client端在android上 java写成 用ap开wifi让手机连wifi
资料传出去是可以的 但是接收时input.readLine()会卡住
网路上google过 说readLine()要读到'\n' '\r' '\r\n'之类的才会停止 否则会卡住
後来在要传的字串里加入这些符号依然没有用
用wireshark监听时字串也都有出现结尾 0a ,0d ,0a0d
而且同样的方法把client端写一个pc端的java程式是可以正常连线传输
但在android中则会卡在readLine()
我去google play下载 TCP Client也是可以跟server连线
所以一定是我哪边没写好 以下是我撷取自己几段程式码
1.程式一开启就会开socket
class ClientThread implements Runnable {
public void run() {
try {
socket = new Socket("169.254.2.3",8899);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}}}
2.当按下按钮 会先传字串给server 然接从server接收字串
public void onClick(View v) {
try {
// send
EditText et = (EditText) findViewById(R.id.EditText01);
String str = et.getText().toString();
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);
out.println(str);
//以上传出去是正常的
//recv
tv.setText("message 1");
BufferedReader input = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
// read line(s)
tv.setText("message 2");
String message = input.readLine(); // <--这里卡住了
tv.setText(message);
//以上只显示出message 2
不知道没有大大能解惑m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.80.199
1F:→ Griffith:如果用read()读也会吗? ((一个字元一个字元读~ 02/11 22:44
2F:→ jacky75113:恩恩 有试过也是会卡住 02/11 23:02
※ 编辑: jacky75113 来自: 218.166.88.51 (02/12 08:41)
3F:→ buganini:让手机连ap的话,ip通常不会是169.254吧… 02/12 12:30
4F:→ buganini:看起来连线没成功 02/12 12:30
5F:→ jacky75113:ip是自己设定的没问题 我找到一个程式可以正常跑 02/12 13:34
6F:→ jacky75113:待我找出问题後再po个结果XD 02/12 13:35