侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python搭建服务器实现两个Android客户端间收发消息

Python  /  管理员 发布于 7年前   167

本文为大家分享了python搭建服务器实现两个Android客户端间收发消息,供大家参考,具体内容如下

python服务器

# coding:utf-8import socketimport threadingimport timedef handle_client(client_socket, client_id):  """处理客户端请求"""  # 获取客户端请求数据  while True:    try:      request_data = client_socket.recv(1024)    except Exception:      time.sleep(0.2)      continue    if len(request_data) > 0:      request_lines = request_data.splitlines()      print(request_lines[0].decode("utf-8"))      #res = int(request_lines[0]) + 1      client_socket_list[(client_id+1) % 2].send(bytes(str(request_lines[0].decode("utf-8"))+"\n", "utf-8"))  client_socket_list.remove(client_id)if __name__ == "__main__":  server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  """  socket()是一个函数,创建一个套接字,  AF_INET 表示用IPV4地址族,  SOCK_STREAM 是说是要是用流式套接字  """  # server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 设置地址重用  server_socket.bind(("10.2.70.42", 8000)) # 绑定端口  server_socket.listen(2) # 开启监听  client_socket_list = []  client_num = 0  Isready = False  while True:    client_id = client_num    client_socket, client_address = server_socket.accept()    print("[%s, %s]用户连接上了" % client_address)    handle_client_thread = threading.Thread(target=handle_client, args=(client_socket, client_id))    """    tartget表示这个进程到底要执行什么行为    args是target要接受的参数    """    client_socket_list.append(client_socket)    client_num += 1    if len(client_socket_list) == 3:      client_socket_list.pop(0)    client_socket.setblocking(0)    handle_client_thread.start()

Android客户端-Java代码

package com.example.administrator.wuziqi_intenet;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.URLDecoder;import java.net.UnknownHostException;import static com.example.administrator.wuziqi_intenet.R.id.button1;public class MainActivity extends AppCompatActivity {  Button button = null;  TextView textView = null;  EditText editText = null;  Socket socket;  BufferedWriter pw=null;  BufferedReader is=null;  String string="baba";  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    new Thread() {      @Override      public void run() {          try{socket = new Socket("10.2.70.42", 8000);socket.setSoTimeout(10000);pw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));is = new BufferedReader(new InputStreamReader(socket.getInputStream()));          } catch (IOException e) {e.printStackTrace();          }        }      }.start();    button = (Button) findViewById(button1);    textView = (TextView) findViewById(R.id.textview);    editText = (EditText) findViewById(R.id.input);    handler.sendEmptyMessageDelayed(1, 100);    button.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View view) {        new Thread(){          @Override          public void run()          {String msg = editText.getText().toString();try{  pw.write(msg);  pw.flush();} catch (UnknownHostException e) {  Toast.makeText(MainActivity.this,"失败1",Toast.LENGTH_SHORT).show();  e.printStackTrace();} catch (IOException e) {  Toast.makeText(MainActivity.this,"失败2",Toast.LENGTH_SHORT).show();  e.printStackTrace();}          }        }.start();        editText.setText("");      }    });  }  private Handler handler = new Handler() {    public void handleMessage(Message message) {      try {        Moving();      } catch (IOException e) {        e.printStackTrace();      }    }  };  private void Moving() throws IOException {    new Thread() {      @Override      public void run() {        try {          if (is.ready())string = is.readLine();        } catch (IOException e) {          e.printStackTrace();        }      }    }.start();    byte[] b=string.getBytes();    String s1=new String(b);    System.out.println(s1);    textView.setText(string);    handler.sendEmptyMessageDelayed(1, 100);  }}

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


  • 上一条:
    python 实现对文件夹内的文件排序编号
    下一条:
    python pandas 组内排序、单组排序、标号的实例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客