当前位置: 首页 > 编程笔记 >

android Socket实现简单聊天小程序

元俊雅
2023-03-14
本文向大家介绍android Socket实现简单聊天小程序,包括了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() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍微信小程序 聊天室简单实现,包括了微信小程序 聊天室简单实现的使用技巧和注意事项,需要的朋友参考一下 微信小程序 聊天室简单实现 utils文件夹下websoctet.js文件 具体页面.js文件内容: 下面方法很好玩,因为使用的服务器 是开源的PHP服务器,所以微信小程序接收到的聊天室中文内容是ASCII编码,所以经过此方法可以转换。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支

  • 本文向大家介绍Python socket实现简单聊天室,包括了Python socket实现简单聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python socket实现简单聊天室的具体代码,供大家参考,具体内容如下 服务端使用了select模块,实现了对多个socket的监控。客户端由于select在Windows下只能对socket使用,所以使用了多线程来实现对客户端输

  • 本文向大家介绍Node.js实现简单聊天服务器,包括了Node.js实现简单聊天服务器的使用技巧和注意事项,需要的朋友参考一下 使用Nodejs是如此简单的实现了一个简单的聊天服务器 实现代码如下: 使用过程就是: 启动js 连接方式:telnet

  • 本文向大家介绍python实现简单多人聊天室,包括了python实现简单多人聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下 刚开始学习python,写了一个聊天室练练手。 Server.py client.py 运行时先启动服务端。进入聊天室先起一个昵称。服务端会向客户端发送当前聊天室内聊天人的列表。一个客户端发出

  • 本文向大家介绍微信小程序实现聊天室,包括了微信小程序实现聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了微信小程序实现聊天室的具体代码,供大家参考,具体内容如下 正文: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Python基于Socket实现简单聊天室,包括了Python基于Socket实现简单聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 客户端 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Android实现简单C/S聊天室应用,包括了Android实现简单C/S聊天室应用的使用技巧和注意事项,需要的朋友参考一下 Android的网络应用:简单的C/S聊天室,供大家参考,具体内容如下 服务器端:提供两个类 创建ServerSocket监听的主类:MyServer.java 负责处理每个Socket通信的线程类:ServerThread.java 客户端:是一个Andro

  • 本文向大家介绍PHP聊天室简单实现方法详解,包括了PHP聊天室简单实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP聊天室简单实现方法。分享给大家供大家参考,具体如下: 用户 => 客服 (先把信息入库,然后通过ob+长连接不断从数据库查询数据发送给客服) 客服 => 用户 (先接收用户信息,然后把回复信息入库,最后通过ajax轮询不断请求数据,显示到用户聊天界面) 【注意