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 06 Python
Python查询Mysql时返回字典结构的代码
Jun 18 Python
Python实现CET查分的方法
Mar 10 Python
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
Python之reload流程实例代码解析
Jan 29 Python
Python基础教程之利用期物处理并发
Mar 29 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
Python读取stdin方法实例
May 24 Python
500行代码使用python写个微信小游戏飞机大战游戏
Oct 16 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
python如何使用腾讯云发送短信
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
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
Python实现修改文件内容的方法分析
2018/03/25 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
python实现简易淘宝购物
2019/11/22 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
毕业晚会主持词
2014/03/24 职场文书
初三学习计划书范文
2014/04/30 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
白鹤梁导游词
2015/02/06 职场文书
走近毛泽东观后感
2015/06/04 职场文书
工资证明格式模板
2015/06/12 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android