python服务器与android客户端socket通信实例


Posted in Python onNovember 12, 2014

本文实例讲述了python服务器与android客户端socket通信的方法。分享给大家供大家参考。具体实现方法如下:

首先,服务器端使用python完成,下面为python代码:

#server.py  

import socket  

def getipaddrs(hostname):#只是为了显示IP,仅仅测试一下  

    result = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)  

    return [x[4][0] for x in result]  

  

host = ''#为空代表为本地host  

hostname = socket.gethostname()  

hostip = getipaddrs(hostname)  

print('host ip', hostip)#应该显示为:127.0.1.1  

port = 9999     # Arbitrary non-privileged port  

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

s.bind((host, port))  

s.listen(4)  

while True:  

    conn, addr = s.accept()  

    print('Connected by', addr)  

    data = conn.recv(1024)  

    if not data: break  

    conn.sendall(data)#把接收到数据原封不动的发送回去  

    print('Received', repr(data))  

    conn.close()

下面是Android代码:

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.UnknownHostException;  

  

import android.app.Activity;  

import android.content.Intent;  

import android.os.Bundle;  

import android.util.Log;  

  

public class TcpClient extends Activity {  

    /** Called when the activity is first created. */  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        runTcpClient();  

        finish();  

    }  

      

    private static final int TCP_SERVER_PORT = 9999;//should be same to the server port  

    private void runTcpClient() {  

        try {  

            Socket s = new Socket("**.**.intel.com", TCP_SERVER_PORT);//注意host改成你服务器的hostname或IP地址  

            BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));  

            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));  

            //send output msg  

            String outMsg = "TCP connecting to " + TCP_SERVER_PORT + System.getProperty("line.separator");   

            out.write(outMsg);//发送数据  

            out.flush();  

            Log.i("TcpClient", "sent: " + outMsg);  

            //accept server response  

            String inMsg = in.readLine() + System.getProperty("line.separator");//得到服务器返回的数据  

            Log.i("TcpClient", "received: " + inMsg);  

            //close connection  

            s.close();  

        } catch (UnknownHostException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }   

    }  

    //replace runTcpClient() at onCreate with this method if you want to run tcp client as a service  

    private void runTcpClientAsService() {  

        Intent lIntent = new Intent(this.getApplicationContext(), TcpClientService.class);  

        this.startService(lIntent);  

    }  

}

安卓代码中要注意的就是服务器的地址要写对,而且要保证服务器是可以被你的网段访问的。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
python基础教程之五种数据类型详解
Jan 12 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
Jan 29 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
重写django的model下的objects模型管理器方式
May 15 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 Python
Python访问MySQL封装的常用类实例
Nov 11 #Python
python实现ipsec开权限实例
Nov 11 #Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
Nov 11 #Python
python实现在目录中查找指定文件的方法
Nov 11 #Python
Python实现list反转实例汇总
Nov 11 #Python
用python实现面向对像的ASP程序实例
Nov 10 #Python
python求列表交集的方法汇总
Nov 10 #Python
You might like
咖啡的植物学知识
2021/03/03 咖啡文化
PHP异步调用socket实现代码
2012/01/12 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
使用python实现rsa算法代码
2016/02/17 Python
Python+微信接口实现运维报警
2016/08/27 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
final, finally, finalize的区别
2012/03/01 面试题
户籍证明模板
2014/09/28 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python