| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

计算机网络编程课程设计

文***品

贡献于2020-12-30

字数:10225


课题:基TCPSocket通讯编程
课程设计目:
1 够深刻解socket编程思想
2 实现层面理解TCPUDP链接
二 课程设计环境:
1 windows XP win7 系统
2 配置java虚拟机环境变量
3 编写java程序软件Eclipse
三 课程设计原理:
Windows Sockets规范意提供应程序开发者套简单API家网络软件供应商遵守外特定版Windows基础Windows Sockets定义二进制接口(ABI)保证应Windows Sockets API应程序够网络软件供应商符合Windows Sockets协议实现工作份规范定义应程序开发者够网络软件供应商够实现套库函数调相关语义 遵守套Windows Sockets规范网络软件称Windows Sockets兼容Windows Sockets兼容实现提供者称Windows Sockets提供者网络软件供应商必须百分百实现Windows Sockets规范做现Windows Sockets兼容

四 课程设计容:
(1) 网络程序初始化服务器客户端WinSock API均求调WinSock函数前先调WSAStartUp函数初始化
(2)创建套接字Socket()
(3)配置启动套接字
(4)通Socket发送接收数

(5)程序结束时必须关闭SocketWSAStartUp()相应函数WSACleanUp()释放分配部缓区资源
代码:
EchoThreadServer
import javanet*
public class EchoThreadServer {
public static void main(String[] args) throws Exception{
TODO Autogenerated method stub
ServerSocket server null
Socket client null
InetAddress remAdd null
server new ServerSocket(12345)
boolean f true
while (f) {
Systemoutprintln(连接正建立请等……)
client serveraccept()
Systemoutprintln(客户端IP址端口号 + clientgetLocalSocketAddress())
new Thread(new EchoThread(client))start()
}
serverclose()
}
}
EchoThread
import javaio*
import javanetSocket
public class EchoThread implements Runnable{
private Socket client null
public EchoThread(Socket client)
{
thisclient client
}
public void run()
{
BufferedReader buf null
PrintStream out null
BufferedReader input null
try {
out new PrintStream(clientgetOutputStream())
buf new BufferedReader(new InputStreamReader(clientgetInputStream()))
input new BufferedReader(new InputStreamReader(Systemin))
boolean flag true
while(flag)
{
String str bufreadLine()
Systemoutprintln(Client + str)
if (str null || equals(str)) {
flag false
}
else if(goodbyeequals(str)) {
flag false
}
else {
outprintln(Echo + str)
}
}
clientclose()
} catch (Exception e) {
TODO handle exception
}
}
}
EchoClient
import javaioBufferedReader
import javaioInputStreamReader
import javaioPrintStream
import javanetSocket
public class EchoClient {
public static void main(String[] args) throws Exception{
Socket client null
client new Socket(localhost12345)
BufferedReader buf null
PrintStream out null
BufferedReader input null
input new BufferedReader(new InputStreamReader(Systemin))
buf new BufferedReader(new InputStreamReader(clientgetInputStream()))
out new PrintStream(clientgetOutputStream())
boolean flag true
while(flag){
Systemoutprintln(客户端输入信息)
String str inputreadLine()
outprintln(str)
if (goodbyeequals(str)) {
flag false
}
else {
String echo bufreadLine()
Systemoutprintln(echo)
}
}
bufclose()
clientclose()
}
}

五 课程设计结果截图:
服务器端截图:

客户端截图:

六 课程设计总结:










