0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Python中使用socket

科技绿洲 来源:网络整理 作者:网络整理 2024-11-01 16:10 次阅读

1. 基本概念

在开始使用socket之前,我们需要了解一些基本的网络通信概念:

  • IP地址 :用于标识网络上的设备。
  • 端口 :用于标识设备上的特定服务。
  • 协议 :用于规定数据传输的规则,如TCP和UDP。

2. 创建Socket

Python中,我们使用socket模块来创建socket。以下是创建一个TCP socket的示例代码:

import socket

# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

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

3. 连接和监听

3.1 客户端连接

客户端使用connect方法连接到服务器:

# 连接到服务器
s.connect(('localhost', 12345))

这里,('localhost', 12345)表示服务器的IP地址和端口号。

3.2 服务器监听

服务器使用bindlisten方法来监听客户端的连接:

# 绑定地址和端口
s.bind(('localhost', 12345))

# 开始监听
s.listen(5)

listen(5)表示服务器可以同时处理5个连接请求。

4. 数据传输

4.1 客户端发送数据

客户端使用send方法发送数据:

# 发送数据
s.sendall(b'Hello, server!')

这里,b'Hello, server!'表示要发送的数据,b前缀表示这是一个字节字符串。

4.2 服务器接收数据

服务器使用accept方法接收客户端的连接请求,并使用recv方法接收数据:

# 接收客户端连接
conn, addr = s.accept()

# 接收数据
data = conn.recv(1024)
print(data.decode())

这里,1024表示接收缓冲区的大小。

5. 关闭连接

在数据传输完成后,我们需要关闭连接:

# 关闭连接
s.close()

6. 完整示例

以下是一个完整的客户端和服务器示例:

客户端代码:

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
s.connect(('localhost', 12345))

# 发送数据
s.sendall(b'Hello, server!')

# 关闭连接
s.close()

服务器代码:

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定地址和端口
s.bind(('localhost', 12345))

# 开始监听
s.listen(5)

while True:
# 接收客户端连接
conn, addr = s.accept()
print(f'Connected by {addr}')

# 接收数据
data = conn.recv(1024)
print(data.decode())

# 关闭连接
conn.close()

7. UDP通信

除了TCP之外,socket还支持UDP协议。以下是使用UDP通信的示例:

客户端代码:

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 发送数据
s.sendto(b'Hello, server!', ('localhost', 12345))

# 关闭连接
s.close()

服务器代码:

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定地址和端口
s.bind(('localhost', 12345))

while True:
# 接收数据
data, addr = s.recvfrom(1024)
print(f'Received from {addr}: {data.decode()}')

8. 总结

通过使用Python的socket模块,我们可以轻松地实现网络通信。本文介绍了socket的基本概念、创建socket、连接和监听、数据传输以及关闭连接等方面的内容,并提供了完整的客户端和服务器示例代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Socket
    +关注

    关注

    0

    文章

    193

    浏览量

    34612
  • 网络通信
    +关注

    关注

    4

    文章

    777

    浏览量

    29734
  • python
    +关注

    关注

    54

    文章

    4763

    浏览量

    84337
收藏 人收藏

    评论

    相关推荐

    何在Linux中使用htop命令

    本文介绍如何在 Linux 中使用 htop 命令。
    的头像 发表于 12-04 14:45 1763次阅读
    如<b class='flag-5'>何在</b>Linux<b class='flag-5'>中使</b>用htop命令

    何在Python中使用Selenium

    :Elem.send_keys用于在插入值后按Enter  · 代码行13:关闭  输出值  用户名“ guru99”的值和密码输入。  上述就是关于如何在Python中使用Selenium的全部内容介绍,想了解更多关于
    发表于 09-08 18:17

    Python学习之网络编程Socket分享

    Python学习之网络编程Socket
    发表于 07-02 08:18

    SE5如何在Python中使用SAIL?

    SE5已经预装在/system/lib下,只需要设置好环境变量,然后就可以在python中使用SAIL了: # SE5设置环境变量export PATH=$PATH:/system
    发表于 09-18 06:22

    何在VxWorks系统中使用TrueType字库

    何在VxWorks系统中使用TrueType字库
    发表于 03-29 12:25 19次下载

    为BM1397制作Socket以在矿工中使

    电子发烧友网站提供《为BM1397制作Socket以在矿工中使用.zip》资料免费下载
    发表于 07-07 15:12 0次下载
    为BM1397制作<b class='flag-5'>Socket</b>以在矿工<b class='flag-5'>中使</b>用

    何在java代码中使用HTTP代理IP

    何在java代码中使用HTTP代理IP。
    的头像 发表于 08-04 15:38 2165次阅读

    何在python代码中使用HTTP代理IP

    何在python代码中使用HTTP代理IP。
    的头像 发表于 08-04 15:46 1231次阅读

    何在PHP代码中使用HTTP代理IP

    何在PHP代码中使用HTTP代理IP。
    的头像 发表于 08-04 16:08 2389次阅读

    何在python代码中使用HTTP代理IP

    如何再python代码中使用HTTP代理IP。
    的头像 发表于 09-13 09:25 960次阅读

    何在Arduino中使用LDR

    电子发烧友网站提供《如何在Arduino中使用LDR.zip》资料免费下载
    发表于 10-31 09:50 0次下载
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用LDR

    何在Arduino中使用Modbus

    电子发烧友网站提供《如何在Arduino中使用Modbus.zip》资料免费下载
    发表于 11-22 11:21 14次下载
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用Modbus

    何在Arduino中使用微型伺服

    电子发烧友网站提供《如何在Arduino中使用微型伺服.zip》资料免费下载
    发表于 11-28 09:50 1次下载
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用微型伺服

    何在Python中使用MQTT

    本文主要介绍如何在 Python 项目中使用 paho-mqtt 客户端库 ,实现客户端与 MQTT 服务器的连接、订阅、取消订阅、收发消息等功能。
    的头像 发表于 12-22 10:41 9315次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>Python</b><b class='flag-5'>中使</b>用MQTT

    何在测试中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大会 上分享了他如何在测试中使用 ChatGPT。
    的头像 发表于 02-20 13:57 698次阅读