Python采用socket模拟TCP通讯的实现方法


Posted in Python onNovember 19, 2014

本文实例讲述了Python采用socket模拟TCP通讯的实现方法。分享给大家供大家参考。具体实现方法如下:

对于TCP server端的创建而言,分为如下几个步骤:

创建socket对象(socket):其中两个参数分别为Address Family(如AF_INET为IPV4,AF_INET6为IPV6,AF_UNIX为UNIX域协议族)、socket类型(如SOCK_STREAM为TCP,SOCK_DGRAM为UDP)。

绑定服务器地址(bind):参数为服务器地址二元组。
监听(listen):参数为允许的连接数。
等待请求(accept)。
接收数据(recv、recvfrom、recvfrom_into、recv_into)、发送数据(send、sendall、sendto)。
关闭连接(close)。

示例代码如下:

Python socket: TCP server 

Python#! /usr/bin/python

# -*- coding: utf-8 -*-

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server_address = ('127.0.0.1', 12345)

print "Starting up on %s:%s" % server_address

sock.bind(server_address)

sock.listen(1)

while True:

    print "Waiting for a connection"

    connection, client_address = sock.accept()

    try:

        print "Connection from", client_address

        data = connection.recv(1024)

        print "Receive '%s'" % data

    finally:

        connection.close()

其中,服务器地址二元组中,第一个元素为服务器IP(留空为在任意IP监听),第二个元素为服务器端口号。

而对于TCP client而言,通常包括如下几个步骤:

创建socket对象(socket):同server端。
连接服务器(connect):参数为服务器地址二元组。
发送和接收数据:同server端。
关闭连接:同server端。

示例代码如下:

Python socket: TCP client 

Python# /usr/bin/python

# -*- coding: utf-8 -*-

import socket

def check_tcp_status(ip, port):

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    server_address = (ip, port)

    print 'Connecting to %s:%s.' % server_address

    sock.connect(server_address)

    message = "I'm TCP client"

    print 'Sending "%s".' % message

    sock.sendall(message)

    print 'Closing socket.'

    sock.close()
if __name__ == "__main__":

    print check_tcp_status("127.0.0.1", 12345)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python urlopen()函数 示例分享
Jun 12 Python
Python 中的Selenium异常处理实例代码
May 03 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
对Python实现累加函数的方法详解
Jan 23 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
python实发邮件实例详解
Nov 11 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
Python dict的常用方法示例代码
Jun 23 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
聊聊Python中关于a=[[]]*3的反思
Jun 02 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 #Python
python端口扫描系统实现方法
Nov 19 #Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 #Python
python中urllib模块用法实例详解
Nov 19 #Python
python统计一个文本中重复行数的方法
Nov 19 #Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 #Python
python判断字符串是否纯数字的方法
Nov 19 #Python
You might like
php通用防注入程序 推荐
2011/02/26 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
浅析Python中的多重继承
2015/04/28 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
简单实现python进度条脚本
2017/12/18 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Django实现学员管理系统
2019/02/26 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python如何实现邮件功能
2020/05/27 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
AOP的定义以及作用
2013/09/08 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
上级检查欢迎词
2014/01/18 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
教师节主持词开场白
2015/05/29 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python