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中实现参数类型检查的简单方法
Apr 21 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
浅谈Python 递归算法指归
Aug 22 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
Python序列化与反序列化相关知识总结
Jun 08 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
global.php
2006/12/09 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
javascript常见操作汇总
2014/09/03 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
道路建设实施方案
2014/03/18 职场文书
天河观后感
2015/06/11 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书