Python实现基本Socket服务端与客户端通信的完整代码

 更新时间:2023年06月02日 10:05:05   作者:卡卡西最近怎么样  
这篇文章主要介绍了Python实现基本Socket服务端与客户端通信,分步详解与完整代码都有,按需所求即可,对Python Socket服务端与客户端通信相关知识感兴趣的朋友一起看看吧

该文章使用 python 实现基本的 socket 服务端与客户端通信,分步详解与完整代码都有,按需所求即可。

(一)服务端代码:

1. 引入自带的socket模块,并创建一个socket实例,服务端需要使用 bind 将该实例绑定到指定域名与端口下,域名与端口号放在元组中传入

import socket
#创建 socket对象
socket_server=socket.socket()
# 绑定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))

2. 设置端口监听,listen() 内书写数字,表示可以接受链接的数量

#监听端口
socket_server.listen(1)

3. 使用 accept 方法 等待客户端连接,该方法是个阻塞方法,没有链接则会一直阻塞在此步。连接成功会返回一个元组,元组内分别为 连接对象客户端地址信息

result=socket_server.accept()
conn=result[0]  #客户端连接对象
address=result[1]  #客户端地址信息

4. 使用连接对象的 recv 方法 接收客户端发来的消息,1024表缓冲区大小,可自行设置,并解码为UTF-8 格式

   data = conn.recv(1024).decode("UTF-8")
   print(f"客户端发来的消息是:{data}")

5. 使用连接对象的 send 方法 给客户端发送消息

msg=input("请输入回复的消息:")
conn.send(msg.encode("UTF-8"))

6. 通信结束后分别断开链接

conn.close()
socket_server.close()

完整服务端代码:

import socket
#创建 socket对象
socket_server=socket.socket()
# 绑定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))
#监听端口, listen()内书写数字,表示可以接受链接的数量
socket_server.listen(1)
#等待客户端连接,接收到的 result是一个二元元组, accept()是一个阻塞的方法,如果没有连接不会往下执行
result=socket_server.accept()
conn=result[0]  #客户端连接对象
address=result[1]  #客户端地址信息
print(f"接收到的客户端连接信息为{address}")
while True:
   #接收客户端信息,recv接受的参数是缓冲区大小,一般1024即可,返回的是一个字节数组,bytes对象,不是字符串,再将其decode解码为字符串对象
   data = conn.recv(1024).decode("UTF-8")
   print(f"客户端发来的消息是:{data}")
   #回复消息
   msg=input("请输入回复的消息:")
   if msg=='exit':
       break
   conn.send(msg.encode("UTF-8"))
#关闭连接
conn.close()
socket_server.close()

(二)客户端代码:

1. 引入自带的socket模块,并创建一个socket实例,然后链接服务端的域名与端口,也是元组作为参数传入

import socket
#创建 socket对象
socket_client=socket.socket()
# 让 socket对象 socket_client 连接到服务端
socket_client.connect(("localhost",8888))

2. 然后就可以使用 send 给服务端发送消息

msg=input("请输入你要发送的消息:")
socket_client.send(msg.encode("UTF-8"))

3. 发送后使用 recv 等待接收服务端回复的消息,同样需要设置缓冲区与解码

   data=socket_client.recv(1024).decode("UTF-8")
   print(f"服务器回复的消息为:{data}")

4. 通信结束后断掉链接

socket_client.close()

完整客户端代码:

import socket
#创建 socket对象
socket_client=socket.socket()
# 让 socket对象 socket_client 连接到服务端
socket_client.connect(("localhost",8888))
while True:
   msg=input("请输入你要发送的消息:")
   if msg=='exit':
      break
   #发送消息
   socket_client.send(msg.encode("UTF-8"))
   #接收消息
   data=socket_client.recv(1024).decode("UTF-8")
   print(f"服务器回复的消息为:{data}")
socket_client.close()

到此这篇关于Python实现基本Socket服务端与客户端通信的文章就介绍到这了,更多相关Python Socket服务端与客户端内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python数据结构列表

    Python数据结构列表

    这篇文章主要介绍了Python数据结构列表,本文重点内容主要是对列表数据结构的使用,在Python中,序列是一组按顺序排列的值。Python 有 3 种内置的序列类型:字符串、 元组和列表,下面一起进入文章了解更详细内容吧,需要的小伙伴可以参考一下</P><P>
    2021-12-12
  • Pythony运维入门之Socket网络编程详解

    Pythony运维入门之Socket网络编程详解

    这篇文章主要介绍了Pythony运维入门之Socket网络编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python Django模板系统详解

    Python Django模板系统详解

    这篇文章主要介绍Django模板系统Django模板系统的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • Python 切片索引越界的问题(数组下标越界)

    Python 切片索引越界的问题(数组下标越界)

    Python语言处理字符串、数组类的问题时有一定概率需要使用切片方法,本文主要介绍了Python 切片索引越界的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Python中的数据对象持久化存储模块pickle的使用示例

    Python中的数据对象持久化存储模块pickle的使用示例

    这篇文章主要介绍了Python中的数据对象持久化存储模块pickle的使用示例,重点讲解了pickle中模块中对象持久化和文件读取的相关方法,需要的朋友可以参考下
    2016-03-03
  • Python Numpy 自然数填充数组的实现

    Python Numpy 自然数填充数组的实现

    今天小编就为大家分享一篇Python Numpy 自然数填充数组的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • win10环境下配置vscode python开发环境的教程详解

    win10环境下配置vscode python开发环境的教程详解

    这篇文章主要介绍了win10环境下配置python开发环境(vscode)的教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • python实现简易数码时钟

    python实现简易数码时钟

    这篇文章主要为大家详细介绍了python实现简易数码时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python列表(list)、字典(dict)、字符串(string)基本操作小结

    Python列表(list)、字典(dict)、字符串(string)基本操作小结

    这篇文章主要介绍了Python列表(list)、字典(dict)、字符串(string)基本操作小结,本文总结了最基本最常用的一些操作,需要的朋友可以参考下
    2014-11-11
  • 使用Python实现企业微信的自动打卡功能

    使用Python实现企业微信的自动打卡功能

    下面就通过Python程序来实现自动打卡,原理很简单,用Python设置定时任务,然后通过adb操作手机,完成打卡功能,感兴趣的朋友跟随小编一起看看吧
    2019-04-04

最新评论