计算机网络
TCP/IP网络模型
C/S架构网络服务:客户端应用程序+服务器应用程序
程序员编写Web服务等通用网络服务程序,应当按照协议编写程序。编写自己的专有网络服务程序,可以制定自己的应用协议。
使用套接字指定端口号
java API 因特尔地址类:
网络服务
网络服务是通过服务器应用程序来提供的,不同网络服务需要不同服务器应用程序
统一资源定位符URL:
protocol://host[:port]path[?query]
本地文件URL:
file:///D:\image\1.png
统一资源定位符类:
网络通信
有连接通信(TCP)
连接示意图:
通信流程:
1,服务器应用程序持续监听tcp端口
2,客户端请求连接
3,服务器给出响应
4,客户端建立连接
5,通信结束,关闭连接
java API网络通信类
Socket(客户端套接字类)
getInputStream():获得套接字的字节型输入流对象,从输入流对象读取数据,就是接收对方发来的信息。
getOutputStream():获得套接字的字节型输出流对象。向输出流对象写数据,就是向对方发送信息。
代码结构:
try{
Socket s = new Socket(服务器域名或IP地址,服务器端口);
......
s.close();
}
catch(IOException e){......}
ServerSocket(服务器套接字类)
代码结构:
try{
ServerSocket ss = new ServerSocket(服务器端口);
while(运行条件或true){
Socket s = ss.accept();
......
s.close();
}
ss.close();
}
catch(IOException e){......}
网络编程:
c/s架构的网络服务程序
注:服务器程序一般要写成多线程并发程序,有利于多用户访问。
无连接通信(UDP)
通信流程:
1,接收方准备好缓冲区,监听某个udp端口。
2,发送方准备好接收方的网址,udp端口和需要发送的数据,然后发送数据,通信结束。
3,接收方接收数据,通信结束。
java API:
DatagramPacket(数据包裹类)
DatagramSocket(数据报套接字类)
代码框架:
UDP接收服务器
接受服务器代码结构:
try{
byte buf[] = new byte[缓冲区大小];
DatagramPacket pack = new DatagramSocket(buf,buf.length);
DatagramSocket ds = new DatagramSocket(UDP端口号);
while(运行条件或true){
ds.receive(pack);
......
}
}
catch(IOException e){......}
UDP多播
将数据报发送给一个群组,使用的是多播地址(D类地址)
多播通信流程:
1,发送方确定多播地址和UDP端口号,然后向群组持续发送数据。
2,接收方准备好接收数据用的缓冲区,然后加入到发送方指定的群组,监听该群组指定UDP端口号,接收数据。
多播套接字类------MulticastSocket
注:接收方使用多播套接字类,发送方使用的是一般数据报套接字类