JavaSE-网络编程
网络编程
软件架构:
CS架构:客户端-服务器
BS架构:浏览器-服务器
不过现在的很多软件都是一种混合开发,就是将CS架构和BS架构融合起来。
网络编程三要素
如何准确定位一台或多态主机:使用IP地址
如何定位主机上的特定的应用:使用端口号
如何可靠、高效地进行数据传输:规范通信协议
IP地址
IP地址:网络中的一台计算机设备做唯一编号
IP地址分类:
分类方式一:
IPv4:占用4个字节,表示为a.b.c.d的形式,以点分十进制表示
IPv6:占用16个字节
分类方式二:
公网地址(万维网使用)和私网地址(局域网使用)192.168.开头的就是私有地址
本地回路地址:127.0.0.1
域名:便捷地记录ip地址
www.baidu.com kuoz.top
域名使用中通过DNS解析成IP再进行访问的
端口号
端口号可以唯一标识主机中的进程
不同的进程分配不同的端口号
范围:0~65535
网络通信协议
OSI模型:过于理想化,没能实现
TCP/IP:分为应用层、传输层、网络层、物理+数据链路层
InetAddress类
InetAddress类的一个实例就代表一个具体的ip地址
实例化方式:
InetAddress getByName(String host)
InetAddress getLocalHost()
TCP协议和UDP协议
计算机网络的重要重要指示,在此处简要了解。
TCP的Socket网络编程
网络上具有唯一标识的IP地址和端口号的组合,唯一可识别的标识符套接字(Socket)
1 |
|
当客户端需要接收服务器发送的回复信息时出现的死锁问题:
客户端向服务器发送数据后,服务器向客户端回复信息,客户端接收服务器的接受信息。
如果直接在客户端创建输入流并打印出来,而不进行操作,那么服务器端会因为认为Socket没有终止发送信息而不回复回复信息,客户端没有接收到数据,那么也不会关闭Socket,这样就相互锁在了一起。
解决方法是在客户端发送数据后socket.shutdownOutput();
来表示已经发送完毕。
UDP网络编程
TCP有三次握手,建立连接,是可靠的
UDP不需要建立连接,是不可靠的
URL编程
URL(Uniform Resource Locator):统一资源定位符
一个具体的URL就对应着互联网上某一资源的地址
URL的格式:
http:// 127.0.0.1:8080/…?name=Tom
应用层协议 ip地址 端口号 资源地址 参数列表
URL类
Java中提供了URL类来进行URL的相关操作
常见的方法:
1 | //获取相应的url值 |