课题二:端口扫描
课程设计目:
1 加深课堂讲授知识理解
2 熟练掌握基网络编程技术方法
3 建立网络编程整体概念
4 培养具研究设计编制调试网络程序力
二 课程设计环境:
1windows XP win7 系统
2配置java虚拟机环境变量
3编写java程序软件Eclipse
三 课程设计原理
1. 端口扫描器功简介:服务器开放端口潜通信通道入 侵通道目标计算机进行端口扫描许信息进行端口扫描方法手工进行扫描端口扫描软件进行扫描器通选远程TCPIP端口服务记录目标予回答通种方法搜集关目标机种信息例远程系统否支持匿名登陆否存写 FTP 目录否开放 TELNET 服务 HTTPD 服务等
2.实验端口扫描技术:端口扫描技术 TCP connect()扫描 TCP SYN 扫描TCP FIN 扫描IP段扫描等等次实验技术TCP connect()扫描基TCP扫描操作系统提供 connect()系统调感兴趣目标计算机端口进行连接果端口处侦听状态connect()成功否端口 没提供服务技术优点需权限系统中户权利调
四 课程设计容:
编写端口扫描程序够显示某IP某段IP计算机某某端口否正工作基工作程:
(1) 设定定端口扫描范围
(2) 设定端口扫描次数端口次扫描通
(3) 创建 socket通socketconnect方法连接远程IP址应端口
(4)果返回false表示端口没开放否端口开放
实现代码:
package comhansocket

import javaawtBorderLayout
import javaawtGridLayout
import javaawteventActionEvent
import javaawteventActionListener
import javanetInetAddress
import javanetSocket
import javaxswingJButton
import javaxswingJFrame
import javaxswingJLabel
import javaxswingJPanel
import javaxswingJScrollPane
import javaxswingJTextArea
import javaxswingJTextField
public class SocketView {
public static void main(String[] args) {
JFrame frame new JFrame(机端口扫描程序)
framesetLayout(new BorderLayout(33))
JPanel pan1 new JPanel()
JPanel pan2 new JPanel()
JPanel pan3 new JPanel()
pan1setLayout(new GridLayout(2255))
pan2setLayout(new BorderLayout(33))
pan3setLayout(new GridLayout(1255))
framesetSize(400 450)

定义组件
JLabel lb1 new JLabel(Host Address)
JLabel lb2 new JLabel(Port Number)
JLabel lb3 new JLabel(Port Status)
final JTextField jf1 new JTextField()
final JTextField jf2 new JTextField()
final JTextArea ja new JTextArea()
JButton jb1 new JButton(TCP Scan)
JButton jb2 new JButton(UDP Scan)
JScrollPane jp new JScrollPane(ja)

pan1add(lb1)
pan1add(lb2)
pan1add(jf1)
pan1add(jf2)
pan2add(lb3BorderLayoutNORTH)
pan2add(jpBorderLayoutCENTER)
pan3add(jb1)
pan3add(jb2)

frameadd(pan1BorderLayoutNORTH)
frameadd(pan2BorderLayoutCENTER)
frameadd(pan3BorderLayoutSOUTH)
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE)
framesetVisible(true)
jb1addActionListener(new SocketPort())
class SocketPort implements ActionListener {
private String ip jf1getText()

private String hostname new String()
public void actionPerformed(ActionEvent e) {
try {
InetAddress address InetAddressgetByName(ip)
Systemoutprintln(address)
hostname addressgetHostName()
Systemoutprintln(hostname)
jasetText(hostname)
} catch (Exception exception) {
Systemoutprintln(Could not find + ip)
jasetText(Could not find + ip)
}
try {
PrintWriter fout new PrintWriter( new FileWriter(PortInftxt))
foutprintln(Information Of The Port On the + hostname +computer )
foutprintln()
jasetText(Information Of The Port On the + hostname +computer)
for(int nport 25nport < 27++nport){
try {
Socket s new Socket(hostnamenport)
foutprintln(The port + nport + is open)
foutprintln(Connected to + sgetInetAddress() + on port + sgetPort() + from port + sgetLocalPort() + of + sgetLocalAddress())
jasetText(The port + nport + is open)
jasetText(Connected to + sgetInetAddress() + on port + sgetPort() + from port + sgetLocalPort() + of + sgetLocalAddress())

} catch (Exception exception) {
TODO handle exception
foutprintln(The port + nport + is closed)
jasetText(The port + nport + is closed)
}
}
foutclose()
} catch (Exception exception) {
exceptionprintStackTrace()
}

}
}
}
}

五 课程设计结果截图:


七 课程设计总结


课题三:捕获分析IP数包
课程设计目:
1 掌握IP数报格式
2 理解IP协议工作原理工作程
3 学会网络编程方法技巧
二 课程设计环境:
1 windows XP win7 系统
2 太网访问外部网页
3 VC程序编辑器
三 课程设计原理:
IP 数包格式说明IP数包格式包含标头固定部分标头变部分数区三部分IP数报标头部分固定20字节中包含12参数域参数域隐含着网间协议传输机制IP具体标头格式图示

