现在的位置: 首页 > 综合 > 正文

网络编程基础

2017年11月18日 ⁄ 综合 ⁄ 共 5034字 ⁄ 字号 评论关闭


1.IP
一个IP地址对应一台计算机, 想要通过网络传输数据, 必须先要确定传输到哪台机器上, 也就是要确定IP地址.
IPv4, 由4个字节组成, 4组0~255的数字. 42亿. 2011年用尽. 30亿在北美. 亚洲4亿. 
IPv6, 由8组, 每组4个16进制数字组成.  
ipconfig: 查看ip地址
ping: 尝试连接某个ip地址
127.0.0.1: 本地回路地址, 就是找到本机
255.255.255.255: 广播地址
2.端口号
每个程序启动之后都会占用计算机上的一个端口.
一台计算机最多可以有65535个端口.
我们写网络程序, 那么也需要绑定一个端口, 推荐使用1024以上的. 1024以下的基本都被系统程序占用了.
3.网络协议
UDP:
面向无连接
数据不安全
速度稍快
不区分客户端与服务端
TCP:
面向连接, 三次握手
数据安全
速度略低
有客户端和服务端
         Socket 接口是访问 Internet 使用得最广泛的方法。 如果你有一台刚配好TCP/IP协议的主机,其IP地址是202.120.127.201, 此时在另一台主机或同一台主机上执行ftp 202.120.127.201,显然无法建立连接。因"202.120.127.201" 这台主机没有运行FTP服务软件。同样, 在另一台或同一台主机上运行浏览软件 如Netscape,输入"http://202.120.127.201",也无法建立连接。现在,如果在这台主机上运行一个FTP服务软件(该软件将打开一个Socket,
并将其绑定到21端口),再在这台主机上运行一个Web 服务软件(该软件将打开另一个Socket,并将其绑定到80端口)。这样,在另一台主机或同一台主机上执行ftp 202.120.127.201,FTP客户软件将通过21端口来呼叫主机上由FTP 服务软件提供的Socket,与其建立连接并对话。而在netscape中输入"http://202.120.127.201"时,将通过80端口来呼叫主机上由Web服务软件提供的Socket,与其建 立连接并对话。 

1.什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。 

一.TCP基础
1.TCP和UDP的区别
TCP是面向连接的, 三次握手.
数据安全
区分客户端与服务端
2.客户端
Socket在创建时需要指定IP地址和端口号, 创建之后就会连接服务器
连接之后可以通过getInputStream()和getOutputStream()获取输入输出流
通过IO流和服务器传输数据
3.服务端
ServerSocket在创建时需要指定端口号
使用accept()方法接收一个请求, 获取和客户端对应的Socket
连接之后可以通过getInputStream()和getOutputStream()获取输入输出流
通过IO流和客户端传输数据

二.telnet
1.配置Path
telnet是在C:\WINDOWS\system32路径下的telnet.exe程序
如果想在任意目录下运行, 需要将C:\WINDOWS\system32配置到Path环境变量中
默认系统是配置好的, 如果没有修改过, 不用手动配置
2.设置回显
输入 telnet, 可以进入telnet.exe程序
输入 set ?, 显示设置帮助
输入 set localecho
输入 quit
3.使用
telnet ip 端口号
按 ctrl + ]
按 回车


三.文件上传  
         文件上传案例分析
一、需求分析
1.多线程服务器, ServerSocket监听指定端口,在单独线程中接收文件
2.客户端,读键盘接受文件名,上传文件
3.文件上传,读文件,上传服务器,写文件

二、实现步骤
1.实现服务器
1)ServerSocket 绑定端口
2)在循环中,调用accept方法等待客户端的连接请求
3)new Thread(new UploadServicer(socket)).start(); 开启多线程运行服务程序
4)UploadServicer中,定义构造函数接受socket,run方法中写服务代码
5)获得输入输出流 getInputStream getOutputStream

2.实现客户端
1)创建客户端Socket
2)获得输入输出流 getInputStream getOutputStream
3)和服务器端进行信息交互

3.欢迎语
1)服务器端out.write
2)客户端 in.read

4.发送文件名
1)客户端
1.1 读键盘,让用户输入一个文件的路径,BufferedReader包装System.in
1.2 判断,是不是标准文件,判断文件是否存在,如果不是,给出相应的错误信息 
1.3 如果是个存在的文件,getName获得文件名,用out.write将文件名写给服务器
2)服务器端
1.1 in.read 阻塞,接受文件名
1.2 在服务器端指定一个文件夹存放上传的文件, e:/upload
1.3 在指定的文件夹下创建同名文件
1.4 如果创建失败,告诉客户端无法上传 如果文件已存在,告诉客户端文件存在, 程序不能再继续
1.5 如果创建成功,告诉客户端可以开始上传 out.write("可以上传文件".getBytes())

5.发送文件
1)客户端
1.1 获得服务器的反馈信息,如果不能上传,return
1.2 如果可以上传,
BufferedInputStream包装FileInputStream,读文件
BufferedOutputStream包装out(连着服务器),写出数据
int ch;
while((ch=bis.read())!=-1)
bos.write(ch);
bos.flush();

