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 相关文章推荐
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python 多线程实例详解
Mar 25 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
python实现C4.5决策树算法
Aug 29 Python
python内置数据类型之列表操作
Nov 12 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
pandas实现导出数据的四种方式
Dec 13 Python
python switch 实现多分支选择功能
Dec 21 Python
用python自动生成日历
Apr 24 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
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
js实现继承的5种方式
2015/12/01 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python合并多个Excel数据的方法
2018/07/16 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
用Python配平化学方程式的方法
2019/07/20 Python
详解Python打包分发工具setuptools
2019/08/05 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
简述数据库的设计过程
2015/06/22 面试题
某公司的.net工程师面试题笔试题
2013/11/22 面试题
大专毕业生自我评价分享
2013/11/10 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
宣传工作经验材料
2014/06/02 职场文书
安全负责人任命书
2014/06/06 职场文书
大学生求职意向书
2015/05/11 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书