首页 > 编程语言 >Python篇之网络编程,实现简单的服务端和客户端的内容传输

Python篇之网络编程,实现简单的服务端和客户端的内容传输

时间:2024-03-27 18:33:46浏览次数:22  
标签:socket Python server msg recv 服务端 客户端

本小节内容:实现简单的信息交流

文章目录


一、 Socket介绍

socket (简称 套接字) 模块是其内置的标准库之一,它实现了BSD sockets API,允许开发者在Python程序中进行网络通信。Python的socket模块为开发者提供了丰富的API,使得编写网络客户端和服务器变得相对简单,无论是构建简单的聊天应用、Web服务器还是其他网络应用程序都离不开它的支持

在这里插入图片描述

二、客户端与服务端

Socket服务端:等待其它进程的连接、可接受发来的消息、可以回复消息
Socket客户端:主动连接服务端、可以发送消息、可以接收回复

在这里插入图片描述

三、在python中实现网络通信

首先在pycharm中新建两个模块,分别是客户端socket和服务端socket

在这里插入图片描述

1. 服务端

语法:

1.创建socket对象
import socket
socket_server=socket.socket()

2.绑定socket_server到指定IP和地址,这里是以二元元组的形式填写
socket_server.bind(host,port) 

3. 服务端开始监听端口  backlog为int类型,表示允许接受数量,可填可不填
socket_server.listen(backlog)

4. 接受客户端连接,获得连接对象 注意:应先链接成功后才能输出,如未链接成功则卡在此步
conn,address=socket_server.accept()
print(f"接收到客户端连接,连接来自:{address}")

5.客户端连接后,通过recv方法,接收客户端发送的消息
while True:
	# 两种编码类型相互转换 recv方法的传参是buffsize,缓冲区大小一般设置为1024
	data = conn.recv(1024).decode("Utf-8")
    if data == 'exit':
		break
	print("接收到发送来的数据:",data)

6. 关闭连接
conn.close()
socket_server.close()

案例:

import socket
socket_server=socket.socket()
socket_server.bind(("localhost",8888))
socket_server.listen(1)
# accpet方法返回的是二元元组(链接对象,客户端地址信息)

conn,address=socket_server.accept()

print(f"接收到了客户端的链接,客户端的信息是:{address}")
# 利用循环无限的与客户端的交流
while True:
    data: str = 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()

2. 客户端

语法:

1.创建socket对象
import socket
socket_server=socket.socket()

2. 连接到服务端 这里使用的是connect方法
socket_client.connect(host,port) 

3.发送信息
while True:
    msg=input("请输入要给服务发送的消息:")
    if msg == 'exit':
        break
    # 接收的信息相互转换(字节和UTF-8格式转换)
    socket_client.send(msg.encode("UTF-8"))
4.接收服务端信息    
    recv_data=socket_client.recv(1024)
    print(f"服务端回复的信息是:{recv_data.decode('UTF-8')}")

5. 关闭链接
socket_client.close()

案例:

import socket
# 创建对象
socket_client=socket.socket()
# 链接服务端使用connect
socket_client.connect(("localhost",8888))

# 使用循环
while True:
    msg=input("请输入要给服务发送的消息:")
    if msg == 'exit':
        break
    # 接收的信息相互转换(字节和UTF-8格式转换)
    socket_client.send(msg.encode("UTF-8"))
    recv_data=socket_client.recv(1024)
    print(f"服务端回复的信息是:{recv_data.decode('UTF-8')}")

# 关闭链接
socket_client.close()

3. 连接测试

在这里插入图片描述

标签:socket,Python,server,msg,recv,服务端,客户端
From: https://blog.csdn.net/weixin_74994771/article/details/137056426

相关文章

  • 【Python系列】Python 中 YAML 文件与字典合并的实用技巧
    ......
  • 【Python】Python基本数据类型(超详细)
    前言在上一篇文章我们简单介绍了一下Python,本章我们就开始正式学习Python,在此之前,考虑到Python环境有的小伙伴可能没有,所有我开了一个QQ群,里面有代码编辑器(PyCharm)的安装与破解使用,如果有大佬需要的话可以加群自行安装,这个群创建的目的也是方便各位讨论技术,QQ群号:455341......
  • Python中的datetime模块:轻松拿捏时间操作
    前言在Python中,处理日期和时间是非常常见的任务,无论是在开发Web应用程序、数据分析还是其他领域。datetime模块为我们提供了丰富的功能,可以轻松处理日期和时间,从简单的日期算术运算到复杂的时区转换,应有尽有。本文将深入探讨datetime模块的功能和用法,帮助大家轻松拿捏时间操作。......
  • Linux开机运行自定义python程序
    引言我们经常会自己写一些监控类的、管理类的,或者是其他类别的一些,开机就需要运行的软件,但是我们又不能实时知道计算机什么时候重启了,那么这里,有一个方法就很重要了,那就是把这个程序做成服务,在开机的时候就随计算机进行启动操作步骤第一步创建一个test.service文件需要......
  • Python——应该替换的语法
    格式化字符串使用原始字符串如果字符串又很多反斜杠,请使用原始字符串转义字符允许你在字符串字面量中插入原本不能包含的文本。#其中的\是将'转义成字符串,而不是结束的'index='Zophie\'schair'原始字符串是具有r前缀的字符串字面量,它不把反斜杠是为转义字符,而是......
  • python闹钟实例
    #coding:utf-8fromtkinterimport*importmath,timeglobalListglobaliroot=Tk()List=[]root.title("asimpleclock")#设置窗口是否可以变化长/宽root.resizable(1,1)defpoints():foriinrange(1,13):x=200+130*math.sin(2*math.pi......
  • 集群聊天服务器与客户端开发
    服务器服务技术特点如何使用依赖库客户端服务器服务器代码在https://gitee.com/ericling666/sponge,对应的客户端源代码在https://gitee.com/ericling666/spongeclient。对本项目的演示,请看视频【集群聊天服务器与仿微信客户端开发,服务器基于muduo,mysql,redis,客户端基......
  • 《python编程从入门到实践》 Sublime中运行程序提示“Python was not found but can b
    安装过程1.安装python32.安装SublimeText①下载②让SublimeText使用命令python3来运行Python程序3.运行①新建helloworld②运行遇到的问题执行以上步骤后:1.搜索解决方法2.关掉后执行3.更改buildsystem方式python3改为python,执行,成功备注:发现保持应用打开......
  • 901-深入浅出Python量化交易实战的配套视频和代码(段小手)中文PDF+源代码(源文件)
    小瓦的故事——从零开始本书源于一个真实的故事,故事的主角是一位名叫小瓦的姑娘。小瓦出生在一个普通的家庭,父母都是老实淳朴的普通人,靠着并不丰厚的收入把小瓦养育成人。18岁那年,小瓦考上了一所不好不坏的大学,所学专业是一个就业前景算不上理想的专业。再加上她本身也谈不......
  • python教程6 传递参数函数
    #!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明defprintinfo(kname,age):"打印任何传入的字符串"print("Name:",kname)print("Age",age)return#调用printinfo函数printinfo(age=50,kname="miki")#!/......