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实现统计文本文件字数的方法
May 05 Python
python实现按长宽比缩放图片
Jun 07 Python
Python线程下使用锁的技巧分享
Sep 13 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
通过python爬虫赚钱的方法
Jan 29 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
Python函数递归调用实现原理实例解析
Aug 11 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
python 模拟在天空中放风筝的示例代码
Apr 21 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&mysql(六)
2006/10/09 PHP
php适配器模式介绍
2012/08/14 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
培养自己的php编码规范
2015/09/28 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
javascript按位非运算符的使用方法
2013/11/14 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
详细介绍Python中的偏函数
2015/04/27 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python贪心算法实例小结
2018/04/22 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Django model反向关联名称的方法
2018/12/15 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
kfc实习自我鉴定
2013/12/14 职场文书
参观监狱心得体会
2014/01/02 职场文书
移风易俗倡议书
2014/04/15 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
HTML基础详解(上)
2021/10/16 HTML / CSS
Nginx配置https的实现
2021/11/27 Servers