四 课程设计容:
设计目标捕获网络中IP数包解析数包容结果显示标准输出时写入日志文件
程序具体求: 
(1)捕获网络中IP数包解析数包容显示结果结果写入日志文件
(2)显示容包括:捕获IP包版头长度服务类型数包总长度数包标识分段标志分段偏移值生存时间层协议类型头校验源IP址目IP址等容
(3)设置停止标志程序接收停止命令时停止
代码:
#include
#pragma comment( lib Ws2_32lib )
struct ether_header
{
u_int8_t ether_dhost[6]
u_int8_t ether_shost[6]
u_int16_t ether_type
}

typedef u_int32_t in_addr_t
*struct in_addr
{
in_addr_t s_addr
}*
struct ip_header
{
#ifdef WORDS_BIGENDIAN
u_int8_t ip_version4
u_int8_t ip_header_length4
#else
u_int8_t ip_header_length4
u_int8_t ip_version4
#endif
u_int8_t ip_tos
u_int16_t ip_length
u_int16_t ip_id
u_int16_t ip_off
u_int8_t ip_ttl
u_int8_t ip_protocol
u_int16_t ip_checksum
struct in_addr ip_source_address
struct in_addr ip_destination_address
}
void ip_protocol_packet_callback(u_char * argumentconst struct pcap_pkthdr * packet_header
const u_char * packet_content)
{
struct ip_header * ip_protocol
u_int header_length
u_int offset
u_char tos
u_int16_t checksum
ip_protocol(struct ip_header*)(packet_content+14)
checksumntohs(ip_protocol>ip_checksum)
header_lengthip_protocol>ip_header_length*4
tosip_protocol>ip_tos
offsetntohs(ip_protocol>ip_off)
printf(ip协议包\n)
printf(版 d\nip_protocol>ip_version)
printf(首部长度d\nheader_length)
printf(服务类型 d\ntos)
printf(总长度 d\nntohs(ip_protocol>ip_length))
printf(标识 d\nntohs(ip_protocol>ip_id))
printf(偏移d\n(offset&0x1fff)*8)
printf(生存时间d\nip_protocol>ip_ttl)
printf(协议d\nip_protocol>ip_protocol)
switch(ip_protocol>ip_protocol)
{
case 6
printf(该数包协议类型 Tcp\n)
break
case 17
printf(该数包协议类型 Udp\n)
break
case 1
printf(该数包协议类型 Icmp\n)
break
default
break
}
printf(校验d\nchecksum)
printf(源址 s\ninet_ntoa(ip_protocol>ip_source_address))
printf(目址 s\ninet_ntoa(ip_protocol>ip_destination_address))
}
void ethernet_protocol_packet_callback(u_char *argumentconst struct pcap_pkthdr * packet_header
const u_char * packet_content)
{
u_short ethernet_type
struct ether_header *ethernet_protocol
u_char *mac_string
static int packet_number1
printf(****************************************************************\n)
printf( the d packet is captured \npacket_number)
printf(太网帧\n)
ethernet_protocol(struct ether_header *)packet_content
printf(太网帧类型)
ethernet_typentohs(ethernet_protocol>ether_type)
printf(04x\nethernet_type)
switch(ethernet_type)
{
case 0x0800
printf(网络层协议 ip 协议\n)
break
case 0x0806
printf(网络层协议 arp 协议\n)
break
case 0x8035
printf(网络层协议 rarp 协议\n)
break
default
break
}
printf(MAC源址)
mac_stringethernet_protocol>ether_shost
printf(02x02x02x02x02x02x\n*mac_string*(mac_string+1)*(mac_string+2)
*(mac_string+3)*(mac_string+4)*(mac_string+5))
printf(MAC目址 )
mac_stringethernet_protocol>ether_dhost
printf(02x02x02x02x02x02x\n*mac_string*(mac_string+1)*(mac_string+2)
*(mac_string+3)*(mac_string+4)*(mac_string+5))
switch(ethernet_type)
{
case 0x0800 ip_protocol_packet_callback(argumentpacket_headerpacket_content)
break
default
break
}
printf(********************************************************************\n)
packet_number++
}
int main()
{
pcap_t *pcap_handle
char error_content[PCAP_ERRBUF_SIZE]
char *net_interface
struct bpf_program bpf_filter
char bpf_filter_string[]ip
bpf_u_int32 net_mask
bpf_u_int32 net_ip
net_interfacepcap_lookupdev(error_content)
pcap_lookupnet(net_interface&net_ip&net_maskerror_content)
pcap_handlepcap_open_live(net_interface2048010error_content)
pcap_compile(pcap_handle&bpf_filterbpf_filter_string0net_ip)
pcap_setfilter(pcap_handle&bpf_filter)
if(pcap_datalink(pcap_handle)DLT_EN10MB)
return 0
pcap_loop(pcap_handle1ethernet_protocol_packet_callbackNULL)
pcap_close(pcap_handle)
}

