作者iching1 (123)
看板AndroidDev
标题[问题] client持续接收字串
时间Wed Sep 12 17:06:26 2012
正在练习手机与手机间使用网路传输字串
拿一台手机当作server
另一台当作client
client能顺利连接到server
而server能传送字串到client
但当server想要传输两次以上的字串给client
就无法成功了
以下是其中client的程式码(我是写在一个button的触发事件中)
mButton2.setOnClickListener(new View.OnClickListener() //输入ip连线
{
public void onClick(View v)
{
String address =
(((EditText) findViewById(R.id.EditText01)).getText().toString());// 连线的ip
int port = 1234;// 连线的port
try {
serverip = InetAddress.getByName(address);
clientsocket = new Socket(serverip,port);
receive_word();
}catch(Exception e){TextView3.setText("Net connection is
fail.");}
});
private void receive_word()
{
try{
InputStream in=clientsocket.getInputStream(); //接收字串
byte data2[] = new byte[1024];
String temp2 = "";
int length=0;
//length=in.read(data2);
while((length=in.read(data2)) != -1)
{
temp2+= new String(data2, 0, length);
TextView3.setText(temp2);
}
//temp2+= new String(data2, 0, length);
//TextView3.setText(temp2);
}catch(Exception e){TextView3.setText("失败");}
}
基本上建立连线这个确定是没问题的
但就是无法接收server传出来的字串
如果将receive_word()中的while拿掉
改为while上下三行//的程式码的话
接收单次字串也是没问题的
但就不知道为什麽想要多次接收字串(使用while)就有问题
socket和inputstream都没有close
是while使用错误吗?还是因为建立在按键事件中?
还是说多次接收字串需要其他的方法?
希望各位可以帮我解答
谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.117.169.50
1F:推 cooper6334:应该是socket建好就一直用,不需要一直重新建立吧 09/12 17:21
2F:→ iching1:我是只按一次建立连线 之後server就开始传送资料 09/12 17:32
3F:推 cooper6334:server传完以後把socket close掉呢? 09/12 17:48
4F:推 h124224:你while的条件给错啦 09/14 18:38
5F:→ h124224:你把 条件改成 TRUE 就可以一直传送了 09/14 18:39
6F:→ h124224:把read放到 while里面 最後再自己定义终止条件 break 09/14 18:40