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之从格式化表达式到方法
Sep 28 Python
Python字符串特性及常用字符串方法的简单笔记
Jan 04 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
快速入门python学习笔记
Dec 06 Python
python实现多人聊天室
Mar 31 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
python collections模块的使用
Oct 16 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
Python 中 Shutil 模块详情
Nov 11 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
牡丹941资料
2021/03/01 无线电
PHP中Session的概念
2006/10/09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php define的第二个参数使用方法
2013/11/04 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
js实现简单页面全屏
2019/09/17 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
详谈python http长连接客户端
2017/06/12 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
J2EE中的容器都包括哪些
2013/08/21 面试题
艺术系应届生的自我评价
2013/10/19 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
进口业务员岗位职责
2014/04/06 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
教师岗位说明书
2015/09/30 职场文书
2019个人工作总结
2019/06/21 职场文书