您的位置:首页 > 移动开发 > Android开发

android 聊天程序(一)

2016-03-31 00:00 459 查看
1. 不能在UI线程中写连接之类的耗时操作,所有涉及到从线程读取,耗时操作,需要用一下方法改写

public void disconnected() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
address_tx.setText("client disconnected");
}
});
}

2 .模拟器与真机的host ip地址不一样。。。

解决方案1. 用wifi分享的软件查看android设备的地址

解决方案2.有个超级棒的小方法,可以读取手机的ip地址

public String getIpAddress() {
String ip = "";
try {
Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
.getNetworkInterfaces();
while (enumNetworkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = enumNetworkInterfaces
.nextElement();
Enumeration<InetAddress> enumInetAddress = networkInterface
.getInetAddresses();
while (enumInetAddress.hasMoreElements()) {
InetAddress inetAddress = enumInetAddress
.nextElement();
if (inetAddress.isSiteLocalAddress()) {
ip += inetAddress.getHostAddress();
}
}
}

} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
ip += "Something Wrong! " + e.toString() + "\n";
}
return ip;
}

3. bindException。。。

杀死进程,重新启动

4. 在台式pc上分享了一个热点 ,查看ip地址为198.168.191.1 改了之后,pc运行服务端,手机运行客户端,失败。......

5. 线程 start之后不自动执行run方法

可能是在UI线程中调用了耗时线程,系统自动不给执行,啊哈哈哈哈哈哈

6. client连接不上server

请求的代码放错地方了,必须在run中被调用或者直接写在run中才有效

socket = new Socket(host, port);

7. 对于一个client来说需要创建一个接收和一个发送handle对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: