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生成器实现微线程编程的教程
Apr 13 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
python pandas生成时间列表
Jun 29 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
python日志模块logbook使用方法
Sep 19 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 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
杏林同学录(七)
2006/10/09 PHP
PHP4实际应用经验篇(3)
2006/10/09 PHP
常用的php对象类型判断
2008/08/27 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
PHP反射基础知识回顾
2020/09/10 PHP
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
Python数据结构之翻转链表
2017/02/25 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python sep参数使用方法详解
2020/02/12 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
如何填写个人简历自我评价
2013/12/10 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
总经理工作职责范文
2014/03/14 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
python 对图片进行简单的处理
2021/06/23 Python
详解Python为什么不用设计模式
2021/06/24 Python