码迷,mamicode.com
首页 > 编程语言 > 详细

java基础之网络编程

时间:2017-10-17 18:50:18      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:i/o   []   服务器   缓冲   主机名   null   长度   表示   dns   

1. 网络:不同的区域的计算器连接到一起就是网络,含局域网 城域网 互联网等

地址:ip地址,确定网络上的一个绝对的位置,端口号:用于区分计算机上的软件的。

资源需要进来所以出现了uri ,url其中UrL表示统一资源定位符,Uri  表示统一资源

url是uri的升级版多了一个定位

2. Tcp协议和udp协议

Tcp:先连接后接通  类似于打电话,说一次回应一次,面向连接,效率低下

Udp:协议,短信方式,非面向连接

3. 端口:1~65535之间   ,一般不建议使用1024以下的端口,因为多为被占用的端口

4. 缓存;dns查找的开销是非常大的,所以inetaddress类会缓存相应的结果,所以一旦得到结果那么就不会再次查找,在某些情况下,第一次查找失败,而第二次却查找成功是因为,第一次的时候信息还在传输中,第二个请求时可用,因为对于补充的dns查询只缓存10秒,一次ip地址的改变可能需要花几个小时,在此期间会有各种异常,主机名一般比ip地址稳定一些,所以一般会选择主机名,在主机名找不到的时候才会选择ip地址。

5. inetaddress :没有公共的构造方法,但有一些静态工厂方法来连接dns服务器来解析主机名,其中常用的有inetaddress.getbyname()以及inetaddress.getlocalhost();

inetaddress的常用方法:

getHostAddress():获取ip地址

getHostName():获取主机名

uri:标识一个资源的字符串

url:标识一个资源加位置

常用方法

openConnection()

openStream()

例如https://hao.360.cn/?src=lm&ls=n31c42a959f

getFile()获取此 URL 的目录路径加查询字符串 主机名后的第一个/和标识符#之间,没有就从主机名后的第一个/到最后 ?src=lm&ls=n31c42a959f

getPort()获取此 URL 的端口号,没有就返回-1;

getPath()  获取此 URL 的目录路径。/

getProtocol()获取此 URL 的协议名称。https

getHost()获取此 URL 的主机名。hao.360.cn

getRef():url的片段标识符#后面的,没有返回null;

getQuery():返回查询字符串src=lm&ls=n31c42a959f

url上应该避免使用equals方法因为可能是阻塞的i/o操作

get通信:名值对,不安全会显示

get/index.html ?account=dasdsa&password=dsadsadsad http/1.1:为请求行,get为返回资源的一个表示,/index.html请求资源的路径,http//1.1为协议的版本 ?后面为键值对,

Host: 127.0.0.1:8888:端口号;

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 :可以处理的文本类型

Connection: keep-alive:保持连接

6. Urlconnection 

Getcontentype():获取响应主体的内容类型

Getconnectlength():获取内容的字节数,没有返回-1;

getOutputStream();返回输出流

7. socket

Socket(InetAddress address, int port):开启socket;

setSoTimeout(int timeout):设置超时时间;

getOutputStream():请求输出流

close():关闭输入输出

shutdownInput():关闭输入,不释放socket占用的资源

shutdownOutput():关闭输出,不释放socket占用的资源

getPort():获取远程端口

getKeepAlive():是否开启连接

8. seversocket

ServerSocket(int port):创建serversocket对象

accept():监听连接和处理连接是可能抛出的异常,返回一个socket对象

DatagramSocket

DatagramSocket():用于client端

DatagramSocket(int port):用于server端

send(DatagramPacket p):用于client端

receive(DatagramPacket p):用于server端

setSoTimeout(int timeout):连接超时时间

9. DatagramPacket

DatagramPacket(byte[] buf,int length,InetAddress address,int port):用于client端,打包数据

getData():获得缓冲区数据,返回一个字节数组,后面一般会利用getLength()

getLength():getdata()中有效长度

详见:o’Reilly网络编程

java基础之网络编程

标签:i/o   []   服务器   缓冲   主机名   null   长度   表示   dns   

原文地址:http://www.cnblogs.com/gg128/p/7682862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!