# 计网小组作业 **Repository Path**: csu_xuzicheng/netWork ## Basic Information - **Project Name**: 计网小组作业 - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-26 - **Last Updated**: 2025-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 引言 1. 目前做了两个服务端和两个客户端。 - 其中**oneThreadServe**是一个单线程的服务端。 - **multiThreadServe**为多线程。 - 客户端**clientCrazy**是用来进行客户端性能测试的,会多线程不断的向服务器发送请求,并统计失败率。 - **normalClient**是一个普通的客户端,向服务器发送一个请求并将结果进行打印 2. 总结一下socket进行服务端编写的流程: 1. 首先创建一个套接字socket,这步是为了打开一个通信端口,准备收发数据 2. 接着就是绑定IP和端口号 3. 然后进行监听端口(listen方法) 4. 接收客户端连接并进行处理 1. 通过获取客户端的地址(IP)和使用的socket来获取请求信息 2. 将请求信息转变为字符串进行分割,并获取URL来判断其访问的资源 3. 根据访问的资源来拼接相应的响应 4. 关闭连接 ___ **PS**:客户端的流程其实一样,只是把顺序反了一下,先拼接请求并发送,然后将获取的响应的响应体打印。代码里面每行我都有注释,逻辑应该还是比较清晰的 ___ 3. 需要修改的部分: - 每个py文件内都有配访问或者是监听的IP - 对于**服务端**来说,直接配置0.0.0.0表示监听网络下所有IP - 对于**客户端**,需要配置为你电脑上面的IP,不过因为客户端和服务端都是在自己电脑跑,因此设置为127.0.0.1,即本机地址就行。后面想通过内网穿透访问我的电脑的话就需要修改为我电脑分配到的虚拟IP - clientCrazy中设置了线程的数量、请求间隔、访问的最长时间和总运行时间,演示时可以通过调整参数来直观的看见出错率的变化。后面有时间出可视化界面的话应该更方便。 4. **一点扩展** 1. 目录下的内网穿透.docx文件详细的讲述了如何利用zerotier来实现一台主机从外网来访问另一台主机的内网,简单来说就是可以在别人的电脑上访问你电脑上面跑起来的服务器。 2. 目录下的热点实现互联.docx讲述了如何通过热点来实现主机间的访问,也是可以在别人电脑上面访问你电脑上的服务器,比如tomcat等。这个操作起来会更加简单,不过距离有限,只能在热点能覆盖的范围内通信,而zerotier理论上能够实现远程访问,具体跟他们的原理有关。 3. clientCrazyGUI.py是一个测试服务器性能的可视化的代码,能可视化的调整参数,并且直观的看见输出