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的多态性实例分析
Jul 07 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
django表单的Widgets使用详解
Jul 22 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
python程序 创建多线程过程详解
Sep 23 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
python数据化运营的重要意义
Nov 25 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
Python 如何实现访问者模式
Jul 28 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
Python 转移文件至云对象存储的方法
Feb 07 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
js tab效果的实现代码
2009/12/26 Javascript
Javascript浅谈之this
2013/12/17 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
js实现拖拽功能
2017/03/01 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
简历中自我评价分享
2013/10/09 职场文书
运动会广播稿150字
2014/02/19 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
郭明义电影观后感
2015/06/08 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书