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自动化测试之setUp与tearDown实例
Sep 28 Python
Python列表计数及插入实例
Dec 17 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
Python and、or以及and-or语法总结
Apr 14 Python
在Python中使用SQLite的简单教程
Apr 29 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
详解Python发送email的三种方式
Oct 18 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python 元组和列表的区别
Dec 30 Python
python 批量将中文名转换为拼音
Feb 07 Python
python flappy bird小游戏分步实现流程
Feb 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
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
js实现密码强度检验
2017/01/15 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python 对象和json互相转换方法
2018/03/22 Python
Python安装selenium包详细过程
2019/07/23 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
大学生毕业自我评价范文分享
2013/11/11 职场文书
个人求职信范文分享
2014/01/06 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
教师工作失职检讨书
2014/09/18 职场文书
2014年应急工作总结
2014/12/11 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS