秋计算机网络实验指导书Word文档格式.docx
- 文档编号:21651031
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:63
- 大小:789.54KB
秋计算机网络实验指导书Word文档格式.docx
《秋计算机网络实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《秋计算机网络实验指导书Word文档格式.docx(63页珍藏版)》请在冰豆网上搜索。
2.安装git及创建自己的公钥:
3.多人协作共享版本库:
建议使用的功能:
1.缺陷跟踪,用来分配、讨论、管理任务:
2.维基,用来协作写文档:
其它还有很多好玩的功能,感兴趣的自己挖掘吧。
推荐一个Github官方针对Git的图形客户端(遗憾的是目前似乎只有Mac版本)
网址是
看过命令介绍的童鞋应该很快就能上手,虽然这个图形客户端肯定是没有命令行那么好用,不过应付大部分任务应该还是没有问题的
Git简明指导手册
基本使用<
1.1.
安装和配置
1.2.
创建新容器(repository)
1.3.
下载代码
1.4.
更新代码
1.5.
合并他人的更新
高级功能<
2.1.
忽略非源码文件
2.2.
撤销修改
2.3.
删除文件
参考资料和建议<
4.
常见错误<
4.1.
error:
failedtopushsomrefsto
Github提供了非常详细的安装和初始配置教程:
详细信息:
简化版:
假设repository的名字叫hello-world。
先在github上创建并写好相关名字,描述。
$cd~/hello-world//到hello-world目录
$gitinit//初始化
$gitadd.//把所有文件加入到索引(不想把所有文件加入,可以用gitignore或add具体文件)
$gitcommit//提交到本地仓库,然后会填写更新日志(-m“更新日志”也可)
$gitremoteaddorigingit@:
username/hello-world.git//增加到remote
$gitpushoriginmaster//传送到github上
一人创建好repo后,其它人不需要再创建,而是直接下载
$gitclonegit@:
username/hello-world.git
无论新加了文件,还是只有文件修改
$cd~/hello-world
$gitadd.//这样可以自动判断新加/更改了哪些文件,或者手动加入文件名字
$gitcommit//提交到本地仓库
$gitpushoriginmaster//不是新创建的,不用再add到remote上了
假如本地已经存在了代码,而远程repo里有更新,把更改的合并到本地的项目:
$gitfetch//获取远程更新
$gitmergeorigin/master//把更新的内容合并到本地分支
或者就是简单的一个
$gitpull
注:
push自己的更新之前,必须先合并远端有而本地没有的更新,否则可能会遇到一些问题
有些文件是不需要用git管理的,比如编译过程中产生的*.o,*.class,*.exe,*.apk等,编辑器产生的*.bak、*.swp等
$vim.gitignore//把文件类型加入到.gitignore中,保存
以后再gitadd.能自动过滤与.gitignore中内容匹配的文件。
更详细的说明:
如果做了一些修改,但发现不对,但还没commit,可以用下面命令恢复到修改前最后一次commit的状态
$gitcheckout--path/filename
$gitrm*//不是用rm
$gitcommit
建议用“Learnbydoing”的方式学习git,用到什么功能就学习一下什么功能,遇到什么问题就找相应解决方法,循序渐进日积月累逐渐掌握git。
最便捷的获取帮助的方式:
git
command
--help
“照猫画虎”地使用git命令虽然一般足以应对大多数情况,但如果能对git有比较深入的了解,可以更得心应手,所以建议读至少一本git书的基础部分:
∙ProGit中文版:
http:
//progit.org/book/zh/
(前三章就足以应付我们的日常使用了。
如果你想深度理解一下,接着向后读吧。
)
∙GitCommunityBook:
//book.git-
∙Git权威指南:
$gitpushoriginmaster
错误提示:
解决办法:
$gitpulloriginmaster//先把远程服务器github上面的文件拉先来,再push上去。
UseGit
FEB25TH,2012
初学git
想想自己接触git也快一年了。
记得当时刚刚接触的时候,一无所知,根本就不知道什么是版本控制系统。
听学长说是很有用的工具,然后也就这样开始接触。
记得当时看着官方的help文档,一步一步地操作。
对于我这个大一英语全不及格的人来说,可真是苦不堪言啊。
忙了一整个下午,最终还是一头雾水,也不知道当时整好了没有。
根本就分不清git和github的关系。
还看着一堆的英文的东西,哎……往事不堪回首,这样想起来,貌似这一年自己还是收获很多的。
希望下一年能够让自己收说更多的,嘿嘿……
git和github
我刚开始的时候,就是搞不懂git和github之间的关系。
当时就知道这是个版本控制工具,到底版本控制工具有什么作用呢,根本就没有什么切实的体会。
再加上一堆的英文的文档,惨不忍睹啊。
其实本质上讲,git和github一点关系都没有。
就像那些笔记本电脑和京东没有一点关系。
git本身是一个程序。
这个程序能够对变动的目录进行跟踪,检出,恢复等等一堆强大的功能。
而我们写代码不就是在一个目录里到处变更文件吗?
这样子管理起来就会很麻烦。
所以git就很形象的称为版本控制工具了。
不过要说git的起源还是在维护linux内核的时候诞生的,这方面的资料网上有很多。
所以git就是一个程序,在linux下,它就形象的展现成命令行,你就可以在里面输入命令之类的。
就这么简单。
再来说说github。
它直观的表示就是一个网站,但是不同的是它这个网站有着特别的功能。
最主要的功能就是,你可以在它那里托管你的代码。
再加上其它一些辅助功能,使得你能够更好的工作。
想github这样的托管的网站有很多:
sourceforge
bitbucket
gitcafe
code.google
还有其他一些相似的网站,另外,相对的,版本控制工具也不止git一个,使用比较广泛的还有
svn
hg
cvs
这些都可以在网上很轻松的搜索到相关资料。
使用git和github
讲讲具体使用git和github来维护自己的项目时候要用到的命令和过程
∙安装git
这个比较简单。
在linux下面,你可以选择编译安装或者是直接使用apt-get来安装。
使用apt-get安装:
1
sudoapt-getinstallgit-coregit-doc
安装完成之后,输入下面命令检查是否安装成功:
git--version
查看是否顺利的输出版本号
使用编译安装运行下面命令安装编译依赖的软件包
sudoapt-getbuilt-depgit-coregit-doc
下载git源码包并且解压,切换到源码包的目录,执行下面命令:
2
3
makeprefix=/usr/localalldoc
sudomakeinstallinstall-doc
安装完成后可以查看自己的git版本。
∙使用git如果只是使用git版本控制工具,那么,你知道在你的项目文件目录下面运行命令
gitinit
就会在该目录下面创建一个版本库了,你会发现在该目录下面多了一个.git的目录。
在这里还是结合github一起讲解。
在github上注册一个帐号。
之后主要的一部就是设置公钥和私钥。
github采用ssh协议进行代码的传输认证。
其实ssh协议在这里理解很简单,就是你通过一个命令,产生一对公钥和私钥,这两个是有联系的。
你把公钥放在github的网站上,然后私钥留在自己的电脑里面,每次你要和github通信的时候,它就会认证一下是否是管理用户。
使用下面命令可以产生一堆公钥和私钥。
ssh-keygen
~/.ssh/id_rsa是私钥,~/.ssh/id_rsa.pub是公钥,你可以用文本编辑器打开公钥文件,你把公钥文件里面的内容复制到github上的你的账户里的相应位置(专门有这么一个地方)。
再执行下面命令,测试是否成功。
ssh-Tgit@
现在你可以在github上面建立一个仓库了。
写好你的仓库的名字。
然后就是把你的本地仓库代码送到远程里面。
假设你在本地有一个仓库了,执行下面两条命令,这两条命令是告诉远程版本库是谁提交的版本库
gitconfig--globaluser.name"
yourname"
gitconfig--globaluser.email"
youremail"
添加远程版本库:
gitremoteaddorigingit@:
cloudaice/helloworld.git
其中origin是给远程版本库起的一个名字,这个名字和我们在github上建立的版本库的名字是不相关的,只是对于我们本地给它起的一个名字。
后面表示,版本库的路径,在这里是cloudaice路径下的helloworkd.git版本库。
在这里要重点说一下,github支持三种协议传输,但是只有ssh协议才能够执行push操作,因此在添加远程版本库的时候最好使用该添加方法,如果对于远程版本库,我们不执行推送的话,比如是和别人协作的时候,对于管理员的版本库,我们就只需要pull。
因此,可以使用另外两种方法
gitremoteaddorigingit:
//:
cloudaice/helloworld
gitremoteaddorigin:
到此就算把本地版本库和远程的联系起来了,下面介绍一些常用命令。
下面提到的origin默认表示远程版本库的名称,origin/master默认表示远程版本库origin中的master分支
gitaddfilename
把该目录下的这个文件添加到暂存区;
gitadd.
把目录下的所有文件添加到暂存区。
在这里你可以通过建立一个.gitignore文件,在里面写如你不想添加到暂存区的文件的名字。
这样即使执行这条命令也不会把那些文件添加到暂存区了。
gitcommit-m"
infomation"
提交暂存区的内容到版本库,引号里面的为你的本次提交的信息,最好写的清晰明白。
gitpushoriginmaster
将本地的版本库推送到远程版本库中,origin是远程版本库的名字,master是远程版本库的分支名称。
当有多个分支的时候,可以采用下面命令
gitpushoriginlocalbranch:
remotebranch
localbranch表示本地分支名称,remotebranch表示远程版本库分支名称
gitbranch
查看当前本地分支,其中当前使用的分支会在前面加上*号
gitbranch-a
查看所有分支,包括远程分支
gitbranch-r
显示远程版本库
gitremote-v
查看所有远程版本库
gitbranchbranchname
基于当前分支,创建分支
gitcheckoutbranchname
检出分支,即转到该分支目录下
gitcheckout-bcurrentbranchnewbranch
基于currentbranch分支创建newbranch分支,并且检出newbranch分支
gitbranch-moldnamenewname
分支重命名,oldname为原来名字,newname为新的名字。
gitmergebranchname
合并分支,把branchname分支合并到当前的分支上面来,一般branchname分支是基于当前分支创立的。
这种合并方法是合并全部的。
4
5
gitcherry-pick-n提交号1
gitcherry-pick-n提交号2
.
gitcherry-pick-n提交号m
这样可以任意选择合并哪个提交号,git里面的提交号是由40位的hash码组成一般前七位就足够辨别了。
gitbranch-dbranchname
删除分支branchname。
gitstatus
查看当前状态
gitfetchoriginmaster
将远程版本库拖到本地的一个远程版本库中,其实添加一个远程版本库的时候,都会在本地有一个远程版本库的复制。
我们可以通过
gitcheckoutorigin/master
检出远程版本库,因此fetch命令计时将远程版本库的更新同步到本地的远程版本库
gitpullorigin/master
把远程版本库的更新同步到本地的远程版本库,并且合并与之相对应的本地版本库。
相当于下面两条命令的组合:
gitmergeorigin/master
另外:
HEAD关键字指向版本库中的末稍,即为最后一次提交的版本库
学习git的网站:
+
worldhello
白话git
高校利用git
Postedby
cloudaice
Feb25th,2012
git
Tweet
实验要求
计算机网络是现代信息社会最重要的基础设施之一。
在过去十几年里得到了迅速的发展和应用。
《计算机网络》课程实验的目的是为了使学生在课程学习的同时,通过在一个计算机网络环境中的实际操作,对现代计算机网络的基本功能有一个初步的了解;
通过实现一个数据链路层协议,掌握计算机网络通信协议的基本实现技术;
通过一个简单文件传送协议的设计和实现,了解计算机网络高层协议设计实现的环境和方法;
还提供了一些可以选作的实验以供有余力有兴趣的同学进一步提高。
总之,通过上述实验环节,使学生加深了解和更好地掌握《计算机网络》课程教学大纲要求的内容。
在《计算机网络》的课程实验过程中,要求学生做到:
(1)每次实验前应预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现情况提前做出思考和分析。
(2)仔细观察上机和上网操作时出现的各种现象,记录主要情况,做出必要说明和分析。
(3)认真书写实验报告。
实验报告包括实验目的和要求,实验情况及其分析。
对需要编程的实验,写出程序设计说明,给出源程序框图和清单。
(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。
(5)实验课程不迟到。
如有事不能出席,所缺实验一般不补。
实验的验收将分为两个部分。
第一部分是上机操作,包括检查程序运行和即时提问。
第二部分是提交电子版的实验报告。
此外,网络实验采用当堂检查方式,每个实验都应当在规定的时间内完成并检查通过,过期视为未完成该实验,不计成绩。
以避免集中检查方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。
实验一:
TCP/IP编程
1、实验目的:
掌握Socket编程过程,编写简单的网络应用程序。
2、实验环境:
Ø
Windows9x/NT/2000/XP/2003
TCP/IP协议
3、编程工具:
Java(JCreatorIDE),c/c++(VC++6.0)
4、实验内容:
1)利用编程语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。
要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。
2)修改上述程序,分别基于TCP和UDP,实现服务器根据客户请求,将客户端指定的文件可靠地传输给客户。
如果服务器没有指定的文件,服务器将给客户返回一个信息,通知客户其请求文件不存在。
基于UDP的文件传输可以考虑利用“停等协议”保证其可靠性。
3)有条件的同学可以进一步改进2)的程序,使之更实用。
比如可以请求服务器先传输目录,然后客户根据目录请求传输文件等。
选作内容,加分项目:
(可以当堂完成或课下完成)
4)在2)的基础上,实现多线程的文件服务器。
即服务器可以同时为多个客户端传送文件。
实现的手段为对每一个客户端请求,服务器主线程创建一个新的线程为其传送文件,然后主线程返回,继续等待其它客户端的连接请求。
5、实验方式:
每位同学上机编程实验,实验指导教师现场指导。
6、参考内容:
6.1JAVA版本的socket编程样例
(1)基于TCP实现客户向服务器传输任意一个字符串的客户端程序:
TCPClient.java
importjava.io.*:
import.*:
classTCPClient{
publicstaticvoidmain(Stringargv[])throwsException
{
Stringsentence;
StringmodifiedSentence;
BufferedReaderinFromUser=
newBufferedReader(newInputStreamReader(System.in));
SocketclientSocket=newSocket(“hostname”,6789);
//hostnameisserverdomainame
DataOutputStreamoutToServer=
newDataOutputStream(clientSocket.getOutputStream());
BufferedReaderinFromServer=
newBufferedReader(newInputStreamReader(
clientSocket.getInputStream()));
sentence=inFromUser.readLine();
outToServer.writeBytes(sentence+‘\n’);
modifiedSentence=inFromServer.readLine();
System.out.println(“FROMSERVER:
”+modifiedSentence);
clientSocket.close();
}
}
(2)基于TCP实现服务器将收到的字符串变换成大写后传回客户的服务器端程序:
TCPServer.java
classTCPServer{
StringClientSentence;
StringcapitalizedSentence;
ServerSocketwelcomeSocket=newServerSocket(6789);
While(true){
Socketconn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 实验 指导书