Day19:网络编程与实战

alt

在前面的章节中,我们介绍了Python的开发环境,包括Jupyter Notebook、VS Code和PyCharm等。现在我们将进入网络编程的领域,学习如何使用Python进行网络通信和实战项目。

1. 网络编程概述

网络编程是指使用计算机网络进行通信和数据交换的编程过程。Python提供了多个模块和库,使网络编程变得简单和灵活。其中最常用的是socket模块,它提供了一个底层的网络接口,允许我们创建各种网络应用,现在我们来看看socket模块都有哪些功能。

2. Socket模块

Socket是Python中用于网络编程的核心模块之一。它提供了底层的网络通信功能,允许我们创建客户端和服务器端的网络应用,我们平时看到网页、聊天室,虽然不一定都是用Python写的,但是都是这个原理。

使用Socket模块,我们可以执行以下操作:

  • 创建Socket对象
  • 绑定地址和端口
  • 监听连接请求
  • 接受连接并建立通信
  • 发送和接收数据
  • 关闭连接

以下是Socket模块常用的一些内建方法:

  • socket():创建一个Socket对象,可指定地址族和套接字类型。
  • bind(address):绑定地址和端口。
  • listen(backlog):开始监听连接请求,指定等待连接的最大数量。
  • accept():接受连接请求并返回连接对象和客户端地址。
  • connect(address):连接到服务器,指定服务器的地址和端口。
  • send(data):发送数据给连接的另一端。
  • recv(buffer):接收数据,buffer指定每次最大接收的字节数。
  • close():关闭连接。

3. 网络编程实战项目:简单聊天室

说了这么多,但是具体怎么使用,您可能还有点迷糊,现在让我们一起来构建一个聊天室,让您更深入了解Socket的用法。我们将依次构建该聊天室的服务器端和客户端。

服务器端:

步骤一:导入所需模块和库

import socket  		#Socket的python内置库
import threading	#会使用到多线程的知识

步骤二:创建服务器套接字并绑定地址与端口

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

# 绑定地址和端口
server_address = ('localhost', 8888)
server_socket.bind(server_address)

步骤三:监听连接请求并打印服务器地址

# 监听连接请求
server_socket.listen(10)  #最大连接数量为10
print('Server is listening on {}:{}'.format(*server_address))

步骤四:定义客户端处理函数

def handle_client(client_socket, client_address):
    while True:
        try:
        	# 接收数据
            data = client_socket.recv(1024)
            message 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

大模型-AI小册 文章被收录于专栏

1. AI爱好者,爱搞事的 2. 想要掌握第二门语言的Javaer或者golanger 3. 决定考计算机领域研究生,给实验室搬砖的uu,强烈建议你花时间学完这个,后续搬砖比较猛 4. 任何对编程感兴趣的,且愿意掌握一门技能的人

全部评论
socket模块感觉讲得不多啊
点赞 回复 分享
发布于 2023-07-14 15:11 上海
socket模块的使用难度如何?
点赞 回复 分享
发布于 2023-06-15 10:36 江西
socket模块的具体功能是什么?
点赞 回复 分享
发布于 2023-06-15 10:30 江苏

相关推荐

10-26 13:03
已编辑
门头沟学院 物流经理
在okr拆解的小太阳...:实习待过,我待的部门氛围很好,基本不加班,双休有保证。
投递正浩创新EcoFlow等公司10个岗位
点赞 评论 收藏
分享
12-04 16:18
已编辑
东华理工大学 前端工程师
面试官全程关摄像头1.自我介绍一下2.React和Vue哪个更熟悉一点3.你在之前那段实习经历中有没有什么技术性的突破(我只是实习了44天工作28天,我把我能说的都说了)4.你封装的哪个表单组件支不支持动态传值5.自己在实习阶段Vue3项目封装过hook吗6.hook有什么作用7.Vue2和Vue3的响应式区别(我说一个是proxy是拦截所有的底层操作,Object.defineProperty本身就是一个底层操作,有些东西拦截不了,比如数组的一些操作还有等等,面试官就说实在要拦截能不能拦截????我心想肯定不行呀,他的底层机制就不允许吧)8.pinia和vuex的区别(这个回答不出来是我太久没用了)9.pinia和zustand的区别,怎么选(直接给我干懵了)(我说react能用pinia吗  他说要用的话也可以)10.渲染一万条数据,怎么解决页面卡顿问题(我说分页、监听滚轮动态加载,纯数据展示好像还可以用canvas画)(估计是没说虚拟表单,感觉不满意)11.type和interface的区别12.ts的泛型有哪些作用(我就说了一个结构相同但是类型不同的时候可以用,比如请求响应的接口,每次的data不同,这里能用一个泛型,他问我还有什么)13.你项目用的是React,如果让你再写一遍你会选择什么14.pnpm、npm、yarn的区别15.dependencies和devdependencies的区别总而言之太久没面试了,上一段实习的面试js问了很多。结果这次js一点没问,网络方面也没考,表现得很一般,但是知道自己的问题了  好好准备,等待明天的影石360和周四的腾讯了  加油!!!
解zj:大三的第一段面试居然是这样的结局
查看15道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务