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 相关文章推荐
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python Socket多线程并发原理及实现
Dec 11 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 Python
Python jiaba库的使用详解
Nov 23 Python
Pandas-DataFrame知识点汇总
Mar 16 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
详解JS预解析原理
2020/06/16 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
详解vue 组件注册
2020/11/20 Vue.js
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python复制文件的方法实例详解
2015/05/22 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
python中pika模块问题的深入探究
2018/10/13 Python
python关闭占用端口方式
2019/12/17 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
python打开音乐文件的实例方法
2020/07/21 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
销售业务员岗位职责
2014/01/29 职场文书
毕业实习感受与体会
2015/05/26 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS