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的内存泄漏及gc模块的使用分析
Jul 16 Python
Python自动登录126邮箱的方法
Jul 10 Python
python中的闭包函数
Feb 09 Python
django解决跨域请求的问题
Nov 11 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
Python初学者必备的文件读写指南
Jun 23 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
使用adodb lite解决问题
2006/12/31 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
js资料toString 方法
2007/03/13 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
vue组件与复用详解
2018/04/08 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
python筛选出两个文件中重复行的方法
2018/05/31 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
对python判断是否回文数的实例详解
2019/02/08 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
单位成立周年感言
2014/01/26 职场文书
怎样填写就业意向
2014/04/02 职场文书
英语感谢信范文
2015/01/20 职场文书
学生会部长竞选稿
2015/11/19 职场文书
加强党性修养心得体会
2016/01/21 职场文书
2019大学生实习报告
2019/06/21 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL