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);是发送一个消息给handler,然后handler根据消息弹出一个Toast显示连接失败。如果这里直接使用
Toast.makeText(EchoActivity.this, "建立连接失败", 0).show();
会报如下错:
Can't create handler inside thread that has not called Looper.prepare()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# Socket
# 聊天程序
# Android Socket实现多个客户端聊天布局
# android使用Socket通信实现多人聊天应用
# Android Socket通信实现简单聊天室
# Android使用Websocket实现聊天室
# 基于Socket.IO实现Android聊天功能代码示例
# android socket聊天室功能实现
# android Socket实现简单聊天功能以及文件传输
# Android 基于Socket的聊天室实例
# Android基于socket实现的简单C/S聊天通信功能
# Android Socket实现多个客户端即时通信聊天
# 会报
# 弹出
# 几点
# 具体内容
# 大家多多
# flush
# println
# catch
# close
# printStackTrace
# Exception
# System
# getInputStream
# getOutputStream
# accept
# line
# equals
# bye
# readLine
# br
相关文章:
如何在阿里云完成域名注册与建站?
在线制作视频网站免费,都有哪些好的动漫网站?
定制建站如何定义?其核心优势是什么?
如何选择CMS系统实现快速建站与SEO优化?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何在万网主机上快速搭建网站?
如何续费美橙建站之星域名及服务?
如何制作算命网站,怎么注册算命网站?
建站之星如何保障用户数据免受黑客入侵?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何通过cPanel快速搭建网站?
C++时间戳转换成日期时间的步骤和示例代码
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何批量查询域名的建站时间记录?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
简单实现Android文件上传
,怎么用自己头像做动态表情包?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
小程序网站制作需要准备什么资料,如何制作小程序?
如何在IIS7上新建站点并设置安全权限?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
网站设计制作企业有哪些,抖音官网主页怎么设置?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何配置IIS站点权限与局域网访问?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
如何在宝塔面板创建新站点?
,石家庄四十八中学官网?
网站制作员失业,怎样查看自己网站的注册者?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
python的本地网站制作,如何创建本地站点?
建站之星后台密码遗忘或太弱?如何重置与强化?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
,制作一个手机app网站要多少钱?
专业网站建设制作报价,网页设计制作要考什么证?
测试制作网站有哪些,测试性取向的权威测试或者网站?
微信推文制作网站有哪些,怎么做微信推文,急?
如何挑选高效建站主机与优质域名?
如何用y主机助手快速搭建网站?
广德云建站网站建设方案与建站流程优化指南
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何快速生成ASP一键建站模板并优化安全性?
建站之星展会模板:智能建站与自助搭建高效解决方案
东莞专业制作网站的公司,东莞大学生网的网址是什么?
建站主机类型有哪些?如何正确选型
如何注册花生壳免费域名并搭建个人网站?
如何快速上传建站程序避免常见错误?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
Python文件管理规范_工程实践说明【指导】
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
*请认真填写需求信息,我们会在24小时内与您取得联系。