java基础之网络编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础之网络编程相关的知识,希望对你有一定的参考价值。
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基础之网络编程的主要内容,如果未能解决你的问题,请参考以下文章