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 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
Python简单日志处理类分享
Feb 14 Python
简单实现python爬虫功能
Dec 31 Python
Python选课系统开发程序
Sep 02 Python
python利用正则表达式提取字符串
Dec 08 Python
使用requests库制作Python爬虫
Mar 25 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
Python简单处理坐标排序问题示例
Jul 11 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
解决Python使用列表副本的问题
Dec 19 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 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
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
使用js实现数据格式化
2014/12/03 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
python 如何上传包到pypi
2020/12/24 Python
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
留学推荐信写作指南
2014/01/25 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
竞赛口号大全
2014/06/16 职场文书
物流管理专业推荐信
2014/09/06 职场文书
党员民主生活会材料
2014/12/15 职场文书
2014年度考核工作总结
2014/12/24 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
入团申请书格式
2019/06/20 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
MySQL注入基础练习
2021/05/30 MySQL
Python并发编程实例教程之线程的玩法
2021/06/20 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python