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中的正则表达式的用法
Apr 09 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
浅谈对yield的初步理解
May 29 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python 共享变量加锁、释放详解
Aug 28 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
python中rb含义理解
Jun 18 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
用python修改excel表某一列内容的操作方法
Jun 11 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模板引擎SMARTY
2006/10/09 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
javascript如何创建对象
2016/08/29 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
python的urllib模块显示下载进度示例
2014/01/17 Python
Python re模块介绍
2014/11/30 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
利用Python计算KS的实例详解
2020/03/03 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
安全资金保障制度
2014/01/23 职场文书
cf收人广告词大全
2014/03/14 职场文书
项目投资建议书
2014/05/16 职场文书
滞留工资返还协议书
2014/10/19 职场文书
分家协议书范本
2016/03/22 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电