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的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
Django 视图层(view)的使用
Nov 09 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
从0开始的Python学习016异常
Apr 08 Python
Python循环结构的应用场景详解
Jul 11 Python
pytorch打印网络结构的实例
Aug 19 Python
python groupby 函数 as_index详解
Dec 16 Python
Python文件时间操作步骤代码详解
Apr 13 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 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 - Html Transfer Code
2006/10/09 PHP
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python反转序列的方法实例分析
2018/03/21 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
计算机应用职专应届生求职信
2013/11/12 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
天地会口号
2014/06/17 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
小学开学标语
2014/07/01 职场文书
zabbix配置nginx监控的实现
2022/05/25 Servers