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线程锁(thread)学习示例
Dec 04 Python
python中sleep函数用法实例分析
Apr 29 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
Django中url的反向查询的方法
Mar 14 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python如何制作缩略图
Apr 30 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
Python3实现飞机大战游戏
Apr 24 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
全网非常详细的pytest配置文件
Jul 15 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脚本的10个技巧(1)
2006/10/09 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
axios学习教程全攻略
2017/03/26 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
详解Python的循环结构知识点
2019/05/20 Python
python不同版本的_new_不同点总结
2020/12/09 Python
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
回门宴新郎答谢词
2014/01/12 职场文书
运动会通讯稿100字
2014/01/31 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书