网络编程
网络编程解决的问题有两个:
第一个问题是如何准确的定位网络桑一台或多台主机:定位主机上的特定应用,这个问题通过IP地址和端口号来解决;
第二个问题是找到主机后如何可靠高效的进行数据传输,这个问题由各种传输协议解决,主要包括TCP和UDP协议。
1. IP和端口号
IP
在java中使用InetAddress类代表IP
域名:通过DNS协议将域名转换为IP地址
本地回路地址:127.0.0.1 对应着:Localhost
如何实例化InetAddress:两个方法:getByName(String host),getLocalHost()
获取到InetAddress后的两个方法:getHostName获取IP地址,getHostAddress获取域名
端口号
用来标识正在计算机上运行的进程
端口号与IP地址的组合得出一个网络套接字:Socket
2. 网络通信协议
TCP网络编程
客户端
-
创建Socket对象,指明服务器端的ip和端口号
-
获取一个输出流,用于输出数据 getOutputStream
-
写出数据的操作
-
资源的关闭
服务端
-
创建服务器端的ServerSocket,指明自己的端口号
-
调用accept方法表示接受来自于客户端的socket
-
获取输入流 getInputStream
-
读取输入流中的数据
-
关闭资源
如果客户端要接收服务器端的数据的话,需要首先显式关闭数据流的输出,socket.shutdownOutput(),这样服务器端才会结束数据输入的while循环
UDP网络编程
DatagramSocket方法创建socket
DatagramPacket方法创建数据包,用socket发送packet
URL网络编程
URL(Uniform Resource Locator):统一资源定位符,它表示Internet上某一资源的地址
它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源
格式: https://localhost:8080/examples/beauty.jpg
协议 主机名 端口号 资源地址 参数列表
url.connection()可以将本地服务器与相应的url地址连接,从而进行数据的传输