python socket模块创建和使用套接字示例详解

 更新时间:2023年06月09日 09:41:01   作者:移动安全星球  
这篇文章主要为大家介绍了python socket模块来创建和使用套接字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

套接字socket

套接字(socket)是计算机之间进行通信的一种技术,它允许不同主机上的进程之间进行数据交换。在Python中,我们可以使用socket模块来创建和使用套接字。

首先,我们需要导入socket模块:

import socket

在网络编程中,有两种主要类型的套接字:流套接字(Stream Sockets)和数据报套接字(Datagram Sockets)。流套接字使用传输控制协议(TCP)进行通信,而数据报套接字使用用户数据报协议(UDP)进行通信。我们将主要关注TCP套接字,因为它们更常用且提供了可靠的双向通信。

创建套接字

要创建一个TCP套接字,我们可以使用socket.socket()函数:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

这里,socket.AF_INET表示我们使用IPv4地址,socket.SOCK_STREAM表示我们使用TCP协议。

绑定套接字

创建套接字后,我们需要将其绑定到一个地址和端口。这可以使用bind()方法完成:

address = ('localhost', 12345)
s.bind(address)

这里,我们绑定了套接字到本地地址('localhost')和端口(12345)。

监听连接

在绑定套接字后,我们需要开始监听客户端的连接。我们可以使用listen()方法来实现这一点:

s.listen(5)

这里的数字5表示允许的最大连接数。

接受连接

当有客户端尝试连接时,我们可以使用accept()方法来接受连接。这将返回一个新的套接字对象和客户端地址:

client_socket, client_address = s.accept()

发送和接收数据

现在我们已经建立了连接,可以使用send()recv()方法发送和接收数据。例如:

data = client_socket.recv(1024)  # 接收最多1024字节的数据
client_socket.send(b'Hello, client!')  # 发送数据

请注意,我们需要使用字节类型的数据进行通信。

关闭套接字

通信完成后,我们需要关闭套接字以释放资源。我们可以使用close()方法来实现这一点:

client_socket.close()
s.close()

这就是一个简单的TCP套接字服务器的基本结构。为了让您更好地理解,这里有一个完整的示例:

TCP服务器示例

import socket
def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    address = ('localhost', 12345)
    s.bind(address)
    s.listen(5)
    print("Waiting for connections...")
    client_socket, client_address = s.accept()
    print(f"Connected to {client_address}")
    data = client_socket.recv(1024)
    print(f"Received: {data}")
    client_socket.send(b'Hello, client!')
    client_socket.close()
    s.close()
if __name__ == '__main__':
    main()

这个示例展示了如何创建一个简单的TCP服务器,它接受来自客户端的连接和数据,并向客户端发送一条消息。您可以根据自己的需求修改这个示例,以实现不同的功能。

以上就是python socket模块创建和使用套接字示例详解的详细内容,更多关于python socket套接字的资料请关注脚本之家其它相关文章!

相关文章

  • python归并排序算法过程实例讲解

    python归并排序算法过程实例讲解

    在本篇文章里小编给大家整理的是一篇关于python归并排序算法过程实例讲解内容,有兴趣的朋友们可以学习下。
    2020-11-11
  • python opencv设置摄像头分辨率以及各个参数的方法

    python opencv设置摄像头分辨率以及各个参数的方法

    下面小编就为大家分享一篇python opencv设置摄像头分辨率以及各个参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python爬虫实战之最简单的网页爬虫教程

    python爬虫实战之最简单的网页爬虫教程

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。下面这篇文章就来给大家介绍了关于利用python实现最简单的网页爬虫的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • pytorch之torch.flatten()和torch.nn.Flatten()的用法

    pytorch之torch.flatten()和torch.nn.Flatten()的用法

    这篇文章主要介绍了pytorch之torch.flatten()和torch.nn.Flatten()的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Python 中的Selenium异常处理实例代码

    Python 中的Selenium异常处理实例代码

    本文通过实例代码给大家介绍了Python 中的Selenium异常处理的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • python fabric使用笔记

    python fabric使用笔记

    这篇文章主要介绍了python fabric使用笔记,fabric是一款实现远程操作和部署强大工具,本文就给出了它的多个使用实例,需要的朋友可以参考下
    2015-05-05
  • Python实现列表中非负数保留,负数转化为指定的数值方式

    Python实现列表中非负数保留,负数转化为指定的数值方式

    这篇文章主要介绍了Python实现列表中非负数保留,负数转化为指定的数值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python中使用matplotlib绘制热力图

    python中使用matplotlib绘制热力图

    热力图,是一种通过对色块着色来显示数据的统计图表,它通过使用颜色编码来表示数据的值,并在二维平面上呈现出来,本文就给大家介绍一下python使用matplotlib绘制热力图的方法,需要的朋友可以参考下
    2023-08-08
  • 如何使用ChatGPT搭建AI网站

    如何使用ChatGPT搭建AI网站

    ChatGPT是一种基于人工智能技术的聊天机器人,可以用于搭建AI网站。本文将介绍如何使用ChatGPT搭建AI网站,包括安装ChatGPT、创建聊天机器人、添加自定义功能等。
    2023-03-03
  • 记录Django开发心得

    记录Django开发心得

    学习使用Django也有一个月了,也该整理整理了,给自己,也给大家分享一下哈(再次鄙视国内的IT技术文档/问答环境,抄抄抄,你们TM自己写点不行啊!!!!),当然我刚学Django/Python,也欢迎指点错误的地方,
    2014-07-07

最新评论