五 课程设计结果截图:

六 课程设计总结:
七 参考资料:
[1]谢希仁.计算机网络[M].第5版.北京:电子工业出版社2008.
[2]张基温.Visual C++程序开发基础[M].北京:高等教育出版社2001.
[3]f15瑞.Visual c++网络通信程序开发指南[M].北京:机械工业出版社2004.







文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

计算机网络工程课程设计报告(园区网)

网络工程实践 课程设计报告课 题: 园区网设计 姓 名: ########### 学 号: ############ 同组姓名: ######################### 专业班级: ########################指导教师:

文***品 3年前 上传776   0

linux编程SHELL编程实验报告

Linux编程课程设计报告题 目: Linux Shell编程 专 业 学 号 姓 名 指 导 教 师 日 期

z***u 1年前 上传620   0

计算机网络基础课程设计Ping程序的实现

计算机网络工程课程设计报告题 目: Ping程序的实现 学生姓名: 学 号: 专业班级: 计科专业班 同组姓名:   指导教师: 设计时间: 2013年下学期第X周 指导老师意见:

文***品 3年前 上传491   0

学生公寓组网方案设计计算机网络课程设计报告

计算机网络课程设计报告学生公寓组网方案设计学 院: ******** 姓 名: ****** 班 级: ********** 学 号: ****** 指导教师: ********** 摘要:根据实验任务和需求分析,在山东轻工业学院现有配置的情况上进行了这次学生公寓组网方案的设计,

文***享 1年前 上传282   0

电子技术课程设计-可编程时钟控制器

电子技术课程设计可编程时钟控制器目录设计功能要求 3方案分析选择与系统框图 4模块功能分析 6仿真\下载结果 9主要经验 10操作指南 11相关代码 12设计功能要求一.设计任务数字钟不仅可以通过数字直观地显示日历,时间,用音乐及语言报时,还可以定时发出各种声,光,电信号,以及启动各种设备实现实时控制,时间顺序控制.如作息时间自动打铃,家电设备自动定时启动/停止,生产

文***品 3年前 上传583   0

shell编程用户信息管理(模拟)课程设计说明书

数学与计算机学院《Linux操作系统》课程设计说明书题 目: shell编程--用户信息管理(模拟)专 业: 班 级: 学 号: 姓 名: 指导老师:

文***品 1年前 上传404   0

操作系统课程设计编程序模拟银行家算法

课程设计报告书 课程名称: 操作系统原理 题 目: 编程序模拟银行家算法 系 名: 信息工程系 专业班级: 软件 姓 名: 学 号:

文***品 3年前 上传731   0

linux与windows 编程区别

linux windows 编程的区别 如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大。我写这篇文章并不是想贬低windows下面开发的人,做windows开发的人看了可能会感觉不舒服,我并不是这个意思,我只是说说我自己的感受,我最早开始学习编程也是在wi

g***7 7年前 上传2615   0

编程 汇编题目

一、选择题1. 已知指令CALL DWORD PTR [BX]执行前(SP)=108H, 则该指令执行后SP的内容为 ( )。A. 100H B. 104H C. 0FEH D. 106H2.在标志寄存器中,当方向标志DF=1时,每次执行MOVSB指令时使变址寄存器SI和DI( )。A. 加1 B. 加2 C.

