Python采用socket模拟TCP通讯的实现方法

 更新时间:2014年11月19日 14:26:24   投稿:shichen2014  
这篇文章主要介绍了Python采用socket模拟TCP通讯的实现方法,程序分为TCP的server端与client端两部分,分别对这两部分进行了较为深入的分析,需要的朋友可以参考下

本文实例讲述了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 二叉树的概念案例详解

    这篇文章主要介绍了二叉树的概念案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Python从视频中提取音频的操作

    Python从视频中提取音频的操作

    这篇文章主要介绍了Python从视频中提取音频的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 本机安装PaddlePaddle安装指南及步骤详解

    本机安装PaddlePaddle安装指南及步骤详解

    PaddlePaddle是百度研发的开源开放的深度学习平台,有全面的官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型。这篇文章主要介绍了本机安装PaddlePaddle安装指南,需要的朋友可以参考下
    2021-12-12
  • python实现单机五子棋对战游戏

    python实现单机五子棋对战游戏

    这篇文章主要为大家详细介绍了python实现单机五子棋对战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • python matplotlib中文显示参数设置解析

    python matplotlib中文显示参数设置解析

    这篇文章主要介绍了python matplotlib中文显示参数设置解析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 详解Anaconda安装tensorflow报错问题解决方法

    详解Anaconda安装tensorflow报错问题解决方法

    这篇文章主要介绍了Anaconda安装tensorflow报错问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 如何在django中运行scrapy框架

    如何在django中运行scrapy框架

    这篇文章主要介绍了如何在django中运行scrapy框架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Pyqt5 实现多线程文件搜索的案例

    Pyqt5 实现多线程文件搜索的案例

    这篇文章主要介绍了Pyqt5 实现多线程文件搜索的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python3中的列表,元组,字典,字符串相关知识小结

    Python3中的列表,元组,字典,字符串相关知识小结

    这篇文章主要介绍了Python3中的列表,元组,字典,字符串相关知识小结,小编觉得挺不错的,分享给大家,需要的朋友可以参考下。
    2017-11-11
  • pandas中concat函数实现横向连接

    pandas中concat函数实现横向连接

    在pandas中,concat函数可用于合并不同的Series和DataFrame对象,本文主要介绍了pandas中concat函数实现横向连接,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04

最新评论