2)服务器端
1.1 BufferedInputStream包装in(连着客户端),读取数据
BufferedOutputStream包装FileOutputStream,将数据写入文件
int ch;
while((ch=bis.read())!=-1)
bos.write(ch);
bos.flush();

一.Aptana插件安装
1.在Eclipse根目录创建文件夹aptana, 在aptana文件夹中创建文件夹eclipse
2.将压缩包aptana_update_024747.zip中的内容解压到我们创建的eclipse文件夹中
3.找到Eclipse根目录下的eclipse文件夹, 在其中的links文件夹中添加文件, aptana.link
4.在aptana.link文件中写入路径, 例如: path=E:/MyEclipse 6.6/aptana
5.重新启动Eclipse, 可以看到欢迎页面 

二.HTTP协议
1.HTTP概念
HTTP协议是内部使用了TCP/IP协议,TCP协议负责建立连接,HTTP协议是在TCP协议建立连接的基础上,规定使用某种规则进行通信,使得服务器端和客户端有统一的通信规范,能够理解彼此的要求。因此TCP协议是连接层的协议,而HTTP协议是网络通信层的协议。

2.HTTP版本
HTTP1.1, 保持连接, 客户端与服务器一问一答之后, 不断开连接, 下次访问仍然使用这个连接
HTTP1.0, 不保持连接, 客户端与服务器一问一答之后, 连接断开, 下次访问时重新创建连接

 *************** 我们通过IE浏览器访问一个游戏的官方网站经历了以下过程
1,我们输入龙之谷或者英文形式的WWW.LZG.COM,遵循的协议是HTTP,首先IE浏览器帮我们把我们输入的地址发给DNS域名解析器请求解释,然后DNS解析完毕以后返回一个IP地址,这个IP地址就是龙之谷官方网站的IP地址。
2,IE浏览器把IP地址和端口号以及访问哪些内容发送给龙之谷官方网站(访问龙之谷官方网站),龙之谷官方网站做出回应,于是就建立了连接。(当然底层是TCP协议建立起来的连接)
3,建立连接的同时服务器得到了客户端的IP地址和端口号 以及IE浏览器信息等等,然后返回IE浏览器需要的信息给IE浏览器。
4,如果访问的页面不存在,服务器会返回一个乱七八糟的东西找不到页面等等 表示无法访问。

HTTP格式:以HTTP开头,后面跟主机地址,端口号,访问什么文件。(标准格式);我们也可以直接写通俗易懂的域名语言让DNS帮我们解析成标准的格式。

IE浏览器给服务器发送的请求如下:
request请求消息:(客户端发送的请求数据)
GET /a/a.html HTTP/1.1  请求方式  , 要访问什么文件,遵循的协议。(消息头)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel,  application/msword, */*  能接收哪些类型文件
Accept-Language: zh-cn   接收的语言。
UA-CPU: x86
Accept-Encoding: gzip, deflate   接收的压缩格式
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6.5; CIBA) 浏览器信息
Host: 127.0.0.1:3333     我要访问你的哪个主机IP地址 和你的哪个端口号   
Connection: Keep-Alive   保持连接  如果配成CLOSE就相当于1.0版本的了。

response响应消息 ( 服务器端的响应消息)

HTTP/1.1 200 OK  200ok (404表示找不到资源 )    遵循的协议,  响应的状态玛
Server: Apache-Coyote/1.1     服务器信息
ETag: W/"8-1286587592453"
Last-Modified: Sat, 09 Oct 2010 01:26:32 GMT  最后修改时间
Content-Type: text/html    连接类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。

Content-Length: 8   内容长度
Date: Sat, 09 Oct 2010 01:46:28 GMT   时间

注:一次连接可以访问多次,但是长时间不访问 会出现连接超时 断开连接。
其中最重要的两条信息是:GET /a/a.html HTTP/1.1    Host: 127.0.0.1:3333 

三.CSS
1.四种定义方式
a).在HTML标签的style属性中设置
b).在style标签中设置
c).将css代码定义在一个.css文件中, 使用@import url(路径);形式导入
d).使用link标签, 导入一个css文件, 在css文件中可以定义样式, 或者再导入其他css
优先级由页面定义的从上到下, 优先级由低到高.
2.选择器
a).标签选择器
E { sRules }
选择页面中所有E标签
b).类选择器
.classname { sRules }
选择页面中所有class属性为classname值的标签
c).id选择器
#id { sRules }
选择页面中所有id值为id的标签
d).包含选择器
E1 E2 { sRules }
选择E1标签中的所有E2标签
e).子对象选择器
E1 > E2 { sRules }
选择E1标签下面的子标签E2, 注意: 不包含子标签的子标签
f).属性选择器(IE6不支持)
E[attr] { sRules }
选择带有attr属性的E标签
E[attr=value] { sRules }
选择attr属性值为value的E标签
g).组合选择器
E1,E2,E3 { sRules }
选择文档中所有E1标签E2标签E3标签
h).伪元素选择器
a:link  超链接未点击状态。
a:visited 被访问后的状态。
a:hover 光标移到超链接上的状态(未点击)。
a:active 点击超链接时的状态。



【上篇】
【下篇】

抱歉!评论已关闭.