# networkhomework **Repository Path**: esheeper/networkhomework ## Basic Information - **Project Name**: networkhomework - **Description**: 网络应用程序设计大作业 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-13 - **Last Updated**: 2023-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1. linux平台上的TCP并发服务 ![Alt text](1/%E8%BF%90%E8%A1%8C%E6%88%AA%E5%9B%BE.png) ## 2. 进程间的协调通信(4学时) 运行时的答应日志 ``` [ init ]Son 1 thread who read parent data starts in thread id 140547285055040 . [ init ]Son 1 thread who read son 2 data starts in thread id 140547276662336 . [ debug ]Enter son 1 write data! [ init ]Son 2 thread who read parent data starts in thread id 140547285055040 . [ debug ]Son 3 write data '1 Share memory from son 3!' to sharing memory. [ init ]Son 2 thread who read son 1 data starts in thread id 140547276662336 . [ debug ]Enter son 2 write data! [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ info ]Parent receive Son 1 message: Hello, I am son 1. [ init ]Parent thread who read son 1 data starts in thread id 140547285055040 . [ init ]Parent thread who read son 2 data starts in thread id 140547276662336 . [ debug ]Enter parent write data! [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 4 print share memory data:1 Share memory from son 3! [ debug ]Son 3 write data '2 Share memory from son 3!' to sharing memory. [ debug ]Enter son 2 write data! [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Son 4 print share memory data:2 Share memory from son 3! [ debug ]Enter parent write data! [ debug ]Son 3 write data '3 Share memory from son 3!' to sharing memory. [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ info ]Son 4 print share memory data:3 Share memory from son 3! [ debug ]Enter son 2 write data! [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ debug ]Son 3 write data '4 Share memory from son 3!' to sharing memory. [ info ]Son 4 print share memory data:4 Share memory from son 3! [ debug ]Enter parent write data! [ debug ]Son 3 write data '5 Share memory from son 3!' to sharing memory. [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ debug ]Enter son 2 write data! [ info ]Son 4 print share memory data:5 Share memory from son 3! [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ debug ]Son 3 write data '6 Share memory from son 3!' to sharing memory. [ info ]Son 4 print share memory data:6 Share memory from son 3! [ debug ]Enter parent write data! [ debug ]Enter son 2 write data! [ debug ]Son 3 write data '7 Share memory from son 3!' to sharing memory. [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Son 4 print share memory data:7 Share memory from son 3! [ debug ]Son 3 write data '8 Share memory from son 3!' to sharing memory. [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ debug ]Enter son 2 write data! [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 4 print share memory data:8 Share memory from son 3! [ debug ]Enter parent write data! [ debug ]Son 3 write data '9 Share memory from son 3!' to sharing memory. [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ info ]Son 4 print share memory data:9 Share memory from son 3! [ debug ]Enter son 2 write data! [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Parent receive Son 2 message: Hello, I am son 2. [ debug ]Son 3 write data '0 Share memory from son 3!' to sharing memory. [ info ]Son 4 print share memory data:0 Share memory from son 3! [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ debug ]Enter parent write data! [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ debug ]Son 3 write data '1 Share memory from son 3!' to sharing memory. [ debug ]Enter son 2 write data! [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 4 print share memory data:1 Share memory from son 3! [ debug ]Son 3 write data '2 Share memory from son 3!' to sharing memory. [ info ]Son 4 print share memory data:2 Share memory from son 3! [ debug ]Enter parent write data! [ debug ]Enter son 2 write data! [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Parent receive Son 2 message: Hello, I am son 2. [ debug ]Son 3 write data '3 Share memory from son 3!' to sharing memory. [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ info ]Son 4 print share memory data:3 Share memory from son 3! [ debug ]Son 3 write data '4 Share memory from son 3!' to sharing memory. [ debug ]Enter son 2 write data! [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 4 print share memory data:4 Share memory from son 3! [ debug ]Enter parent write data! [ info ]Son 2 receive Parent message: Hello, I am Parent. [ info ]Son 1 receive Parent message: Hello, I am Parent. [ debug ]Son 3 write data '5 Share memory from son 3!' to sharing memory. [ info ]Son 4 print share memory data:5 Share memory from son 3! [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ debug ]Enter son 2 write data! [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ debug ]Son 3 write data '6 Share memory from son 3!' to sharing memory. [ info ]Son 4 print share memory data:6 Share memory from son 3! [ debug ]Enter parent write data! [ info ]Son 1 receive Parent message: Hello, I am Parent. [ info ]Son 2 receive Parent message: Hello, I am Parent. [ debug ]Son 3 write data '7 Share memory from son 3!' to sharing memory. [ debug ]Enter son 2 write data! [ info ]Parent receive Son 2 message: Hello, I am son 2. [ info ]Son 1 receive Son 2 message: Hello, I am son 2. [ info ]Son 4 print share memory data:7 Share memory from son 3! [ debug ]Son 3 write data '8 Share memory from son 3!' to sharing memory. [ debug ]Enter son 1 write data! [ info ]Parent receive Son 1 message: Hello, I am son 1. [ info ]Son 2 receive Son 1 message: Hello, I am son 1. [ info ]Son 4 print share memory data:8 Share memory from son 3! ``` ### 3. ``` 服务端 -------------------------------------esheeper---------------------------------------------- 由于实在是不熟悉winows系统的api 而且平常使用的语言都是更高级的面向对象的语言 所以我想用go语言来代替winows的c语言来实现服务器 但是使用go语言有个问题: go语言中没有进程的概念,只有go routine,而且也没法获取go routine的id. 所以我就使用了内部自定义的id,即通过加锁来确保每一个连接都被赋予一个唯一的id值 其它操作方式与1中的一致 运行结果: 服务端: [ debug ]A connect from address 127.0.0.1:54311 n [ info ]The number of client number: 0 p p p [ debug ]A connect from address 127.0.0.1:54334 n [ info ]The number of client number: 1 p [ info ]The client with grid 1 is in address 127.0.0.1:54334 [ debug ]A connect from address 127.0.0.1:54341 n [ info ]The number of client number: 2 p [ info ]The client with grid 2 is in address 127.0.0.1:54341 [ info ]The client with grid 1 is in address 127.0.0.1:54334 n [ info ]The number of client number: 0 p e [ proc ]Exit process! 客户端1: 3 [ info ]Receive data ok! 客户端2: 2 [ info ]Receive data ok! ``` ### **4.** 对于第四问分为客户端和服务器 服务器也是采用golang语言编写,并且通过robotgo库进行鼠标的操作 通信原理:基于TCP > 通信逻辑 > > APP通过设置服务器IP与端口,连接到服务器。 > APP通过两种方式来操作鼠标: > > **1.** 等比点击操作,即将电脑屏幕等比换算为屏幕的大小,然后用户点击的位置就是鼠标移动的位置,用户双击相当于鼠标左键点击,用户双指触摸相当于鼠标右键 > **2.** 鼠标类比操作,用户需要滑动手机屏幕,根据滑动的距离换算为鼠标移动的距离。 > > 服务端也是采用Go语言编写,采用了一个第三方库作为鼠标驱动。采用TCP作为通信。 > 首先需要设置ip和端口,连接成功后进入MouseMove视图进行鼠标操作。 ![Alt text](https://file%2B.vscode-resource.vscode-cdn.net/d%3A/code/%E7%BC%96%E7%A8%8B%E4%BD%9C%E4%B8%9A/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/networkhomework/4/%E8%BF%90%E8%A1%8C%E6%88%AA%E5%9B%BE.png?version%3D1686297339889)