小***库 4年前 上传715   0

软件编程实习总结

软件编程实习总结  实习时间:3月1日―――5月9日  实习地点:广州xx大学生实训基地  实训目标:  1.通过系统性的实训,熟练掌握java se、java ee知识体系,具备java开发经验;  2.了解企业软件开发流程规范,初步具备正确的软件开发编程思路,掌握软件开发的基本方法,养成规范化项目开发习惯;  3.以项目案例带动实训,以企业开发为基础,对参加实训学生进

米***尔 9年前 上传525   0

Scratch趣味编程

Scratch趣味编程随着社会信息化程度的不断提高,掌握运用计算机 解决问题的能力显得越来越重要,计算机程序设计是培 养学生运用计算机解决问题能力的重要途径,也是培养 学生计算思维与创新能力的载体。Scratch是麻省理工学院媒体实验室开发的计算机程 序设计语言,它以形象、直观的积木式指令代替了枯 燥、难记的代码指令,可以方便地创建交互式故事、动 画、游戏、音乐等丰富的程序作品,非常适合小

蓝郎梦 2年前 上传724   1

编程人员的质量感言

质  量  感  言   质量是社会生活中最常见的概念,是企业永恒的主题,关系到企业的生存与发展。做为加工中心的一名编程人员,深知这个岗位的重要性,图纸一但输入错误会对公司造成很大的损失,所以我在工作中首先要做到在绘制图形录入电脑时认真负责,并且在图纸输入完成后对图纸进行核对后再录入电脑,发现产品图纸和加工工艺有问题及时报告并联系有关技术人员解决。合理编制程序,优化机床的加工方法,利用套裁来

1***0 12年前 上传12720   0

网络编程实习报告

网络编程实习报告  [实习目的]   通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,并为自己能顺利与社会环境接轨做准备。[实习任务]Linux下网络服务器开发(基于C语言);本文总结了我对Linux下网络服务器模型的认识。[实习内容]一.循环服务器1.循环服务器在同一个时刻只可以响应一个客户端的请求,对多个客户程序的处理是采用循环的方式进行; 2. UDP循环服务器的实现非常

啊***复 9年前 上传527   0

CMM实用编程技术

CMM实用编程技术   1. 若图面各视图上均有尺寸需编程测量时,最好在每个视图上标示出坐标系,以利于判断工件在机台所处的位置   2. 在建立工件坐标系时,若无特别说明,工件坐标系应与仪器坐标系方向保持一致,以利于坐标值的检查   3. 在方便测量的情况下,工件在机台上的最好位置最好和图面上主要视图保持一致,这有利于快速准确采点   4. 在对所建立之坐标系命名时,最好按主,俯

z***0 9年前 上传7747   0

数控编程说课

《数控加工技术》既是数控技术专业基于工作过程系统化设计的专业核心课程,又是数控工艺员,数控程序员,数控机床操作工职业资格考试的必修课程.下面我从课程设置,教学内容,教学设计,教学组织与实施,特色与创新五个方面向各位汇报本课程整体设计情况

k***1 6年前 上传14085   0

《Java趣味编程100例》

第1章 变幻多姿的图表图表简洁直观,在各种场合得到广泛应用,给人以很强的视觉冲击,经常让人难以忘怀。我们的程序中如果能够灵活地应用图表,一定能给我们的程序增色不少。本章将带你进入变换多姿的图表世界,体会图表编程带来的乐趣。1.1 金字塔图案1.问题描述打印出金字塔图案,如图1.1所示。2.问题分析这个问题是一个很经典的循环应用的题目。我们都知道,打印输出的时候,都是从最左端输出,

雅***韵 2年前 上传834   0

数控编程实习报告

数控编程实习报告  随着制造业的发展,机床是制造业的主要生产设备其发展也是日新月异。社会的进步,人们对各类产品的要求也越来越高,像汽车这样大批量的产品,也要求个性化。因此不能采用传统化的刚性生产线进行生产,还须考虑到适应的柔性。一些小产品其复杂要求和精度要求已经使通用机床难以胜任。在这样的情况下数控机床的出现满足了自动化程度高、柔性强、操作强度低,易于组成自动化生产系统的生产要求。   

