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获取当前计算机cpu数量的方法
Apr 18 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
python实现小球弹跳效果
May 10 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
Jun 04 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
python excel和yaml文件的读取封装
Jan 12 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中的foreach问题
2013/06/30 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
tab栏切换原理
2017/03/22 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
求职信范文英文版
2014/01/05 职场文书
村捐赠仪式答谢词
2014/01/21 职场文书
商务英语广告词大全
2014/03/18 职场文书
活动总结模板
2014/05/09 职场文书
婚前协议书范本
2014/10/27 职场文书
学校节水倡议书
2015/04/29 职场文书