private Button send;
private TextView rec;
private static Socket client;
private boolean result=false;
private int a=0;
private PrintWriter write;
private static BufferedReader read;
public static int ac=0;
private InputStream input;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rec=(TextView)findViewById(R.id.textView1);;
Thread aa=new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
//服务器的ip的地址 和端口号
client=new Socket(InetAddress.getByName("192.168.1.101"),4312);
read=new BufferedReader
(new InputStreamReader(client .getInputStream()));
result=true;
a=1;
rec.setText("123");
}
catch(IOException e){
result=false;rec.setText("错误");
}
finally{
a=1;
}
}
});
aa.start();
while(a==0);
if(result){
String s ="";
try{
s = read.readLine();//执行到这一步就出错
rec.setText("awq");
}
catch(Exception e){rec.setText("出现异常");}
}
每当客户端读取数据时就会出现异常,可以发送消息就是读不了怎么回事
你在那个run方法里看看能不能读出数据?另外把错误贴出来,同时你的代码在非UI线程里更新了UI,这肯定是会报错的
Socket(套接字)是一种通信机制,可以实现单机或跨网络进行通信,其创建需要明确的区分C(客户端)/S(服务器端),支持多个客户端连接到同一个服务器。有两种传输模式:
1)、面向连接的传输:基于TCP协议,可靠性高,但效率低;
2)、面向无连接的传输:基于UDP协议,可靠性低,但效率高;
Android中,直接采用Socket通信应该是我们遇到的最低级的网络运用。尽管已经作......
答案就在这里:Android网络编程之Socket通信
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
BufferedReader的初始化看看有没有问题
再看看服务器有没有写入数据,写入的数据是不是一个null值
读取的数据是否正确 是否从buffer中取出对应的值
rec.setText("awq");
线程不能更新ui