s***r 10年前 上传588   0

SimplIQ编程笔记

编程软件手册SimplIQ驱动描述 SimplIQ驱动器是复杂的、面向网络的、单轴数字驱动器,特色:1. 先进的控制算法,包括高阶过滤器和增益调度2. 一个复杂的参考生成算法, 其中包括绝对时间  内插运动,跟着ECAM辅助信号3. 同步网络操作能力4. CANopen标准一致性5. 用户友好的编程6. 先进的分析工具设置7. 内置auto-tuning设施8. 内置数据库

文***享 3年前 上传636   0

UG编程(完整版)

第二部分UG编程随堂讲义第1章 数控编程技术1.1 数控编程的基本过程数控编程是从零件设计得到合格的数控加工程序的全过程,其最主要的任务是通过计算得到加工走刀中的刀位点,即获得刀具运动的路径。对于多轴加工,还要给出刀轴的矢量。利用CAD软件进行零件设计,然后通过CAM软件获取设计信息,并进行数控编程基本过程和内容如图4-1所示。数控

雅***韵 3年前 上传751   0

编程模拟练习

模拟练习 一、选择题  1、传输用的基带信号主要要求: A、原始消息代码必须编成适合于传输用的码型;  B、电波形应适合于基带系统的传输。 C、设备简单可靠。 D、A和B答案均正确。 2、传输用的基带信号对代码的要求: A、原始消息代码必须编成适合于传输用的码型。  B、电波形应适合于基带系统的传输。 C、设备简单可靠。 D、低误码率。 3、传输用的基带信号对所

小***4 10年前 上传7837   0

交通信号灯控制设计可编程控制器技术课程设计

《可编程控制器技术》课程设计题目:交通信号灯控制设计学院:信息工程与自动化系 :通信工程专业:通信工程年级:班姓名: 学号:分数:一、需求分析1.1 需求分析 随着社会的发展和进步,上路的车辆越来越多,而且道路建设往往跟不上城市发展的速度,因此城市交通问题日益突出,经常在十字路口等交通繁忙的地方发生堵塞情况,出现交通混乱。在这个时

文***品 9个月前 上传237   0

计算机网络

杜拉拉三年以上工作经验 | 女 | 27岁(1982年10月18日)居住地:北京 电 话:139********(手机) E-mail:dulala@51job.com 最近工作 [ 3 年10个月] 公 司: XX银行软件开发(北京)有限公司 行 业: 金融/投资/证券 职 位: 高级软件工程师 最高学历 学 历: 硕士 专 业:

j***6 11年前 上传602   0

《数控编程与加工》说课稿

我是机械工程系系,我任教的课程是《数控编程与加工》,今天我说课的课题是《单一固定循环指令-----G90》。下面我将围绕学院课时说课的六个方面来加以阐述和说明。 一 说定位 我是以学生的接受能力为准的,不管怎么讲,不管每节课讲多少,只要最终能把学生讲明白,讲会,让学生每节课都能够学有所获就是标准。因此,我在讲《数控编程与加工》这门课时没有按照教材来讲,而是按照自己的理解来讲的。当然这也是在之

l***4 13年前 上传15201   0

数控铣床编程与操作实验

实验四 数控铣床编程与操作实验一、实验目的1.了解数控铣床的基本特点和机床坐标系。2.熟悉FANUC 0i-MD 数控系统应用。3.掌握数控铣床常规操作方法,重点学习数控铣床回零操作、手动对刀操作、工件坐标系设定、程序输入与编辑、自动加工等操作。二、实验设备1.CGM4300B数控铣床2.FANUC 0i-MD 数控系统三、实验基础知识1.数控铣床的特点与组成CGM4300

文***享 1年前 上传289   0

电脑编程 所有C语言题库

试卷编号:2203所属语言:C语言试卷方案:所有C语言题库试卷总分:1220分共有题型:1种一、程序填空 共122题 (共计1220分)第1题 (10.0分) 题号:558 难度:中 第2章/*-------------------------------------------------------【程序填空】-------

小***库 4年前 上传977   0