第一篇:计算机网络编程实习1
实验1——JAVA Socket编程处理初步
实验目的:熟悉JAVA Socket编程基础知识
实验内容:掌握JAVA网络编程的Socket地址类和Socket类的使用,了解JAVA输入输出流的使用。编写一对客户端-服务器通信程序。
实验要求:
1、了解JAVA中地址表示的几种方法,掌握Socket编程中地址相关的类
(InetAddress和NetworkInterface)的使用方法:编写程序完成下述功能:
1.在标准输出罗列本机所有网络接口
2.在标准输出给出“本地回环地址”的网络接口的名称
3.判断本机所有网络接口中哪些可以到达baidu.com2、在本机创建一个临时目录,并在其中创建2-3个文本文件(文件名任意填
写)。编写客户端服务器程序。完成以下功能:
编写一个TCP服务端程序,实现下述功能:
1.侦听2010端口,等待客户端连接;
2.当客户端连接创建之后,读取客户端消息,按照以下规则分别执行相应操作:
消息==list, 则将刚创建的临时目录中的文件名以换行字符(n)
分隔,传输给客户端;
消息以echo为前缀,则将echo后的字符作为内容传输给客户端;
消息==close,则关闭与客户端的连接;
其他情况,传输UNKNOWN Commands给客户端;
3.处理完客户端消息,并且客户端连接尚未关闭,则继续等待客户端输入,回到上述第二步;
编写一个TCP客户端程序,实现下述功能:
1.连接服务端程序(2010端口)
2.如果连接建立成功,转第4步
3.如果连接失败,在标准输出打印“Connection Failed.”,并退出程序;
4.从标准输入读取用户输入,将用户输入传输给服务端
5.如果用户输入是close,是则关闭与服务端连接,并在标准输出打印“Connection Closed”,退出程序;否则,转下一步
6.读取服务端消息,将消息打印至标准输出;转4步。
3、撰写实验报告并附上所用程序和结果。
2013-5-3
第二篇:计算机网络实验报告(路由算法、Socket编程)
计算机网络实验报告
班级: 姓名: 学号:
实验一
一. 实验目的及要求
编写程序,模拟距离矢量路由算法的路由表交换过程,演示交换后的路由表的变化。
二. 实验原理
距离矢量路由算法是这样工作的:每个路由器维护一张路由表(即一个矢量),它以网络中的每个路由器为索引,表中列出了当前已知的路由器到每个目标路由器的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新他们的内部路由表。
举例来说,假定使用延迟作为“距离”的度量标准,并且该路由器发送一个列表,其中包含了他到每一个目标路由器的延时估计值;同时,他也从每个邻居路由器接收到一个类似的列表。假设一个路由器接收到来自邻居x的一个列表,其中x(i)表示x估计的到达路由器i所需要的时间。如果该路由器知道他到x的延时为m毫秒,那么他也知道在x(i)+m毫秒之间内经过x可以到达路由器i。一个路由器针对每个邻居都执行这样的计算,就可以发现最佳的估计值,然后在新的路由器表中使用这个最佳的估计值以及对应的输出路线。
三.源程序:
#include “stdio.h” #include “stdlib.h” #include “malloc.h” #include “graphics.h” #include “dos.h” #define VERNUM 7
typedef struct {
int dis;
int flag;
int flag2;}RoutNode;
char tmp[10];RoutNode data[VERNUM][VERNUM];
void welcome();
void InitRoutData(FILE* pfile);
void PrintRoutData();
void SendInf(int recv, int send);
void Exchange();
int main(){
int start, end, i, j, m, n;
FILE *pfile;
welcome();
pfile = fopen(“1.txt”, “r”);
if(pfile == NULL)
{
printf(“the file wrong,press any key to come back.n”);
getch();
return;
}
else
InitRoutData(pfile);
fclose(pfile);
printf(“nthe original route table:n”);
for(i = 0;i { printf(“%c||”, i + 65); for(j = 0;j < VERNUM;j++) if(data[i][j].dis > 0) printf(“<%c %d> ”, j + 65, data[i][j].dis); printf(“n”); } PrintRoutData(); getch(); for(i = 0;i < VERNUM;i++) { for(m = 0;m < VERNUM;m++) for(n = 0;n < VERNUM;n++) data[m][n].flag = 0; Exchange(); PrintRoutData(); getch(); } printf(“nexchange the route table:n”); return 0;} void welcome(){ int gdriver=DETECT,gmode; registerbgidriver(EGAVGA_driver); initgraph(&gdriver, &gmode,“C:Win-TC”); cleardevice(); setbkcolor(CYAN); setviewport(0,0,639,479,1); clearviewport(); setbkcolor(BLUE); setcolor(14); rectangle(200,200,440,280); setfillstyle(1,5); floodfill(300,240,14); settextstyle(0,0,2); outtextxy(50,30,“Distance Vector Routing Algorithm”); setcolor(15); settextstyle(1,0,4); outtextxy(260,214,“Welcome to use!”); line(0,80,640,80); getch(); delay(300); cleardevice();} void InitRoutData(FILE* pfile){ char num[10]; int i = 0; char c; int m, n; fseek(pfile, 0, 0); for(m = 0;!feof(pfile)&& m < 7;m++) { for(n = 0;!feof(pfile)&& n < 7;n++) { while(!feof(pfile)) { c = fgetc(pfile); if(c == ',') { num[i] = ''; data[m][n].dis = atoi(num); data[m][n].flag = 0; data[m][n].flag = 0; i = 0; break; } /*end of if*/ else if((c >= '0' && c <= '9')|| c == '-') { num[i++] = c; } /*end of else if*/ } /*end of while*/ } /*end of for(n = 0*/ } /*end of for(m = 0*/ } void PrintRoutData(){ int i, j; for(i = 0;i < VERNUM;i++) { settextstyle(1,0,3); sprintf(tmp,“ %c”,i + 65); outtextxy(i*80+50,130,tmp); outtextxy(10,160+i*40,tmp); } for(j = 0;j< VERNUM;j++) { for(i = 0;i < VERNUM;i++) { if(data[i][j].dis <= 0&&i!=j) { if(data[i][j].flag2 ==1) { setfillstyle(SOLID_FILL,5); bar(80*i+50,40*j+155,80*i+120,40*j+185); delay(50000); data[i][j].flag2 =0; } setfillstyle(SOLID_FILL,3); bar(80*i+50,40*j+155,80*i+120,40*j+185); settextstyle(1,0,2); sprintf(tmp,“-”); outtextxy(80*i+65,40*j+165,tmp); } else if(data[i][j].dis >=0) { if(data[i][j].flag2 ==1) { setfillstyle(SOLID_FILL,5); bar(80*i+50,40*j+155,80*i+120,40*j+185); delay(50000); data[i][j].flag2 =0; } setfillstyle(SOLID_FILL,3); bar(80*i+50,40*j+155,80*i+120,40*j+185); settextstyle(1,0,2); sprintf(tmp,“%d”,data[i][j].dis); outtextxy(80*i+65,40*j+165,tmp); } } /*end of for(j = 0*/ } /*end of for(i = 0*/ } void SendInf(int recv, int send){ int i; for(i = 0;i < VERNUM;i++) { if(data[send][i].dis > 0&& data[send][i].flag!=1) { if(data[recv][i].dis <= 0&&recv!=i) { data[recv][i].dis = data[send][i].dis + data[recv][send].dis; data[recv][i].flag =1; data[recv][i].flag2 =1; } else if(data[recv][i].dis > data[send][i].dis + data[recv][send].dis) { data[recv][i].dis = data[send][i].dis + data[recv][send].dis; data[recv][i].flag =1; data[recv][i].flag2 =1; } } /*end of if*/ } /*end of for*/ } void Exchange(){ int i, j; for(i = 0;i < VERNUM;i++) { for(j = 0;j < VERNUM;j++) { if(data[i][j].dis > 0&& data[i][j].flag!=1) { SendInf(i, j); } /*end of if*/ } /*end of for(j = 0*/ } /*end of for(i = 0*/ } 四、实验心得体会 通过本次实验训练,我了解了距离矢量路由算法的基本原理,复习了C语言编程的内容,通过对路由算法的实现,加深了对路由表交换的理解。 实验二 一、实验目的及要求 编写程序,联系Socket编程和TCP/IP协议的应用,要求实现Server端和Client端的信息通信。 二、实验原理 在TCP/IP编程中,为客户端和服务器端提供相同的端口号和IP地址号,实现Server端和Client端互联,运用Java文件流的知识,实现两端的信息传递。 三、源程序 /********************ChatClient*********************/ import java.awt.*;import java.awt.event.*;import java.io.*;import java.io.IOException;import java.net.*; public class ChatClient extends Frame{ Socket s = null;DataOutputStream dos = null;TextField tf = new TextField();TextArea ta = new TextArea(); public static void main(String[] args){ new ChatClient().launchFrame();} public void launchFrame(){ setLocation(400,300);this.setSize(300,300);add(tf,BorderLayout.SOUTH);add(ta,BorderLayout.NORTH);pack();tf.addActionListener(new tfListener());this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ disconn(); System.exit(0); } });setVisible(true);conn();} public void conn(){ try { s = new Socket(“127.0.0.1”,5555); dos = new DataOutputStream(s.getOutputStream()); System.out.println(“客户端连接成功!”);} catch(UnknownHostException e){ e.printStackTrace();} catch(IOException e){ e.printStackTrace();} } public void disconn(){ try { dos.close(); s.close();} catch(IOException e){ e.printStackTrace();} } private class tfListener implements ActionListener { public void actionPerformed(ActionEvent e){ String str = tf.getText().trim(); ta.setText(str); tf.setText(“"); try { dos.writeUTF(str); dos.flush(); } catch(IOException e1){ e1.printStackTrace(); } } } } /********************ChatServer******************/ import java.io.IOException;import java.net.*;import java.io.*; public class ChatServer { public static void main(String[] args){ boolean started = false; try { ServerSocket ss = new ServerSocket(5555); started = true; while(started){ boolean bConn = false; Socket s = ss.accept(); bConn = true; System.out.println(”一个客户端已连接"); DataInputStream dis = new DataInputStream(s.getInputStream()); while(bConn){ String str = dis.readUTF(); System.out.println(str); } } } dis.close();} } catch(IOException e){ e.printStackTrace();} 四、实验心得体会 通过本次实验的练习,熟悉了TCP/IP协议,对套接字等概念有了深入的了解,对用Java语言实现Socket编程并实现客户端和服务器端的信息交互有了一定的了解。 计算机辅助制造 实训报告 专 业 数控技术班 级 数控1002 学 号 09姓 名___耿 策 指导教师路大勇 起止日期 2012.12.10—12.14 目录 计算机辅助制造实训任务书………………………………1 实训任务一………………………………………………… 实训任务二………………………………………………… 实训任务三………………………………………………… 实训任务四(配合件凸件)……………………………… 实训任务五(配合件凹件)……………………………… 心得体会…………………………………………………… 3 6 7 10 13 16 mastercam实训任务书 一、目的与要求 mastercam实训为该课程学习的重要组成部分。用于巩固所学知识,强化二维和三维造型技能,熟练进行二维加工和三维曲面粗、精加工刀具路径的生成、检验、后处理等的操作。实训时间为一周,要求完成规定的造型与编程任务(电子稿)和《实训报告》。 二、任务说明 1.完成图1的二维造型,不标注尺寸。完成外形铣削及挖槽铣削加工程序的编制(零件厚度10),书写相应的文字说明。编程原点位于底边中点,材料为45钢,刀具及切削参数自定。 实训任务一 实训任务二 2.采用实体建模方法,完成图2形体的三维造型。 3.综合运用所学造型及编程技能,完成下列零件的工艺设计、程序编制及加工校验,书写相应的文字说明。刀具及切削参数自定。 实训任务三 实训任务四 实训任务五 实训任务一: 实训任务一 1图样分析: 通过看图纸,了解工件的外形。由图可知,该工件是一个二维造型。2.工艺路线分析: 根据图纸可知,该工件在加工过程中,首先选用φ20立铣刀铣出外形轮廓,接着选用φ12立铣刀用外形铣削的方式分三层铣出内槽轮廓。3刀具的选择: φ12立铣刀、φ20立铣刀 表1 工件1 工艺过程卡篇二:计算机编程实习报告 土木工程2007级 计算机实习任务书 指导教师 班 级土木(xx)班 姓 名mr.su 学 号 西南交通大学土木工程学院 2008年11月 (一)实习时间:2008 年11月30日—12月14日 (二)实习地点:x7103 (三)实习目的: 计算机实习是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。 本课程的教学目的是:通过系统的上机实习,使学生的计算机基础知识与基本操作技能得到进一步的巩固,提高学生的编程能力和用机水平,培养学生用计算机分析与解决问题的意识,为后续课程打下基础。 (四)实习内容: 本实习要求完成如下三项任务: 1. 巩固所学的计算机基本知识和基本操作技能,包括: (1)熟练掌握正确的键盘指法和英文盲打技术;(2)能熟练使用windows操作系统; (3)熟练掌握word、excel、powerpoint等办公自动化软件;(4)能使用网络获取、发送信息; (5)用powerpoint制作一组幻灯片(幻灯片所表述的主题自定),或用excel 绘制出图1所示的sin(x)、cos(x)函数曲线。2. 计算机语言及编程 用本学期已学过的vc++语言编程。编程题目及要求由指导教师指定(可参考附录中提供的题目)。 3. 提交一份实习报告(要求打印) 实习报告不得少于1000字:主要总结实习心得和实习成果(全部程序及计算 (五)实习成果: 【1】程序1: 按以下形式打印出杨辉三角形中的各值 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 · · · · · ·· ··· ····· ***691 算法原理: 数据结构:用一个二维数组存放杨辉三角形的数据。 分析杨辉三角形的数据特点,该三角形每一行的行初和行末的数据都是1,从第三行起,每行数据的第2—i-2列数据都满足以下关系:a[i][j]=a[i-1][j-i]+a[i-1][j];根据上述关系得出杨辉三角的每个数据存放在已定义的二维数组中,然后按照图形格式输出已经存放的数据,得出杨辉三角。 程序流程图: 数组a[i][j],i表示行,j表示每一行的第几个数。使用方法:输入程序,直接显示。源程序: #include 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。算法原理:没有具体详细的数学算法原理。 变量说明:p表示的是要输入的字符,char p[100]表示的是一个字符型一维数组,t表示的 是输出文件的名称,doc表示的是文件的输出格式,i表示的是循环变量。 使用方法:输入需要的字符,用#键结束,#键之后的不能输出。 一.实习目的随着我国机械加工行业的发展数控设备的广泛应用,不少职校都开设数控技术应用专业,培养应用型人才.通过实习是为了更好的将理论知识运用到实践中去,了解现代机械制造工业的工艺过程,和数控加工方法及 其所用主要设备的工作原理,以生产实践获的感性知识.二.实习内容 1;安全生产操作规程:听老师讲解有关工业安全方面的知识.遵守操作规程才是安全的保障.a,进入工作场地须戴好劳动防护用品,女生须戴好工作帽.b,上班前须先对机床和润滑系统注油.检查机床分机构的完好性.手柄位置的正确性;启动后应使主轴低 速空转1-2分钟,等机床正常后才能工作.c,工作中需要变速的必须先停车.变换走刀箱,手柄位置要低速时进行.使用电器开的机床不准用正,反车 作紧急停车,以免打坏齿轮.d,不允许在卡盘上及床身导轨上敲击校直工作,床面上不准放置工具或工作.e,更换卡盘或装夹较重工作时,应用木版保护床面如工件不卸,应用千斤顶支承.2;机床类型和主要技术参数:CNC6132 床身上最大回转直径--340mm 最大加工长度--750mm 主轴通孔直径--52mm 主轴转速--100-2100r.p,m 纵向进给最大速度--3m/min 横向进给最大速度--3m/min X 轴定位精度--±0.01 Z 轴定位精度--±0.02 X 轴重复定位精度--0.005mm Z 轴重复定位精度--0.01mm 主电机功率--4kw 指令方式---绝对值 / 增量值 最大编程尺寸--±9999.999 零件程序贮存量 / 程序量--6KB 刀架刀数值---4 3;机床结构的组成部分:车床主要由变速箱、主轴箱、挂轮箱、进给箱、溜板箱、卡盘,刀架、尾座、床 身、丝杆、光杆和操纵杆/操作面板(显示器`软键盘)组成.调速方式:变速齿轮调速方式,带传动方式,两个电动机分别驱动调速方式.4;刀具的选折:数控刀具的选择决定了切削用量的确定,是数控加工工艺中的重要过程.它不仅影响数控机床的加工效率,而且直接影响加工质量,同时也对操作者安全问题有影响.应根据机床的加工能力、工件材料的性能、加工工序、切削用量以及其它相关因素正确选用刀具.因此刀具的选折很重要.5;我们所用的刀具材料和刀具有:高速钢刀具;硬质合金刀具等.外圆刀.螺纹刀和切断刀.6;要根据被加工工件的形状来选刀具:要考虑零件是否能够加工出来,以避免少切后者过切的现象.结合工件材料来选折刀具,考虑工件材料个刀具材料的硬度,选好刀具才能进行加工,避免在切削过程中出现打刀问题.根据机床主轴转数和切削用量来选折刀具 7;编程和输入程序: 按照老师给我的工件图纸和尺寸进行编写,我们常用到的主要编程指令有/G90,G71,G72,G73.和程序主要字符:O程序名,T刀具符号,M字符:M03主轴顺时针旋转;F字功能用于控制 切削进给量;S字功能控制主轴转速;G00快速定位G01直线插补指令;G02/G03顺逆圆弧插补和M30程序停止.将编好的程序在机床控制面板上进行输入,过程中可以对程序进行检查和摸拟走刀.程序准备好之后就可以按照操作规程进行操作加工.8;工件校正:可采用目测方法,和仪器校正法,达到工件和主轴旋转中心线平行即可.9;对刀:首先沿x轴方向切一外圆,用千分尺测量工件直径,取得读数再平端面,完后输入x/z坐标值.其他刀具在实习过程中我门都采用类似方法.10;加工操作和加工对象:在控制面板进行调制在参数中对进给陪率和主轴陪率值进行修调如:30%`60%`80%.和主轴转数S500.精度高的回转体工件.表面粗糟度小的回转体零件.轮廓复杂的回转体零件. 计算机网络实习报告 2009110302130李维茜 这四个周,我们在北京协力超越科技有限公司进行了有关计算机网络的实习。本次实习主要围绕两台计算机之间的通信展开,让我们从理论和实践上了解了两台计算机之间是如何通信的,这其中主要包含了带交换机和路由器的该如何进行配置。我们在实验中主要以中兴的ZXR1800设备为实验对象,对三级交换机和二级路由器的具体使用进行了了解。刚开始我们主要致力于理论的学习,这一部分在学校里也学习了不少,所以理解起来相对比较轻松。首先,老师让我们又熟悉了一下OSI的七层结构模型以及每一层对应的相关知识。我从中知道了,由上而下,计算机网络主要是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,并且,老师主要讲解了比较重要的物理层、链路层和网络层。在物理层,数据是以比特流的形式进行传送;在链路层中,主要的设备是交换机,它为数据封装和解封装MAC地址形成数据帧;而在网络层中,路由器为数据封装和解封装IP地址,形成数据包;在上一层——运输层中,数据是以数据段的形式进入网络层。接下来,我又了解了关于这几层中的设备的一些知识。在划分冲突域和广播域方面,集线器对于二者都不可以进行分割;交换机可以对冲突域进行分割,但不可以对广播域进行分割,不过利用VLAN也可以实现广播域的分割,这在后面老师对我们进行了详尽的解释;而路由器对于冲突域和广播域都可以进行分割。同时,我们还学习了如何为公司的不同部分配子网。IP地址分为A类、B类和C类,A类地址是从0.0.0.0~127.255.255.255(其中10.0.0.0~10.255.255.255是私网地址);B类地址是从128.0.0.0~191.255.255.255(其中172.16.0.0~172.31.255.255是私网地址);C类地址是从192.0.0.0~255.255.255.255(其中192.168.0.0~192.168.255.255是私网地址)。在第一天课的实验中,我们主要进行了路由器和交换机之间的转换和相关配置。当进入到超级终端后进入到全局配置模式,在该模式中输入命令porttype slot 1/2时,既可以使ZXR1800在二层路由器和三层交换机之间进行转换。转换之后,可以通过命令为设备的百兆端口和千兆端口赋一个IP地址。在全局配置模式下,输入interface fei_2/?(端口号),进入ZXR10(config-if)# ip address 自己设一个IP地址 255.255.255.0(子网掩码)。 接下来,我们学习了如何形成环路和如何进行直连路由和静态路由的配置。在连接交换机形成环路时,交换机会出现广播风景、复制出多个重复的帧和MAC地址表不稳定等问题。要解决这一系列问题需要引入双星型网络结构、生成树协议、单端口环路检测和ZESR(以太环型交换网技术)。在上文中,我提到了VLAN,其实它就是一个虚拟的网络,可以帮助交换机分割广播域。VLAN主要分为单机VLAN、跨交换机VLAN和三层交换机,它下面的Access端口只属于一个VLAN。下面说一下路由表的组成,分为直连路由、静态路由和动态路由,着重说一下静态路由。在交换机连接了路由器和设置好不同的VLAN并为其分配IP地址后,就形成了静态路由。要实现两台计算机之间的通信,必须在对路由器和计算机的IP地址进行分配时对静态路由进行配置,可以通过输入命令进行配置。在全局模式下,输入ip route 目的网络号255.255.255.0(子网掩码)下一条IP,也可以进行缺省的静态路由配置,如ip route 0.0.0.00.0.0.0。而动态路由是使用RIP协议,既跳数最少作为最优路径,最多支持15跳,16跳不可达。路由器只知道自己下一跳的情况,如果下一跳一样,会保留最新路由表项;如果不同,取跳数最少为最优。 最后,讲了ICT(IT+CT),分为融合通讯(IP语音)、信息安全、电子商务、企业应用和数据中心五部分。并且讲了NAT——一种将三类地址中的私网地址转化为公网地址的技术。最终,我们实现了两台计算机在静态路由上的通信。 下面我分情况具体讲解一下交换机和路由器在实现两台电脑之间通信的配置: (1)只使用交换机 连接上两台计算机后,只需要将计算机的IP设成同一网段的就可以进行通信。 (2)只使用路由器 进入全局配置模式,输入interface fei_2/?,为端口配置默认网关的IP地址,再分别为默认网关下的电脑配置同一网段的IP就可以实现通讯,使用ip address IP地址 255.255.255.0命令为端口配置IP。 (3)使用三层交换机和路由器形成静态路由 先为路由器进行配置(同(2)),再为三层交换机设置VLAN,命令如下: ZXR10(comfig)#vlan 2 ZXR10(comfig-vlan 2)#switchport pvid fei_2/2 ZXR10(comfig-vlan 2)#exit ZXR10(comfig)#interface vlan 2 ZXR10(comfig-if-vlan)#ip address IP 255.255.255.0 ZXR10(comfig-if-vlan)#exit 在路由器和三层交换机上分别设置ip route 目的主机的网络号 子网掩码 下一跳IP 可以在DOS界面下用Ping命令进行测试。 以上就是我本次实习的收获。第三篇:编程实习心得
第四篇:数控编程实习
第五篇:计算机网络实习报告