计算机网络课设点对点聊天

时间:2019-05-14 02:09:17下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《计算机网络课设点对点聊天》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《计算机网络课设点对点聊天》。

第一篇:计算机网络课设点对点聊天

《计算机网络》课程设计说明书

(点对点聊天程序)

院:

计算机与信息科学学院

学生姓名: 专

业:软件工程 班

级:1401班

完成时间:2016年12月

摘 要

目前即时通讯软件在平时的生活中有着十分广泛的应用,但是对绝大部分的软件来说,都必须得应用在互联网上,必须在一个Internel环境下才能使用。有的时候单位内部的员工,同学,可能没有互联网环境或者其他的原因希望不用上Internet就可以进行通讯,这样开发局域网通讯程序就有了必要性。本文提出了局域网通讯软件的需求,并详细对网络协议TCP/IP协议族进行了介绍和研究,如TCP,UDP,广播,IP等相关的技术。并对网络通讯原理进行了说明,采用了Client/Server模型, 程序基于TCP协议,通过socket接口来实现局域网内的即时通信工功能即聊天的功能。服务器端的一个端口用来监听对服务的请求,另外有一个临时端口用来给客户端发送数据,当客户端向该地址提出连接请求时,服务器端会对它的请求做出相应的反应。该软件采用多线程技术支持多用户操作,能够帮助企业在局域网内搭建起自己的聊天系统。避免了必须的经过互联网的过程。经过测试,程序能够有效达到基本的预期要求

关键词 课程设计;计算机;TCP/IP协议;服务器/客户端;JAVA;

引言

近年来,随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。

了解决上述矛盾,人们提出了许多方法。提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。

基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。

基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。

基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。

目录

1设计原理基础.........................................................2 1.1 TCP/IP简介....................................................2 1.1.1 TCP/IP概念..................................................2 1.1.2 TCP:传输控制协议............................................3 1.1.3 TCP连接建立与终止...........................................3 1.2 IP:网际协议...................................................4 1.3 UDP:用户数据报协议............................................5 1.4 Socket网络编程原理............................................6 2设计方法及思路.......................................................7 2.1 思路...........................................................7 2.2编程方法.......................................................7 3系统需求分析与概要设计..............................................10 3.1功能需求分析..................................................10 3.4运行需求分析..................................................11 4.程序源码...........................................................12 4.1接收消息......................................................12 4.2监听..........................................................14 4.3发送消息......................................................15 4.5运行结果......................................................19 4.5.1 发送消息................................................19 4.5.2 接收消息................................................19 4.5.3 群发....................................................20 4.5.4 退出系统................................................21 5出现问题及解决方法..................................................23 6 课程设计的总结体会.................................................25 6.1总结..........................................................25 6.2展望..........................................................26 参考文献.............................................................27 致 谢...............................................................28

1设计原理基础

1.1 TCP/IP简介

1.1.1 TCP/IP概念

首先网络协议一般是通过分不同的level进行开发的,每一层都有自己的通信功能。对于某一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图所示。

图1 TCP/IP结构

如图所示,每个level都有不同工作:

1)链路层,也称为数据链路层或网络接口层,通常包括PC机自身的网络接口卡和本

机操作系统中的设备驱动程序,用来处理相关的物理接口。

2)网络层,也被称为互联网层,通常用于处理网络活动中的分组活动,例如分组的选路。在协议族中,如图所示,网络层协议主要包括了3个重要的协议。

3)传输层,其目的主要是为通过网络相连的两台主机的应用程序间提供end-to-end的通信。在TCP/IP协议族中,有两个主要的且互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。其中,TCP是提供高可靠性的数据通信。它可以通过三次握手,超时设置等机制来有效地保证了数据传输的可靠性。而另外一个协议,UDP则为应用层提供一种相对要简单些的服务。它的工作只是把数据分组从发送方传输到接收方,但是数据分组能否成功达到接收方它不会给予保证。如果需要可靠性就必须得通过其他层来完成。4)应用层,主要同于上层的应用程序进行的操作。

1.1.2 TCP:传输控制协议

TCP提供的是一种有保障的服务。确保了传输的可靠性,运用TCP协议的主机在交换数据之前必须首先建立一个连接。TCP主要是利用下面的步骤来确保其服务的:

1)首先在应用程序产生TCP报文时会进行大小控制,根据算法决定的发送的数据块

大小。然后再进行发送。

2)当主机利用发出一个数据段之后,它会启动一个定时机制,如果在规定的时间内接收不到确认数据,发送方就会重发。

3)TCP的一端收到另一端发送来的数据时,它将发送一个确认。

4)TCP还有头部检测。工作是检测数据在传输过程中是否发生改变。如果存在改变,那么TCP将丢弃这个报文段并且不会发送收到这个报文段的确认。

5)IP数据报的顺次在传输过程中可能会发生改变,所以TCP将对收到的数据进行重新排序,将收到的数据重新排列以后再交给应用层处理。6)TCP的接收端会丢弃重复的数据。

7)TCP还提供控制传输数据大小的机制。如利用滑动窗口机制来控制发送和接收数 据的大小。

1.1.3 TCP连接建立与终止

建立连接(如图2):

1)一方首先发送一个连接申请。

2)接收方发回包含服务器的初始序号的应答。同时,也发送一个收到客户方报文的一个确认。

3)发送申请方接收到接收方的确认序号,建立连接。这个过程就是建立TCP连接的“三次握手”过程。

连接终止(如图2):

1)提出终止的一方首先发送了一个终止连接的申请。

2)当接收方收到这个请求,会发送一个确认,再发送文件终止标志。3)然后这个接收方程序结束连接,此时也会发送一个结束标志和确认。

图二三次握手与四次挥手

1.2 IP:网际协议

IP协议是TCP/IP协议族中最为重要的协议。所有的其他协议产生的数据都需要以IP数据报形式来进行发送传输。而且IP提供无连接、不可靠的数据报传送服务:

1)IP协议不能保证IP数据报能成功地传输到接收方。如果发生某种错误时,如某个路由器暂时处于阻塞状态,IP也有一个简单的错误处理算法:丢弃数据,再通过发送一个特定的消息报给发送端,发送端接收到之后再进行处理。2)IP在发送数据报之后就不在关心次数据报的状态信息。每个数据报的处理是相互独立的。

IP地址分类如下图所示:

图三IP地址分类

1.3 UDP:用户数据报协议

UDP是一个面向数据报的传输层协议:进程的每个输出都会被封装成一个UDP数据报,并组装成一份待发送的IP数据报。

UDP不提供可靠性:其会把应用程序传给IP层的数据发送出去,它们能否达到目的地协议并不能保证。应用程序必须关心IP数据报的长度。如果它超过网络的MTU,那么就需要对IP数据报进行分片。

1.4 Socket网络编程原理

通常套接口分类:原始socket,流式socket和数据报socket.流式socket确保无差错无重复的顺序的数据传送.数据报socket定义了一种无连接的服务,传输数据时相互独立,无序的,也不确保可靠性.原始socket主要用于其他的网络协议实现的测试等。

无连接设计时,服务器方通常都是在等待客户机发来信息,一有信息到来就开始进行处理,不需要先进行连接。其程序的流程可以用图四表示。

图四

2设计方法及思路

2.1 思路

客户端与服务器建立连接,连接是通过申请的套接字实现的,客户打开一个套接字并把它约束在一个端口上如果成功就相当于建立一个虚拟文件以后就可以在虚拟文件上写数据并通过网络向外传送,完成连接后就可以通信了。客户机向服务器发送请求,打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求操作。服务器在处理完客户的请求之后,要向客户机发送响应消息。客户通过关闭套接字来结束TCP/IP对话。

当使用TCP/IP协议发送客户服务器服务程序时,服务器需要等待任意数量客户端的连接,以便为他们提供服务。客户端连接服务器时,必须先知道服务器的名称。在TCP/IP中,就是服务器的IP地址和端口号。bind()函数实现将服务器绑定到一个已知的名字上的功能。接下来要将服务器套接字设置为监听状态,这是通过listen()函数完成的。在监听状态下,如果客户端向服务器发起连接请求,服务器通过调用accept()函数来接受该连接请求。服务器与客户端完成连接后,就可以进行数据通信了。对于客户端来说,首先调用connect()函数向服务器发出连接请求。如果服务器接受了该请求接下来就可以与服务器通信了。

2.2编程方法

WinSocket通信的步骤:

1.在服务器端的应用程序中的网络通信的步骤如下:

(1)建立服务器端的Socket,开始侦听整个网络中的连接请求。

(2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接,再继续进入监听状态。

(3)在监听的过程中,如果有用户发出了请求,则服务器会产生一个新的连接

Socket来处理用户的请求,而原来的Socket仍然会进行监听操作。

(4)当完成通信后,服务器关闭与客户端的Socket连接。2.在客户端应用程序中的网络通信的步骤如下:

(1)建立一个客户端的Socket。

(2)从命令行中得到服务器的名字,并进行查询以得到服务器的IP地址;

(3)从命令行中得到服务器所提供的端口号,以便进行下一步的操作;

(4)发送连接请求到服务器,并等待服务器的回馈信息。

(5)连接成功后,与服务器进行数据的交互。

(6)数据处理完毕后,关闭自身的Socket连接,释放进行连接所分配的资源,客户端的程序运行完毕。

图五

其主要工作流程为: 服务器方首先创建一个socket,再调用绑定函数将该socket和本地网络地址绑定,然后调用监听函数对socket进行侦听同时也规定其处理大小,之后就调用接收函数来接收连接。

客户端在建立套接口后就可调用连接函数和申请和服务器建立连接.在服务器接收申请后建立连接,然后客户机和服务器之间就可以发送和接收数据.最后,待数据传送结束后,关闭socket.2.3.3C/S模型介绍。

C/S模型一般是基于连接的来交换信息的.它通常是由两部分组成:1)Server 服务器方一般都是在等待客户方的申请,建立connect后再进行通信。2)Client 客户方会给一个已知的服务器方发送一个connect申请,当服务器端接收请求之后connect成功。

3系统需求分析与概要设计

3.1功能需求分析

(1)用户端之间的信息发送,本程序需要实现的最基本的功能。用户在界面上可以将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息正常的发送给相应的其它用户,这个过程中的客户端与客户端之间使用点对点发送信息,预计利用TCP/IP协议中的UDP协议,在本程序中共需要3个端口,此功能预计使用3号端口。

(2)在线用户主机IP列表的维护。在用户发送信息之前,需要选择相应的目的地端IP,这也就需要客户端拥有在线用户主机的IP地址,这个在线主机列表的维护是需要客户端定时自动向服务器端发送信息,服务器端收集并维护在线用户列表,再发送回客户端。需要在客户端和服务器端都使用定时器来完成此功能。此功能预计使用1、2号端口。

(3)在C/S模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。

3.2 数据需求分析

(1)客户端之间聊天信息。在控件上显示时格式化,更易于用户的查看自己发送或接收到的信息。

(2)在线用户聊天信息。服务器端存放在适当的空间中,在发送给客户端时,对信息列表进行格式化,便于客户端提取信息。

(3)客户端向服务器端发送的确认在线信息。包括客户端刚刚启动时的初始化信息和在使用过程中的确认在线信息。

(4)其它程序内部可能需要设计的数据结构体

3.3性能需求分析

(1)可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能。

(2)宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂性,模拟QQ等现有即时通讯工具的界面,使用户能很容易看懂并使用。

(3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理解整个系统的设计思路和实现细节。(4)模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。

3.4运行需求分析

(1)用户界面

程序较小,启动速度快。可在网络中使用,有注册功能,需进行用户登录。启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。

(2)故障处理

在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知的故障时能安全退出。

4.程序源码

4.1接收消息

Display display = Display.getDefault();

@Override

publicvoid run(){

text.append(tr.inetAddress+“对我 Display.getDefault().asyncExec(new Runnable(){

@Override

publicvoid notifyResult(Object obj){ tr=(TalkResult)obj;t=new Thread(new Task(new MyNotify(){ createContents();说:rn”+tr.content+“rn”+new Date()+“rn”);

if(button_1.getSelection()==true){

String ip=tr.inetAddress.getHostAddress();String content=UUID.randomUUID().toString();byte[] bs=content.getBytes();//将要发送的内容转

//将hashset中的数据显示到table中去 table.removeAll();

for(InetAddress a:hashSet){

}

TableItem ti=new TableItem(table, SWT.NONE);ti.setText(new

//TODO:将这个地址存到集合中(不允许重复),hashset hashSet.add(tr.inetAddress);text.append(“========”);String[]{ a.getHostAddress()});成字节数组

}

}

}

intlength=bs.length;//要发送的内容的字节数组的长DatagramPacket dp=null;try {

InetSocketAddress addr=new

dp=new DatagramPacket(bs, length,addr);ds=new DatagramSocket(7890);ds.send(dp);度

InetSocketAddress(ip,Task.receivePort);

} catch(Exception e){

}

e.printStackTrace();ds.close();}finally{ });}));t.setDaemon(true);t.start();

Thread t2=new Thread(new ReceiveEixtMsgTask(new MyNotify(){

@Override

publicvoid notifyResult(Object obj){

TalkResult tr=(TalkResult)obj;InetAddress ia=tr.inetAddress;hashSet.remove(ia);

Display.getDefault().syncExec(new Runnable(){

@Override

publicvoid run(){

}

table.removeAll();

for(InetAddress a:hashSet){

}

TableItem ti=new TableItem(table, SWT.NONE);ti.setText(new

String[]{ a.getHostAddress()});});

} } }));t2.setDaemon(true);t2.start();

shell.open();shell.layout();while(!shell.isDisposed()){

} if(!display.readAndDispatch()){ } display.sleep();

4.2监听

//选择ip 发送消息

table.addSelectionListener(new SelectionAdapter(){

//退出

button_2.addSelectionListener(new SelectionAdapter(){

@Override

publicvoid widgetSelected(SelectionEvent e){

MessageBox mb=new MessageBox(shell,SWT.OK|SWT.CANCEL);mb.setMessage(“是否退出?”);intr=mb.open();if(r==32){

@Override

publicvoid widgetSelected(SelectionEvent e){

} TableItem[] tis=table.getSelection();if(tis==null || tis.length<=0){ } TableItem ti=tis[0];String ip=ti.getText();text_2.setText(ip);return;});//32/

}

} intmyport=Integer.parseInt(text_3.getText());byte[] bs=“bye”.getBytes();intlength=bs.length;for(InetAddress a:hashSet){

} System.exit(0);

String ip=a.getHostAddress();DatagramSocket ds=null;try {

InetSocketAddress addr=new

dp=new DatagramPacket(bs, length,addr);ds=new DatagramSocket(myport);ds.send(dp);InetSocketAddress(ip,ITalks3.EXITPORT);

} catch(Exception el){

}

el.printStackTrace();ds.close();}finally{ });

4.3发送消息

//发送

btnNewButton.addSelectionListener(new SelectionAdapter(){

@Override

publicvoid widgetSelected(SelectionEvent e){

String s=text_1.getText();//内容

intmyPort=Integer.parseInt(text_3.getText());//发送端口 DatagramSocket ds=null;byte[] bs=s.getBytes();//将要发送的内容转成字节数组 intlength=bs.length;//要发送的内容的字节数组的长度 if(button.getSelection()==true){

for(InetAddress a:hashSet){

String ip=a.getHostAddress();

//DatagramPacket的构造方法参数,三个参: 最后一个参数//UDP中的每一个包都必须指明要发送的地址 try { 表示另外一台机器的地址和端口

} privateintreceivePort=10002;//接收用端口 privatebyte[] buf;//接收用的字节数组 private DatagramPacket dp;//Packet

}

}

}

InetSocketAddress addr=new

DatagramPacket dp=new DatagramPacket(bs, ds=new DatagramSocket(myPort);//使用本机上的哪一个端口发送 ds.send(dp);

e1.printStackTrace();ds.close();InetSocketAddress(ip,receivePort);length,addr);

String ip=text_2.getText();//对方ip

//DatagramPacket的构造方法参数,三个参: 最后一个参数表示//UDP中的每一个包都必须指明要发送的地址 try { }else{

}

}

InetSocketAddress addr=new

DatagramPacket dp=new DatagramPacket(bs, ds=new DatagramSocket(myPort);//使用本机上的哪一个端口发送 ds.send(dp);

e1.printStackTrace();ds.close();InetSocketAddress(ip,receivePort);length,addr);

} catch(Exception e1){ } finally{ 另外一台机器的地址和端口

} catch(Exception e1){ } finally{ });

private DatagramSocket ds;//Socket

private HashSethashSet=new HashSet();@Override

publicvoid run(){

//int port=Integer.parseInt(text_1.getText());buf= newbyte[1024];//字节数组,用来缓存数据

dp=new DatagramPacket(buf, buf.length);//构建一个数据包对象 try { ds=new DatagramSocket(receivePort);//构建一个数据包Socket,占用UDP的9999端口,进行接收

while(true){ ds.receive(dp);//用这个9999端口来接收数据,存在dp数据包对象的System.out.println(new buf缓存空间

String(buf,0,dp.getLength()));//将字节数组转成字符串输出

@Override

publicvoid run(){

String s=new String(buf, 0, Display.getDefault().asyncExec(new Runnable(){ dp.getLength());//dp.getLength()接收的实际长度

InetAddress address=dp.getAddress();

text.append(address+“对我说:rn”+s+“rn”+new

Date()+“rn”);

//将hashset中的数据显示到table中去 table.removeAll();

for(InetAddress a:hashSet){

TableItem ti=new TableItem(table, SWT.NONE);ti.setText(new

//TODO:将这个地址存到集合中(不允许重复),hashset hashSet.add(address);

text.append(“========”);String[]{ a.getHostAddress()});

}

}

} } e.printStackTrace();} catch(Exception e){

}

} });

4.5运行结果

4.5.1 发送消息

测试中本机ip为192.168.14.134,对方ip为 192.168.14.134,本机向对方发送:“这是测试” 对方接收到消息,并且将本机ip加入到在线列表用户中

4.5.2 接收消息

测试中本机ip为192.168.14.134,对方ip为 192.168.14.134,对方向本机发送:“hello”,本机收到消息,并将对方加入到了在线列表中

4.5.3 群发

选中群发,然后发送消息,显示再列表中的用户将都会收到相同的消息

4.5.4 退出系统

按退出按钮,用户将消失在在线用户列表中

5出现问题及解决方法

1、在建立Socket连接时,两端的端口号必须设为一致,否则无法建立连接。

2、建立好连接之后,必须按照给定的格式输入通信信息,即m+输入的信息内容,否则,将会出现“no this command”的提示。

3、如果一个使用某端口的程序没有关闭,另一个程序就不能使用这个端口。

4、必须先连接服务器端,再连接客户端,否则,不能预期将服务器端和客户端连通。课程设计的总结体会

6.1总结

课程设计终于完成了。在这段不长的时间里,我感触很深,也学到很多东西。我对winsock双机通信有了更深的了解和认识,其原理和功能也加深了理解。TCP协议我们以前也学过相关知识,经过这次设计,相关的知识得到进一步巩固,运用也变得更加熟练。我学习和了解了有关JAVA中的相关知识和应用,JAVA开发环境也更加熟悉。通过这次课程设计,我不仅学习到了新的知识,也对以前学过的相关的知识有了更深入的理解和掌握。不仅加强了我的理论知识的学习,也增强了我的动手能力,对知识的理解不再局限于表明,理解更加透彻,也更巩固。

以前的学习都是单一方面的知识,这次通过课程设计,将这三个方面的知识综合起来,显然难度是加大了。开始的时候我也感觉似乎无从下手。但在网上查找了相关资料,并且请教了一些同学后,有了一些头绪,并着手开始设计和实践。

我们组这次做的课题的目的就是通过套接字在客户端和服务器之间建立连接,这个连接是以TCP协议传输。在建立连接之后实现客户端与服务器之间的通信,从而设计相关函数的调用和对套接字的应用。

1、客户连接(Client connections)由客户启动,并将本地客户套接字与远程服务器套接字相连.客户套接字必须说明它们想连接的服务器.需要提供服务器的主机名或IP地址及其端口号.2、监听连接(Listening Connections)是等待客户的被动服务器套接字连接.一旦客户发出了新的请求,服务器就会为该特殊连接生成新的套接字,然后返回监听状态.监听服务器套接字必须说明代表其提供服务的端口吗(事实上,客户正是通过该端口进行连接的).3、服务器连接是由服务器激活的连接,负责接受来自客户的请求.这些不同的连接种类只对建立客户与服务器之间的连接具有重要性.一旦连接建立完毕.连接的双方都可以自由发出请求并彼此发送数据.这里面涉及什么是套接字,什么是流式套接字,为什么用流式套接字等问题。用套接字中的相关函数来完成通信过程,它的存在是为了区别不同应用程序进程间的网络通信和连接。流套接字用于提供面向连接、可靠的数据传输服务,又因为该服务将保证数据能够实现无差错、无重复发送,并按顺序接收,所以用了流式套接字。

6.2展望

通过设计实现和测试的数据表明,本文研究的局域网即时通信方法能有效地完成局域网之间的通信,但随着技术的发展,系统中还存在许多不足的地方,有待进一步改进和完善。同时,即时通信技术也在不断的提高,这迫切的需要新的技术和方法。在今后的研究过程中,还要注意以下几个方面的工作:

1)对网络通信技术的研究。正如我们所知道的,网络通信技术在建立在网络通信协议的基础上的。尤其是对TCP/IP协议族的研究,或者将来会出现更加有效安全的网络协议,这个方向一直是重点的研究方向。

2)安全性是一个非常重要的方向,无论是互联网还是局域网环境,安全性始终是一个重要的因素,其中包括一些有效的安全算法等,也是最值得关注的方向。

3)如何提高信息的效率,对于网络通信而言,效率一直是一个重点,怎么样能把网络的利用率做到最优,怎样把信息安全有效的传递,在传递过程中如何保证信息不会丢失,错误等

参考文献

[1]谢希仁.计算机网络.第4版.电子工业出版社.2006年

[2](美)W.RichardStevens.TCP/IP协议详解卷一.人民邮电出版社.2009年

[3]施炜李铮秦颍编著.WindowsSockets规范及应用-Windows网络编程接口.2002年

[4]广播地址_百度百科.http://baike.baidu.com/view/473043.html?wtp=tt [5]张文赵子铭杨天路魏小康著.P2P网络技术原理与C++开发案例.人民邮电出版社.2008年8月

[6]NetworProgrammingforMicrosoftWindows,SecondEditioneBook.PUBLISHEDBYMicrosoftPress.2002 [7](美)(JamesF.Kurose)库罗斯,陈鸣译.计算机网络自顶向下方法第四版.机械工业出版社.2008年

[8]CharlesPetzold著.windows程序设计(第5版).北京大学出版社.2009年 [9]罗军舟等编著.《TCP/IP协议及网络编程技术》.清华大学出版社.2004年 [10]叶树华著.网络编程实用教程(第2版).人民邮电出版社.2010年

[11]林涛著.计算机网络应用编程技术.人民邮电出版社.2006年[12]http://zh.wikipedia.org/,维基百科 [13]MSDNLibrary–October2001 [14]李凌著.Winsock2网络编程实用教程.清华大学出版社.2003年 [15]黄帆.多人聊天程序的一种设计与实现.中国水运(学术版).2006 [16]冀振燕著.UML系统分析设计与应用案例[M].人民邮电出版社.2003年 [17]黄永峰等著.IP网络多媒体通信技术.人民邮电出版社.2003年 [18](美)JEANNAMATTHEWS著.李毅超曹跃王钰等译.《计算机网络实验教程》(《COMPUTERNETWORKS:INTERNETPROTOCOLSINACTION》).人民邮电出版社.2006.1 [19](美)DouglasE.Comer林瑶等.《用TCP/IP进行网际互联第一卷:原理、协议与结构》.电子工业出版社.2001年5月

[20]AlexanderHeußner.ModelExtractionforSockets-basedDistributedPrograms.hal-00425099.version1-20Oct2009 [21]DavidA.Bryan.STANDARDS-BASEDP2PCOMMUNICATIONSSYSTEMS.BruceB.Lowekamp,advisor,DepartmentofComputerScience,CollegeofWilliamandMary [22]TCP三次握手.http://baike.baidu.com/view/1003841.htm

致 谢

真诚感谢老师在我们课程设计阶段给予我们的指导与帮助以及专业课的教授,在老师的指导下使我对网络专业知识有了更深的认识,并且您严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我,这些使我受益匪浅,并将成为我终身献身科学和献身事业的动力。在此向您致以诚挚的谢意与敬意。

第二篇:计算机网络课设

计算机网络应用课程设计

报告

系(院):

计算机科学学院 专业班级: 计科11511 姓

名: 钟灿均 学

号: 201503687 指导教师: 余绍文 设计时间: 2017.6.12-2017.6.23 设计地点: 12教1楼机房

一、课程设计目的和意义

计算机网络课程设计的目的,是为了让我们更深入地掌握计算机网络的核心内容,实现理论与实践相结合。让学生用具体的实践成果,体现对理论知识的掌握程度。有利于学生提高计算机网络的实践能力,加深对计算机网络理论知识的理解。其基本目的是:

1. 培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络应用中问题的能力,从而使基础理论知识得到巩固和加深。2. 学习掌握网络应用工程的一般设计过程和方法。

二、设计题目和要求

1.编写程序,实现系统的基本功能;

2.要有用户界面:要求至少采用文本菜单界面;鼓励采用图形菜单界面; 3.写课程设计报告,内容包括:  封面(参见附录I)

 需求分析:以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?给出功能模块图和流程图。同时明确规定:输入的形式和输出值的范围;输出的形式;程序所能够达到的功能;测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 概要设计:包括程序设计组成框图,程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

 详细设计:包括模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等),每个模块的算法设计说明(可以是描述算法的流程图)。其中源程序要按照写程序的规则来编写,结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 运行结果:包括典型的界面、输入和输出数据等;

 总结:包括课程设计中遇到的问题,解决问题的过程及体会、收获、对课程设计的认识与思考等。

 附录:包括主要程序清单,要有适当的注释,使程序容易阅读。 开发环境:windows 10

 开发工具: vs2008

题目3:基于UDP协议的简易聊天机器人

设计目标:

1.了解Socket通信的原理,在此基础上编写一个聊天程序; 2.理解upd原理;课程设计系统组成及模块功能: 此课程设计实现了基于UDP的客户/服务器通信程序,需要实现以下一些基本功能: 1.客户端连接聊天机器人服务器;

2.消息发送:客户端发送消息给机器人服务器。

3.消息接收:客户端接收到机器人服务器发送给他的消息。4.可以有多个客户端同时连接

5.智能回复功能:根据用户发送的消息内容,稍微有点智能回复。

运行效果:

服务器端和客户端截图

三、设计内容

1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。

2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。

3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。

4、UDP传送数据较TCP快速,系统开销也少。

5、由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。

从以上UDP协议特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。

1.服务端

1.2.3.4.5.加载协议栈; 创建套接字;

将套接字绑定到一个本地地址和端口bind; 等待接收数据recvfrom;关闭套接字;

2.客户端

1.2.3.4.加载协议栈;

创建套接字socket;

向服务器发送数据sendto;关闭套接字; 3.相关代码显示:(客户端)

