全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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);是发送一个消息给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小时内与您取得联系。