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中为feedparser设置超时时间避免堵塞
Sep 28 Python
Python解析最简单的验证码
Jan 07 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
Python字典对象实现原理详解
Jul 01 Python
python使用原始套接字发送二层包(链路层帧)的方法
Jul 22 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
Python 保存加载mat格式文件的示例代码
Aug 04 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代码
2013/03/24 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
python基于win32api实现键盘输入
2020/12/09 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
会计专业推荐信
2013/10/29 职场文书
品质标语大全
2014/06/21 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
生日答谢词
2015/01/05 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis