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中mechanize库的简单使用示例
Jan 10 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
Python程序设计入门(4)模块和包
Jun 16 Python
用Python实现一个简单的线程池
Apr 07 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
flask中过滤器的使用详解
Aug 01 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 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
我的论坛源代码(八)
2006/10/09 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
python字符类型的一些方法小结
2016/05/16 Python
Python 多线程的实例详解
2017/09/07 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python3字符串操作总结
2019/07/24 Python
Django框架安装方法图文详解
2019/11/04 Python
python中的列表和元组区别分析
2020/12/30 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
文秘专业自荐信
2013/10/14 职场文书
跟单文员岗位职责
2014/01/03 职场文书
绿色学校实施方案
2014/03/31 职场文书
个人借款担保书
2014/04/02 职场文书
银行求职信范文
2014/05/26 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
pytorch中的 .view()函数的用法介绍
2022/03/17 Python