大佬教程收集整理的这篇文章主要介绍了android Socket实现简单聊天小程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
android Socket实现简单聊天小程序,供大家参考,具体内容如下
服务器端:
package org.hwq.echo; import java.io.bufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.socket; public class TalkServer { public static void main(String[] args) throws IOException{ ServerSocket server = null; Socket client = null; BufferedReader in = null; PrintWriter out = null; try{ server = new ServerSocket(4700); client = server.accept(); out = new PrintWriter(client.getOutputStream()); in = new BufferedReader(new InputStreamReader(client.geTinputStream())); String line = in.readLine(); while(!"bye".equals(linE)){ System.out.println("client:"+linE); out.println("echo:"+linE); out.flush(); line = in.readLine(); } }catch (Exception E) { e.printStackTrace(); if(client !=null) client.close(); if(server != null) server.close(); } } }
手机端:
package org.hwq.cho; import java.io.bufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.socket; import java.net.UnkNownHostException; import android.app.Activity; import android.content.Context; import android.os.bundle; import android.os.Handler; import android.os.message; import android.view.View; import android.view.View.onClickListener; import android.widget.button; import android.widget.EditText; import android.widget.Toast; public class EchoActivity extends Activity implements OnClickListener { EditText show,msg; Button send; Handler handler; Socket client; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.main); handler = new MyHandler(); show = (EditText) findViewById(R.id.show); msg = (EditText) findViewById(R.id.msg); send = (Button) findViewById(R.id.send); send.setOnClickListener(this); } @Override public void onClick(View arg0) { String message = msg.getText().toString(); // System.out.println("msg:"+messagE); new EchoThread(EchoActivity.this,messagE).start(); } public class MyHandler extends Handler{ @Override public void handlemessage(message msg) { switch(msg.what){ case 1: Toast.makeText(EchoActivity.this,"建立连接失败",0).show(); break; case 2: String message = (String) msg.obj; System.out.println("Handler:"+messagE); show.append("\n"+messagE); break; } } } private class EchoThread extends Thread{ private Context context; private String msg; EchoThread(Context context,String msg){ this.context = context; this.msg = msg; } public void run(){ if(client == null){ try { client = new Socket("192.168.1.102",4700); } catch (IOException E) { message message = new message(); message.what = 1; handler.sendmessage(messagE); } } System.out.println("建立连接"); try{ BufferedReader in; BufferedReader input; PrintWriter out; in = new BufferedReader(new InputStreamReader(client.geTinputStream())); out = new PrintWriter(client.getOutputStream()); String line = msg; if(!"bye".equals(linE)){ System.out.println("line:"+linE); out.println(linE); out.flush(); String echo = in.readLine(); System.out.println("server:"+echo); message message = new message(); message.obj = echo; message.what = 2; handler.sendmessage(messagE); } }catch (Exception E) { } } } }
注意几点:
1、添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
如果没添加,无法使用socket连接网络。
2、在新启线程中不要使用android系统UI界面
在EchoThrad的run()方法里面,有下面代码:
if(client == null){ try { client = new Socket("192.168.1.102",4700); } catch (IOException E) { message message = new message(); message.what = 1; handler.sendmessage(messagE); } }
这里的handler.sendmessage(messagE);是发送@L_607_15@消息给handler,然后handler根据消息弹出@L_607_15@Toast显示连接失败。如果这里直接使用
Toast.makeText(EchoActivity.this,0).show();
会报如下错:
Can't create handler inside thread that has not called Looper.prepare()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多@L_673_19@编程小技巧。
以上是大佬教程为你收集整理的android Socket实现简单聊天小程序全部内容,希望文章能够帮你解决android Socket实现简单聊天小程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。