int main(int argc, char* argv[]){

system(“@color 0e”);WORD socketVersion = MAKEWORD(2, 2);WSADATA wsaData;if(WSAStartup(socketVersion, &wsaData)!= 0){ } sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = inet_addr(m);int len = sizeof(sin);return 0;以上代码为相关版本信息及热启动的一些操作;;

结构体端口号及相关地址信息以及转化函数,将输入的信息转化为计算机可识别的二进制代码,进行相关构造

char * sendData = new char[255];cout << “主人:”;cin >> sendData;while(strcmp(sendData, “#”)!= 0){

sendto(sclient, sendData, strlen(sendData), 0,(sockaddr *)&sin, len);char recvData[255];int ret = recvfrom(sclient, recvData, 255, 0,(sockaddr *)&sin, &len);if(ret > 0){

} recvData[ret] = 0x00;cout << “机器人:”;printf(recvData);4.相关代码展示:(服务端)

SOCKET serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if(serSocket == INVALID_SOCKET){

} printf(“socket error!”);return 0;3

if(bind(serSocket,(sockaddr *)&serAddr, sizeof(serAddr))== SOCKET_ERROR){

} sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);char * sendData = new char[255];char recvData[255];while(true){

int ret = recvfrom(serSocket, recvData, 255, 0,(sockaddr *)&remoteAddr, //printf(recvData);if(ret > 0){

} struct Ro { char recv[255];char send[255];recvData[ret] = 0x00;printf(“接受到一个连接:%s rn”, inet_ntoa(remoteAddr.sin_addr));cout << “主人:”;printf(recvData);printf(“bind error!”);closesocket(serSocket);return 0;以上为对套接字的绑定及判断绑定是否成功,以及对于相关信息的初始化

&nAddrLen);}Ro;FILE *fp;fp = fopen(“G:机器人问答机制.txt”, “r”);while(!feof(fp)){

} fscanf(fp, “%s %s”, Ro.recv, Ro.send);if(strcmp(recvData, Ro.recv)== 0){

} else { } strcpy(sendData, Ro.send);break;strcpy(sendData, “对不起,我不知道”);4

fclose(fp);cout << endl;cout << “机器人:” << sendData << endl;sendto(serSocket, sendData, strlen(sendData), 0,(sockaddr *)&remoteAddr, nAddrLen);

四、设计成果以及心得 1.成果

2.心得

通过对课设的相关的操作,加强了对于相关知识的理解,对于知识的应用也得以加强,在课设过程中,聊天机器人制作较为有趣,对于TCP与UDP的通信方式有了进一步的理解和加强,对于socket编程的相关基础也得以进一步的理解和学习。在今后的学习过程中希望可以将所学知识应用于实际,学以致用。而且对于课设中存在的问题和不足,以及通过老师的讲解,对一些算法加以分析和改进,从而不断完善课设内容,对内容的理解得以加深。

指导老师意见:

成绩:

教师签名: 2017年6月23日

第三篇:C1 CRC12计算机网络课设

计算机通信网络课程设计

C1 CRC-12 校验通信软件设计

所在学院: 信息科学与工程学院

专业班级: 通信工程

学生姓名:

学生学号:

指导教师: 时 间: 2015年9月20

引言:

循环冗余码 CRC 检验技术广泛应用于测控及通信领域,CRC计算可以靠专用的硬件来实现,但是对于低成本的微控制器系统,在没有硬件支持下实现CRC检验,关键的问题就是如何通过软件来完成CRC计算,也就是CRC算法的问题。CRC码是数据通信领域中最常用的一种差错检验码,其特征是信息字段和校验字段的长度可以任意选定。

实验设计要求:

C1.CRC-12 校验通信软件设计

环境要求:Windows/XP/7;C;信息交换内容为键盘输入的字符串;通信传输通过共享文件实现

编码要求:用模2 除法计算CRC 码,生成多项式为CRC-12

功能要求:能在两台计算机机上运行程序,一台产生CRC 码,另一台校验。

课程设计目标:

用C语言设计课程程序,完成用模2出发计算CRC码的CRC校验软件设计,1.掌握CRC码的计算方法;

2.掌握用C语言计算CRC码的算法;

3.熟练并掌握C语言在通信网络中的编程实现方式及功能。

CRC 简介

CRC 校验的基本思想是利用线性编码理论,在发送端根据要传送的 k 位二进制码序 列,以一定的规则产生一个校验用的监督码(既 CRC 码)r 位,并附在信息后边,构成 一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和 CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。

12位的 CRC 码产生的规则是先将要发送的二进制序列数左移 12 位(既乘以2)后,再除以一个多项式,最后所得到的余数既是 CRC 码,如式(2-1)式所示,其中 B(X)表示 n 位的二进制序列数,G(X)为多项式,Q(X)为整数,R(X)是余数(既 CRC 码)。

12B(x)212R(x)(2-1)Q(x)G(x)G(x)求CRC码所采用模 2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。生成CRC码的多项式如下,CRC-12 则产生的是 12 位的CRC码。CRC-12:G(x)xxxxx1

接收方将接收到的二进制序列数(包括信息码和 CRC 码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误,关于其原理这里不再多述。用软件计算 CRC 码时,接收方可以将接收到的信息码求 CRC 码,比较结果和接收到的 CRC 码是否相同。

CRC原理:

CRC码为循环冗余校验码,基本表示方式为(n,k),其中n为数据位数,k为校验码位数。CRC码校验的基本思想是利用线性编码理论,在发送端根据要传送的(n,k)位二进制码序列,121132以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。CRC的处理方法是:发送方以g(x)去除t(x),得到余数作为CRC校验码。校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。所以CRC的生成多项式的阶数越高,那么误判的概率就越小。

程序流程图:

CRC-12校验方法:

多项式是0x180D,有13位,crc12本来是12位,16进制的0x80D前面补了个1,所以就是13位的。然后我们的信息是一串字符,每个字符8个位二进制,假如我们有3个字符,总共有24位。所以我们的运算就是先获取前面13位,这里的前13位二进制是指第一位是1的13位二进制。这个前13位和0x180D异或后,得到了一个异或结果,这个结果除去前面的0,应该是小于13位的。这时是不够13位的,所以我们可以在继续往后加二进制,假如3个字符,那么总共有24位进制,我们还有14到24位这些还没有加。

直到最后所有位都已经处理好了,得到的结果就是crc码。

文件共享: 将计算的数据存入共享的文件夹中,所以我们必须要先建立一个codecode的文件夹,并设为共享,将要共享的数据存在code.txt文件里。

fp_crc=fopen(“D:codecodecode.txt”,“w”);

//打开文件夹 fprintf(fp_crc,“%d ”,len+2);

//存入数据+crc的长度 for(int i=0;i

fprintf(fp_crc,“%c”,ch[i]);

//存入字符串 } fprintf(fp_crc,“%c”,(crcnum>>4));

//先去12位crc码的前8位

fprintf(fp_crc,“%c”,(crcnum<<4)&0xF0);//再取crc码的后4位,然后剩下的补0,使其够8位fclose(fp_crc);

//最后存入文档中

另一台计算机从计算机中的共享文件夹读取数据,读出后数据进行CRC-12校验,若读出数据对生成多项式取余,若余数为0,则信息传输正确,否则信息传输错误。

fp_code=fopen(“Pc14codecodecode.txt”,“r”);//共享计算机组名为Pc14的codecode文件夹 fscanf(fp_code,“%d”,&len);//读取长度

fscanf(fp_code,“%c”,&bb);//读取长度后一个空格 for(int i=0;i

fscanf(fp_code,“%c”,&data_t[i]);//按照长度读取每一个字节 fclose(fp_code);

int ju=crc12(data_t,len);

//crc12校验,返回

程序清单:

发送端:

#include #include typedef unsigned int uint;typedef unsigned char uchar;

/*buf输入的信息,len信息长度*/ int crc12(uchar buf[],int len){ int wcrc;int i,iq;uchar ir;wcrc=0;///crc码

iq=0;//buf字符串下标,从0到len-1,初始化为0 ir=0;//初始化为0,0到7的变换,while(iq>ir)){ wcrc|=0x01;} if(wcrc>=0x1000)//这里就是判断哪个最高位是1的13位进制数满不满足,满足就异或0x180D { wcrc^=0x180D;} wcrc<<=1;ir++;if(8==ir){ ir=0;iq++;} } //对后面添加12个0做处理,for(i=0;i<12;i++){ if(wcrc>=0x1000){ wcrc^=0x180D;} wcrc<<=1;} wcrc>>=1;//因为移多了一次,所以这里移回来 return wcrc;//最后返回的就是crc12码 } /*获取字符串长度的函数*/ int ucharstrlen(uchar buf[]){ int i=0;while(buf[i]!='')i++;return i;} int main(){ FILE *fp_crc, *fp_code;uint crcnum;uchar ch[120];printf(“用模2除法计算CRC码-生成多项式为CRC-12 n”);printf(“n”);printf(“请输入的内容:n”);scanf(“%s”,ch);// printf(“内容:%sn”,ch);int len=ucharstrlen(ch);crcnum=crc12(ch,len);printf(“crc校验码:%xn”,crcnum);fp_crc=fopen(“C:codecodecode.txt”,“w”);//将计算的数据存入共享的文件夹中,所以我们必须要先建立一个codecode的文件夹,并设为共享 if(fp_crc==NULL){ printf(“创建文件失败!n”);exit(0);} fprintf(fp_crc,“%d ”,len+2);/*我先存入字符的长度+crc码长度,再加上crc码,我们这个12位分成了2个8位的字节来存放*/ for(int i=0;i>4));//先去12位crc码的前8位

fprintf(fp_crc,“%c”,(crcnum<<4)&0xF0);//再取crc码的后4位,然后剩下的补0,使其够8位

fclose(fp_crc);//最后存入文档中

printf(“发送编码:%s%xn”,ch,crcnum);printf(“发送成功n”);return 0;}

接收端:

#include #include typedef unsigned char uchar;int ucharstrlen(uchar buf[]){ int i=0;while(buf[i]!='')i++;return i;} /*这里校验数据是否对不对和生成crc码那个算法是一样的,最后生成的crc12是不是0就可以知道数据对不对了*/ int crc12(uchar buf[],int len){ int wcrc;//返回最终的crc码 int i,iq;uchar ir;///对于每一字节的信息的移位下标,0-7 wcrc=0;///crc码

iq=0;//字符选取下标,0-len ir=0;while(iq>ir)){ wcrc|=0x01;} if(wcrc>=0x1000){ wcrc^=0x180D;}//判断够不够13位,够就异或 wcrc<<=1;ir++;if(8==ir){ ir=0;iq++;}//8==ir时,就表示iq下标的位已经取完了,该取一下个字符的,} wcrc>>=1;return wcrc;} int main(){ // EVILKOK-49CC625codecode FILE *fp_code,*fp_crc;uchar data_t[120],bb;int ax,bx,crc,cx,qx;int px=0x180D,len;fp_code=fopen(“C:codecodecode.txt”,“r”);if((fp_code)==NULL){ printf(“can not open file!n”);exit(0);} fscanf(fp_code,“%d”,&len);//读取长度

fscanf(fp_code,“%c”,&bb);//读取长度后一个空格 for(int i=0;i

printf(“t文件读出数据为:”);for(int j=0;j

printf(“%c”,data_t[j]);printf(“%x”,data_t[len-2]);printf(“%x”,data_t[len-1]>>4);printf(“n”);

int crc12_=data_t[len-2];printf(“tcrc校验码为: %xn”,(crc12_<<4)|(data_t[len-1]>>4));int ju=crc12(data_t,len);//crc12校验 if(ju==0){ printf(“t校验成功,数据无误n”);}else{ printf(“t数据错误”);} printf(“nt”);return 0;}

第四篇:计算机网络课程设计(简单聊天程序的实现)

编号:

计算机网络课程设计说明书

目:

本地计算机网络信息管理 系

别:

计算机科学与技术

业:

计算机科学与技术

学生姓名:

xxx

号:

00000000000

指导教师:

xx

2011年月日

摘要

本机网络信息管理器提供了有关计算机性能的信息,并显示了计算机上主要设备信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。它的用户界面提供了设置网络信息的选项,其下还有具体的内容设置,而且这里可以查看到当前系统的CPU使用比率、内存等数据,默认设置下系统每隔两秒钟对数据进行1次自动更新。

目录

1.绪论 ………………………………………………………………………………01 1.1 IP/TCP协议常识

…………………………………………………………08 1.2 Socket的简介

……………………………………………………………09 2.规划设计 …………………………………………………………………………11 2.1 课题来源 ……………………………………………………………………11 2.2 需求分析

…………………………………………………………………11 3.系统分析与设计方案 ……………………………………………………………12 3.1 聊天系统的总体设计要点

………………………………………………12 3.2 聊天系统的设计步骤及功能模块划分 ……………………………………12 3.3 功能模块结构图

…………………………………………………………13 4.系统设计环境与测试

…………………………………………………………26 4.1 开发环境和工具

…………………………………………………………26 4.2 硬件环境 ……………………………………………………………………26 4.3 聊天系统的测试

…………………………………………………………26 5.课程设计总结 ……………………………………………………………………28 5.1 课程设计总结 ………………………………………………………………28 5.2 经验和感想 …………………………………………………………………28 参考文献 …………………………………………………………………………31

计算机网络课程设计报告绪论

随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见,最直接的网上交流的方式。本信息管理系统以网络设置为主,为广大用户提供一个简洁的、方便的网络设置方式,也是使网络设置更简单,更适用于对电脑了解不多的用户。本文所介绍的网络信息管理系统是基于开放的C#应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的反映本机的网络设置状况,易于维护和更新,其运行所需环境及其工作流程和各个功能控件的工作原理将在本文依次介绍,并且文中提供了部分程序源代码。

1.1 IP/TCP协议常识

(1)IP、TCP协议的特点:

TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。

IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。

TCP协议的功能:差错控制——可靠性、面向连接、分段(Segment)、端口号。TCP是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。

TCP/IP协议具有以下特点:

1、协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。

2、统一分配网络地址,使得每个TCP/IP 设备在网络中都具有唯一的IP地址。

3、实现了高层协议的标准化,能为用户提供多种可靠的服务。(2)TCP/IP协议进行传输数据传输的过程:

应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP 数据包封装在IP包内,通过网络送给目的TCP。接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP只是调用IP接口,向TCP提供所有TCP需要的服务。

(3)端口号:

计算机网络课程设计报告

有的时候,一个ip地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是 端口。端口实际是一个16位长的 地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的个客户端应用程序。在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。

1.2 Windows Management Instrumentation,Windows 管理规范

WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。

Windows 2K/XP和Windows 98 都支持WMI;如果为NT 4.0和Windows 95加上了 Service Pack 4或更高版本,N

WMI T 4.0和Win95也支持WMI。因此,用WMI进行远程管理时,并非一定要用Windows 2K/XP(当然,如果WMI脚本在一台没有性能监视器的Win9x机器上运行,就不能在远程Win9x系统上查询Windows 2K/XP的性能监视器。

如前所述,WMI允许通过一个公共的接口访问多种操作系统构成单元,因此不必分别对待各种底层接口或所谓的“提供者”。利用WMI可以高效地管理远程和本地的计算机;与此相对,并非所有的Windows 2K/XP命令行工具都支持远程运行。

WMI是WBEM模型的一种实现。WBEM即Web-Based Enterprise Management,或基于Web的企业管理,WBEM由DMTF(Distributed Management Task Force,分布式管理任务组)在许多厂商的帮助下创立,包括Compaq、Sun、Microsoft等。WBEM的目标是,为管理企业环境开发一个标准的接口集。WBEM模型最关键的部分是它的数据模型(或描述和定义对象的方式)、编码规范(Encoding Specification),以及在客户端和服务器端之间传输数据的模式。

WBEM的数据模型是CIM(Common Information Model,公共信息模型)。CIM是一个用来命名计算机的物理和逻辑单元的标准的命名系统(或称为命名模式),例如硬盘的逻辑分区、正在运行的应用的一个实例,或者一条电缆。

CIM是一个面向对象的模型,使用一组面向对象的术语进行描述。CIM包含类(Class),计算机网络课程设计报告

类是被管理单元的模板。类的实例称为对象(Object),对象代表着底层系统的一个具体单元。名称空间(Namespace)是一个类的集合,每个名称空间面向一个特定的管理领域。类包含属性(Property)和方法(Method)。

CIM分三层。第一层是核心模型(Core Model),这一层包含的类定义对于所有管理领域来说都是共同的。第二层是公共模型(Common Model),这一层包含的类定义对于特定的管理领域来说是公共的,但与具体的操作系统和系统设计无关。第三层是扩展模型(Extension model),这一层包含的类定义与特定的操作系统或技术有关。

WMI是Microsoft扩展CIM 2.0得到的面向Win32系统的扩展模型。引用WMI类和属性的形式是“扩展前缀_类名称.属性名称”,例如Win32_ComputerSystem.Name,其中Win32是CIM模式cimv2名称空间内WMI扩展类的前缀,ComputerSystem是类,Name是属性。

编写WMI脚本的很大一部分工作涉及到读取和设置属性值。当前,WMI提供的方法还很有限,但随着时间的推移,相信WMI和CIM提供的方法都会越来越丰富。2 规划设计

本信息管理系统分为三个部分:

1.首先是,是对本机的基本信息的获取,包括CPU、内存等,以及网络信息的获取,包括域名、工作组等,最后还用CPU、内存等使用情况的监视。

2.其次,是对本机的所有可用网络适配器的设置,包括IP地址、子网掩码、DNS服务器地址等等。

3.然后,是对本机的共享内容的管理,包括共享文件夹的添加和取消,网络服务的查看等。

4.最后,是对所有本机网络连接的监控和统计。系统分析与设计方案

3.1 信息管理系统的总体设计要点

1.本系统以实用为主,实现的都是用户最常用的功能,简化了系统自带的软件的使用。2.本系统界面设计直观,易用性强。

3.2 系统各功能模块

(1)本机基本信息获取

使用了PerformanceCounter和WMI等方式获取系统信息,以及通过读取注册表读取本机操作系统信息,通过线程的方式监控系统性能。

源码:

计算机网络课程设计报告

PerformanceCounter pc = new PerformanceCounter(“Memory”, “Available MBytes”);

PerformanceCounter cpu = new PerformanceCounter(“Processor”, “% Processor Time”, “_Total”);

Thread m_thread;

[DllImport(“IpHlpApi.dll”)]

extern static public uint GetIfTable(byte[] pIfTable, ref uint pdwSize, bool bOrder);

public Form1()

{

new Form2().Show();

InitializeComponent();

RegistryKey rk;

DirectoryEntry root = new DirectoryEntry(“WinNT:”);

string strDomain = null, cpuid = null, meo = null;

foreach(DirectoryEntry Domain in root.Children)

{

//枚举工作组或域

strDomain = strDomain + “ ” + Domain.Name;

}

ManagementClass mClass = new ManagementClass(“Win32_Processor”);

计算机网络课程设计报告

ManagementObjectCollection moCollection = mClass.GetInstances();

foreach(ManagementObject mObject in moCollection)

{

cpuid += mObject[“Name”].ToString()+ “ ”;

}

mClass = new ManagementClass(“Win32_PhysicalMemory”);

moCollection = mClass.GetInstances();

foreach(ManagementObject mObject in moCollection)

{

meo += mObject[“Capacity”].ToString();

}

rk = Registry.LocalMachine.OpenSubKey(“SoftwareMicrosoftWindows NTCurrentVersion”);

label6.Text = System.Environment.MachineName;

label8.Text = System.Net.Dns.GetHostEntry(“LocalHost”).HostName;

label9.Text = rk.GetValue(“ProductName”).ToString()+ “ ” + rk.GetValue(“CurrentVersion”).ToString()+ “.” + rk.GetValue(“CurrentBuildNumber”).ToString();

label10.Text = strDomain;

label11.Text = cpuid;

计算机网络课程设计报告

label12.Text = meo + “ 字节”;

progressBar1.Maximum =(int)(float.Parse(meo)/ 1048576.0);

m_thread = new Thread(new ThreadStart(workr));

m_thread.IsBackground = true;

m_thread.Start();

ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);

ManagementObjectCollection moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if((bool)mo[“IPEnabled”] == true)

comboBox1.Items.Add(mo[“Description”].ToString());

}

comboBox1.Enabled = true;

计算机网络课程设计报告

mc = new ManagementClass(“Win32_Service”);

moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if(mo[“StartName”].ToString()== “NT AUTHORITYNetworkService”)

comboBox2.Items.Add(mo[“Caption”].ToString());

}

comboBox2.Enabled = true;

mc.Dispose();

moc.Dispose();

maskedTextBox1.AllowPromptAsInput = false;private delegate void dfun();

private void workr(){ while(true){ Thread.Sleep(500);work();} }

private void work()

{

if(this.progressBar1.InvokeRequired && this.progressBar2.InvokeRequired)

{

try

计算机网络课程设计报告

{

dfun df = new dfun(work);

this.Invoke(df);

}

catch { };

}

else

{

this.progressBar1.Value =(int)this.pc.NextValue();

this.label13.Text = this.progressBar1.Value.ToString()+ “MB / ” + this.progressBar1.Maximum.ToString()+ “MB”;

this.progressBar2.Value =(int)cpu.NextValue();

this.label16.Text = DateTime.Now.ToString();

}

}

(2)网络设置部分主要通过WMI获取和设置本机网络适配器的信息和设置,可以自动获取当前可用的适配器,同时,能对不符合规范的的设置进行提示。具体的源码如下:

e)

{

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs

计算机网络课程设计报告

ManagementObjectSearcher query = new

ManagementObjectSearcher(“SELECT

*

FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'”);

ManagementObjectCollection queryCollection = query.Get();

foreach(ManagementObject mo in queryCollection)

{

if(mo[“Description”].ToString()== comboBox1.Text)

{

string[] ipad =(string[])mo[“IPAddress”];

label23.Text = ipad[0];

string[] subnets =(string[])mo[“IPSubnet”];

label24.Text = subnets[0];

string[] defaultgateways =(string[])mo[“DefaultIPGateway”];

if(defaultgateways!= null)

label27.Text = defaultgateways[0];

else label27.Text = “";

label26.Text = mo[”MACAddress“].ToString();

string[] dns =(string[])mo[”DNSServerSearchOrder“];

if(dns!= null)

label28.Text = dns[0];

else if(dns == null)

label29.Text = ”“;

else if(dns.Length == 2)

label29.Text = dns[1];

else { label29.Text = ”“;}

}

}

}

/*

private void button3_Click(object sender, EventArgs e)

{

计算机网络课程设计报告

string[] mac = maskedTextBox5.Text.Split(':');

string pstr = ”^[0-9a-fA-F]+$“;

string ma=”“;

for(int n = 0;n < 5;n++)

if(!Regex.IsMatch(mac[n],pstr))

{

MessageBox.Show(”MAC地址为16进制,即00~FF“, ”错误“);

goto L1;

}

else ma += mac[n]+”:“;

ma = ma.Substring(0, ma.Length1);

gat = true;

}

if(!maskedTextBox7.Text.Equals(pstr))

{

for(int n = 0;n < 4;n++)

if(int.Parse(dns[n])> 255 || int.Parse(gate[n])< 0)

{

MessageBox.Show(”IP数值不对!数值为1~255“, ”错误“);

goto L4;

计算机网络课程设计报告

}

for(int i = 0;i <= 3;i++)

{

DnsStr +=(dns[i].Trim()+ ”.“);

}

DnsStr = DnsStr.Substring(0, DnsStr.Length1);

dnb = true;

}

ManagementClass

mc

= ManagementClass(”Win32_NetworkAdapterConfiguration“);

ManagementObjectCollection moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if((bool)mo[”IPEnabled“])

{

if(mo[”Description“].ToString()== comboBox1.Text)

{

new

计算机网络课程设计报告

if(gat == true)

{

ManagementBaseObject mo.GetMethodParameters(”SetGateways“);

newGate[”DefaultIPGateway“] = new string[] { GateStr };

ManagementBaseObject mo.InvokeMethod(”SetGateways“, newGate, null);

label27.Text = mo[”DefaultIPGateway“].ToString();

}

if(dn == true)

{

string[] temp =(string[])mo[”DNSServerSearchOrder“];

ManagementBaseObject mo.GetMethodParameters(”SetDNSServerSearchOrder“);

newDns[”DNSServerSearchOrder“] = new string[] { DnsStr, temp[1] };

ManagementBaseObject mo.InvokeMethod(”SetDNSServerSearchOrder“, newDns, null);

temp =(string[])mo[”DNSServerSearchOrder“];

label28.Text = temp[0];

}

if(dnb == true)

{

string[] temp =(string[])mo[”DNSServerSearchOrder“];

ManagementBaseObject mo.GetMethodParameters(”SetDNSServerSearchOrder“);

newDnsb[”DNSServerSearchOrder“] = new string[] { temp[1], DnsbStr };

ManagementBaseObject mo.InvokeMethod(”SetDNSServerSearchOrder“, newDnsb, null);

temp =(string[])mo[”DNSServerSearchOrder“];

label29.Text = temp[1];

}

mo.Dispose();

setDnsb

=

newDnsb

=

setDns

=

newDns

=

setGate

=

newGate

=

计算机网络课程设计报告

}

}

}

string[] str = maskedTextBox1.Text.Split('.');

string[] str1 = maskedTextBox4.Text.Split('.');

ManagementClass

mc1

=

new ManagementClass(”Win32_NetworkAdapterConfiguration“);

ManagementObjectCollection moc1 = mc.GetInstances();

if(255 < int.Parse(str[0])|| 255 < int.Parse(str[1])|| 255 < int.Parse(str[2])|| 255 < int.Parse(str[3])|| int.Parse(str[0])< 1 || int.Parse(str[1])< 0 || int.Parse(str[2])< 0 || int.Parse(str[3])< 1 ||

255 < int.Parse(str1[0])|| 255 < int.Parse(str1[1])|| 255 < int.Parse(str1[2])|| 255 < int.Parse(str1[3])|| int.Parse(str1[0])< 1 || int.Parse(str1[1])< 0 || int.Parse(str1[2])< 0 || int.Parse(str1[3])< 0)MessageBox.Show(”IP数值不对!数值为1~255“, ”错误“);

else

foreach(ManagementObject mo in moc1)

{

if((bool)mo[”IPEnabled“])

{

if(mo[”Description“].ToString()== comboBox1.Text)

{

string IPStr = ”“, subStr = ”“;

for(int i = 0;i <= 3;i++)

{

IPStr +=(str[i].Trim()+ ”.“);

}

for(int i = 0;i <= 3;i++)

{

subStr +=(str1[i].Trim()+ ”.“);

}

IPStr = IPStr.Substring(0, IPStr.Length1);

ManagementBaseObject

newIP

=

计算机网络课程设计报告

mo.GetMethodParameters(”EnableStatic“);

newIP[”IPAddress“] = new string[] { IPStr };

newIP[”SubnetMask“] = new string[] { subStr };

ManagementBaseObject setIP mo.InvokeMethod(”EnableStatic“, newIP, null);

label23.Text = IPStr;

label24.Text = subStr;

mc.Dispose();

}

}

}

L4:;

}

private void button4_Click(object sender, EventArgs e)

{

ManagementClass

wmi

= ManagementClass(”Win32_NetworkAdapterConfiguration“);

ManagementObjectCollection moc = wmi.GetInstances();

foreach(ManagementObject mo in moc)

{

//如果没有启用IP设置的网络设备则跳过

if(mo[”Description“].ToString()!= comboBox1.Text)

continue;

//重置DNS为空

mo.InvokeMethod(”SetDNSServerSearchOrder“, null);

//开启DHCP

mo.InvokeMethod(”EnableDHCP", null);

}

=

new

计算机网络课程设计报告

} 4 系统设计与实现 4.1开发环境工具

基本系统的设计主要运用C#与语言与WMI类结合而开发。其开发的主要环境包括:

操作系统:Windows 7 集成开发环境:Microsoft Visual Studio 2010和.NET Framework 4.0 使用环境: Windows 2K/XP以上和.NET Framework环境

4.2 硬件环境

本系统运行环境所需用到的环境为: 硬件配置 :

CPU:intel core duo t6400 2.0G的处理器; 硬

盘:160GB以上硬盘; 内

存:2G DDR内存;

卡:NVIDIA Geforce 9600M GS 512M显存显卡

软件环境:WINDOWS XP、Visual Studio 2010、.NET Framework4.0等。

4.3网站功能模块的测试

图1 本机信息获取

计算机网络课程设计报告

图2 网络设置

图3 共享设置

图4 网络监控 总 结

计算机网络课程设计报告

5.1 课程设计总结

本课程设计实现了简单的本机网络系统的管理功能,经过细心的调试和排错解决了绝大部分的问题。但几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。本管理系统程序对于初涉此领域的毕业设计课题来说,尤其在开始初期,感觉系统调用复杂,难以控制,因此至今还有许多未能解决的缺陷。

目前本管理系统还有待完善的功能如下:

1、没有做到每个进程的网络流量的实时监控;

2、没有实现进程管理;

3、没有考虑到安全问题。

尽管课程设计到现在已接近尾声,但是对于上述的缺陷,本人还会不断对系统进一步的完善它,期望在今后的日子里凭借自身的技术把系统做成一套深受欢迎的系统设置软件。

5.2 经验和感想

基于C#和WMI天程序作为课程设计,是本人目前做过的最大的程序。

平时自己也常到其它系统优化软件,因此,自己也曾想过要制作一款自己的系统管理软件。学习该平台背景和功能的时间远远超出了我想象的时间。在学习期间,本人还通过网上的各种C#源码进行学习与研究,我原以为这样的设计水平将无法完成设计,但当掌握了大部分应用技巧时,剩下的系统思路的设计就显得不是最大的障碍了。

我在2周内写完这个程序,经过了很多次的调试,终于完成了现在的程序。原先认为不可能的事,我发现,如果有不畏困难的信心和肯钻研的勇气,就一定会完成,甚至达到意想不到的效果。

献 C#应用程序设计教程 作 者: 耿肇英 耿燚 耿肇英 耿燚 2 Visual C#程序设计实用教程 作 者: 杨建军

第五篇:计算机网络课程设(12级本科)任务书

计算机网络课程设计任务书

一、课程设计目的:

通过一周的课程设计,培养进一步理解和掌握网络组网的过程及方案设计,为今后从事实际工作打下基础;熟练掌握子网划分及路由协议的配置,熟练掌握路由器和交换机的基本配置。

二、课程设计要求:

要求能根据实际问题绘制拓扑结构图,拓扑结构图可以是树形、星形、网状形、环状形及混合形结构的之一,清晰的描述接口,进行路由器或交换机的命令配置实现,并且每个方案的需有以下几部分的内容:

1、需求分析;

2、设计原则;

3、方案设计与实施:(1)方案设计

1)设备选型; 2)综合布线设计; 3)拓扑结构图;

4)IP地址规划(子网划分和CIDR技术)。(2)方案实施

1)路由协议的选择; 2)路由器配置; 3)交换机的配置。

三、课程设计题目

1.组建XX公司局域网 2.组建大型网吧局域网 3.组建小型企业局域网 4.组建校园局域网 5.组建智能化小区局域网 6.组建XX单位自动化办公局域网 7.组建某政府办公局域网 8.组建XX缴费局域网

四、要求和说明: 1.自己独立完成,最终提交课程设计报告和实验成果(实验成果提交为课程设计的最后两天,课程设计报告为课程设计的后一周。过期不查。)

2.课程设计报告格式(附后):封面、题目、时间地点、目的及要求、内容、详细的步骤和代码编写过程(绘制出拓扑图)、总结。3.指定时间必须在实验机房上机。

4.最终成绩包括平时考勤成绩(30%)、检查成绩(40%)、报告成绩(30%)。

注:最终考核成绩采用一票否决制,如三项中有一项成绩达不到60%则视为课程设计不及格。

5.实验设计内容必须以老师指定的题目为准,老师指定的题目为最终检查的依据。

附问题描述:

一、组建XX公司局域网

总体要求:

 背景:

共三栋楼,1号,2号,3号,每栋楼直线相距为100米。1号楼:三层,为行政办公楼,20台电脑,分散分布。

2号楼:五层,为产品研发部,供销部,30台电脑。其中20台集中在三楼的研发部的设计室中,专设一个机房,其他10台分散分布。这里要求供销部的电脑能够连接Internet,单位生产的产品的信息能向网上发布,其他的一律不能上网。

3号楼:五层,为生产车间,每层一个车间,每个车间3台电脑,共15台。 未来发展:

未来的3—5年,单位电脑会增加到150台左右,主要增加在2号楼的研发部,计划该部门增加两间专用机房用于新产品的研发和设计。 网络功能:

根据公司现有规模,业务需要及发展范围建立的网络有如下功能:(a)建立公司自己的网站,可向外界发布信息,并进行网络上的业务。(b)要求供销部可以连接Internet,与各企业保持联络,接受订单及发布本公

司产品信息。其他部门都不能连接Internet,但要求公司内部由网络连接。(c)公司内部网络实现资源共享,以提高工作效率。

(d)建立网络时应注意网络的扩展性,以方便日后的网络升级和增加计算机。

在公司内部建立公司的数据库,如员工档案,业务计划,会议日程等

二、组建大型网吧局域网 总体要求:

设计一个具有500个用户节点的大型网吧的网络,其拓扑结构为树形,pc通过交换机连接起来,网络之间通过路由器或交换机连接起来,选择路由协议,配置路由协议,实现局域网之间能够互相连通,在网络内部联网的分布使用的是私有IP地址,划分子网,通过路由器连接到互联网,并且设计其安全性。

三、组建小型企业局域网 总体要求:

现有150台计算机,设计一个小型企业网络方案,要求:

1.资源共享,网络内的各个桌面用户可共享文件、共享打印机等功能;

2.通信服务,最终用户可以收发电子邮件、实现Web应用、接入互联网、进行安全的因特网访问; 3.划分网段;

4.选择路由协议,配置路由,并为路由器设置密码。

四、组建校园局域网 总体要求:

校园网的建设是现代教育发展的必然趋势,建设校园网不仅能够更加合理有效地利用学校现有的各种资源,而且为学校未来的不断发展奠定了基础,使之能够适合信息时代的要求。校园网络的建设及其与Internet的互联,已经成为教育领域信息化建设的当务之急。假设学校有300台计算机,请规划各个部门,便于管理。

五、组建智能化小区局域网 总体要求:

运用自己对局域网组网技术的理解,设计智能化小区组网方案,使得一个具有200个住户节点的智能化小区能够进行网络通讯,且将整个小区可划分为四个区域: 1.网络中心区:以物业管理中心及监控中心为主的核心交换设备和服务器群; 2.远程网络接入区:包括外部网络接入口的路由器设备和网络安全设备; 3.园区网络区:包括从网络中心到社区服务设施的骨干交换设备;

4.家庭网络区:包括从网络中心到楼宇中的骨干交换设备,并为各住户单元提供网络接入端口,是整个小区网络系统的最基本单元。

六、组建XX单位自动化办公局域网

总体要求:

设计一个拓扑结构为树形的网络,pc通过交换机连接起来,网络之间通过路由器或交换机连接起来,配置路由,但是出于不同职能部门的管理、安全和整体网络的稳定,需要对各个进行即独立又统一的管理,要求进行子网划分,部门中又有下属多个二级单位,现要求通过路由器连接,实现不同的局域网之间能够互相通信,在同一个局域网中需实现打印共享。

七、组建某政府办公局域网 总体要求:

设计一个拓扑结构为树形的网络,建立政府的官方网站,可向外界发布信息,pc通过交换机连接起来,网络之间通过路由器或交换机连接起来,安全性通过路由器的访问控制来设置,在网络内部联网的分布使用的是私有IP地址,通过路由器连接到互联网,不同职能部门可以进行局域网划分。

八、组建XX缴费局域网 总体要求:

设计一个缴费网络拓扑结构,公司内部建立数据库,公司内部使用私有ip地址,要求收费部门通过路由器或交换机可以连接Internet,与各客户保持联络,接受缴费服务及发布一些关于缴费项目的信息。其他部门都不能连接Internet,但要求公司内部由网络连接,配置路由器、交换机,保证其安全性。

课程设计报告格式

一、课程设计的目的及要求

二、课程设计的内容(分析和设计)

三、绘制拓扑结构图

四、详细步骤

五、路由器或交换机配置的代码

六、显示最总的结果

七、课程设计总结 注释:

1.设计完成后必须提交:课程设计报告

2.各自独立完成。总体要求只是一些描述和参考,完成课设主要还是根据任务书中的第二点课设要求。

3.课设必须完成任务书上的基本要求才能达到及格以上,并且也可以根据自己的能力扩展任务书以外的功能。

4.封面格式如下:(一定要有封面):

课程设计报告

课程设计题目:

专 业: 班 级: 姓 名: 学 号: 指导教师:

年 月

下载计算机网络课设点对点聊天word格式文档
下载计算机网络课设点对点聊天.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    数据结构课设

    数据结构课设 大整数计数器 1. 问题描述 实现大整数(200位以内的整数)的加、减、乘、除运算。 2. 设计要求 设计程序实现两个大整数的四则运算,输出这两个大整数的和、差、积、......

    课设小结

    本次课程设计我们小组顺利的完成了锅炉内胆水温与循环水流量串级控制系统。我们通过讨论对过程参数方面的知识有了更加深入的了解。我负责的是传模拟量采集模块。 和以前做......

    课设规范

    电 子 工 程 学 院 课程设计报告格式及要求 一、封面:单独1页(见样件) 二、摘要、关键词:中文(250~300字)、英文;单独1页 中文摘要前加:“摘要:”,英文摘要前加“Abstract:”。 关键词一......

    高频课设资料

    一、课程设计目的 由于高频振动器所产生的高频振动信号的功率很小,不能满足发射机天线对发射机的功率要求,所以在发射之前需要经过功率放大后才能获得足够的功率输出。 本次课......

    操作系统课设

    操作系统课程设计 一实验目的 在多道程序或多任务系统中,系统中同时处于就绪态的进程有若干个,也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊......

    操作系统课设

    课 程 设 计 报 告 课程名称: 计算机操作系统 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 华 中 科 技 大 学 课 程 设 计 报 告 目 录 1 2 3 实验目......

    课设心得

    课程设计心得 在这学期的期末课设中我们很幸运的接触到了嵌入式,通过历时两天的课程设计,我们对嵌入式虽然说不上熟练,不过也算是已经入门。 通过老师介绍,我们知道当今社会,嵌入......

    ERP课设

    ERP原理与应用 课程设计报告-电器公司ERP系统应用班级:1121808 姓名:丁贤民 学号:201120180827 指导老师:徐玮 日期:2014.6.25 一. 实验时间和地点: 2014.06.25~2014.06.26 二.......