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 GAE、Django导出Excel的方法
Nov 24 Python
Python中apply函数的用法实例教程
Jul 31 Python
详细解读Python中的__init__()方法
May 02 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
python中scikit-learn机器代码实例
Aug 05 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
python实现弹窗祝福效果
Apr 07 Python
Mac安装python3的方法步骤
Aug 09 Python
如何基于python生成list的所有的子集
Nov 11 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
Django用数据库表反向生成models类知识点详解
Mar 25 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
php max_execution_time执行时间问题
2011/07/17 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
js模仿jquery的写法示例代码
2013/06/16 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
Vue实现可移动水平时间轴
2020/06/29 Javascript
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
python实现简单中文词频统计示例
2017/11/08 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
.NET概念性的面试题
2012/02/29 面试题
Linux的文件类型
2012/03/07 面试题
毕业生造价工程师求职信
2013/10/17 职场文书
五一服装活动方案
2014/01/11 职场文书
会计助理岗位职责
2014/02/17 职场文书
公安学专业求职信
2014/07/27 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书