网络请求相关内容总结
2015-04-10 14:42
344 查看
网络请求相关内容总结
网络数据传输,熟悉多线程、Socket网络编程、熟悉TCP、UDP、HTTP等协议网络编程概述:
网络模型:
OSI模型
应用层
表示层
会话层
传输层
网络层
数据连接层
物理层
TCP/IP模型
应用层
传输层
网际层
主机至网络层
网络通讯要素
IP地址
端口号
传输协议
网络通讯前提:
找到对方IP
数据要发送到指定端口。为了标示不同的应用程序,所以给这些网络应用程序都用数字进行标示这个表示就叫端口
定义通信规则。这个规则称为通信协议,国际组织定义了通用协议TCP/IP
TCP和UDP的区别:
UDP协议:
面向无连接
每个数据报的大小在限制在64k内
因为是面向无连接,所以是不可靠协议
不需要建立连接,速度快
TCP协议:
必须建立连接,形成传输数据的通道
在连接中可进行大数据量传输
通过三次握手完成连接,是可靠协议
必须建立连接,效率会稍低
三次握手:
第一次:我问你:在么?
第二次:你回答:在。
第三次:我反馈:哦,我知道你在。
Socket:
Socket就是为网络服务提供的一种机制
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
玩Socket主要就是记住流程,代码查文档就行
UDP(User Datagram Protocol):用户数据协议
UDP概述:
需要DatagramSocket与DatagramPacket对象来实现UDP协议传输数据
UDP协议是一种面向无连接的协议。面向无连接的协议指的是正式通信前不必与对方先建立连接,不管对方连接状态就直接发送数据。
UDP协议开发步骤:
发送端:
建立DatagramSocket服务;
提供数据,并将数据封装到字节数组中;
创建DatagramPacket数据包,并把数据封装到包中,同时指定接收端IP和接收端口
通过Socket服务,利用send方法将数据包发送出去;
关闭DatagramSocket和DatagramPacket服务。
接收端:
建立DatagramSocket服务,并监听一个端口;
定义一个字节数组和一个数据包,同时将数组封装进数据包;
DatagramPacket的receive方法,将接收的数据存入定义好的数据包;
通过DatagramPacke关闭的方法,获取发送数据包中的信息;
关闭DatagramSocket和DatagramPacket服务。
UDP协议的Demo(必须掌握):
发送端:
java class UDPSend { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(); byte[] buf = "这是UDP发送端".getBytes(); DatagramPacket dp = new DatagramPacket( buf,buf.length,InetAddress.getByName("192.168.1.253"),10000); ds.send(dp); ds.close(); } }
接收端
java class UDPRece { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(10000); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp);//将发送端发送的数据包接收到接收端的数据包中 String ip = dp.getAddress().getHosyAddress();//获取发送端的ip String data = new String(dp.getData(),0,dp.getLength());//获取数据 int port = dp.getPort();//获取发送端的端口号 sop(ip+":"+data+":"+port); ds.close(); } }
TCP/IP协议:Socket和ServerSocket
基于TCP协议的网络通信概述:
TCP/IP通信协议是一种必须建立连接的可靠的网络通信协议。它在通信两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。
网络虚拟链路一旦建立,两端的程序就可以进行通信。
TCP/IP协议开发步骤:
客户端:
建立Socket服务,并指定要连接的主机和端口;
获取Socket流中的输出流OutputStream,将数据写入流中,通过网络发送给服务端;
获取Socket流中的输出流InputStream,获取服务端的反馈信息;
关闭资源。
服务端:
建立ServerSocket服务,并监听一个端口;
通过ServerSocket服务的accept方法,获取Socket服务对象;
使用客户端对象的读取流获取客户端发送过来的数据;
通过客户端对象的写入流反馈信息给客户端;
关闭资源
TCP/IP协议的一个Demo(必须要掌握!):
客户端:
java class TCPClient { public static void main(String[] args) { Socket s = new Socket("192.168.1.253",10000); OutputStream os = s.getOutputStream(); out.write("这是TCP发送的数据".getBytes()); s.close(); } }
服务端:
class TCPServer { public static void main(String[] args) { ServerSocket ss = new ServerSocket(10000); Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress(); sop(ip); InputStream is = s.getInputStream(); byte[] buf = new byte[1024]; int len = is.read(buf); sop(new String(buf,0,len)); s.close(); ss.close(); } }
HTTP协议:
HTTP是Hyper Text Transfer Protocol的缩写
是由W3C制定和维护的。目前版本为1.0和1.1
是开发web的基石,非常地重要
版本
1.0版本:是无状态的协议,即一次连接只响应一次请求,响应完了就关闭此次连接要想再访问须重新建立连接。而连接都是比较耗资源的。
1.1版本:是有状态的协议。即可以在一次网络连接基础上发出多次请求和得到多次的响应。当距离上次请求时间过长时,服务器会自动断掉连接,这就是超时机制。
HTTP协议的组成:
请求部分:
请求行:
GET / HTTP/1.1 包含:请求方式GET 请求的资源路径:/ 协议版本号:HTTP/1.1
请求方式。常用的有GET、POST
GET方式:默认方式。直接输入的网址。
表单数据出现在请求行中。url?username=abc&password=123
特点:不安全;有长度限制:<1k
POST方式:可以通过表单form method=”post”设置
表单数据会出现在正文中。
特点:安全;没有长度限制
请求消息头:
请求正文:第一个空行之后的全部都是请求正文
响应部分:
响应行:
HTTP/1.1 200 OK 包含:协议版本号:HTTP/1.1 响应码:200 描述:OK
响应码:(实际用到的30个左右,其他都是W3C保留的)
描述:对响应码的描述
常用响应码:
200:一切正常
302/307:请求的资源路径变更了
304:资源没有被修改过
404:资源不存在,找不到资源
500:服务器程序有错
响应消息头:
响应正文:
第一个空行之后的全部都是响应正文,浏览器显示的就是正文中的内容
邮箱 :charon.chui@gmail.com
Good Luck!
相关文章推荐
- iOS http网络请求相关知识总结
- ios 网络请求总结加强对中文的处理 问题:URL不允许写中文 在GET请求中,相关代码段打断点以验证。
- ###request获取请求路径内容的相关方法总结。例如:request.getContextPath()。。。
- VC操作Excel文件编程相关内容总结
- 字符字符串和指针相关的内容的总结
- 四级网络工程师路由器的相关配置大总结
- VC操作Excel文件编程相关内容总结
- 常用ANSI控制码及其相关内容总结(转)
- 【原创】WP7中使用进度条——弥补几乎所有网络上与之相关的技术博文的内容缺陷
- 顺序容器相关内容总结
- 常用ANSI控制码及其相关内容总结(转)
- iOS音频的后台播放总结(后台网络请求歌曲,Remote控制,锁屏封面,各种打断)
- DOS下常用的相关网络命令总结
- linux c网络学习总结2(IP地址相关的操作)
- VC操作Excel文件编程相关内容总结
- linux网络相关内容
- Symbian编程总结-网络与通信-套接字(1)-套接字体系结构与相关API
- Symbian编程总结-网络与通信-套接字(1)-套接字体系结构与相关API
- 网络技术相关总结 推荐
- VC操作Excel文件编程相关内容总结