1、网络:讲不通区域的计算机联系到一起 局域网、城域网、互联网
网络编程:利用操作系统在不同通信协议上提供的接口(系统调用、函数库)
实现网络进程的安全通信
2、地址:IPd地址,确定网络上的一个绝对地址
3、端口号:用来区分计算机上的软件的 占用2个字节 0---65535
在同一个协议下,端口号不能重复
0---1024 的端口,我们不要设置
4、资源定位:URL统一资源定位 URI:统一资源
5、数据的传输:
a、协议
1)、TCP协议
面向连接的,效率比较低 类似于打电话
2)、UDP协议
面向非连接的,效率比较高
6、传输:
a、先封装
b、再拆封
使用IO流进行数据的传输
在程序中如何操作--->利用JDK封装的类
1、InetAddress: 表示互联网协议 (IP) 地址
static InetAddress getLocalHost();返回本地主机
static InetAddress getByName(String host) 给定主机名,确定主机IP地址
String getHostAddress(); 返回主机IP地址
String getHostName(); 获得主机名
InetSocketAddress: IP + 端口
InetSocketAddress(InetAddress addr, int port)
InetSocketAddress(String hostname, int port)
public final int getPort()
2、URL :资源定位
协议、IP、端口、资源文件
URL(String spec)
URL(URL context, String spec)
public final InputStream openStream()
//读取网页内容 写到文件
3、TCP:ServerSocket Socket (数据传输)
面向连接 安全可靠 效率低
请求 -------->响应
1)、服务器端
ServerSocket(int port)
public Socket accept() //接收客户端连接
a、创建一个服务器套接字
SeverSocket(port)
b、接受一个连接来自客户机的请求,并返回一个新的套接字
Socket s = SeverSocket.accept()
c、从套接字上获得输入流/输出流
Socket.getInputStream()/Socket.getOuputStream()
d、使用数据包装流
DataInputStream(InputStream) /
DataOutputStream(OutputStream)
(for example, optional)
e、从流中接收/发送信息
(XXX)InputStream.read() /(XXX)OutputStream.write()
f、释放资源
(XXX)InputStream.close() /
(XXX)OutputStream.close()
Socket.close()
2)、客户端(Socket)
Socket(InetAddress address, int port)
Socket(String host, int port)
public OutputStream getOutputStream()
public InputStream getInputStream()
a、创建一个套接字
Socket(host, port)
b、从套接字上获得输入流和/或输出流
Socket.getInputStream()/Socket.getOuputStream()
c、使用数据包装流(可选)
DataInputStream(InputStream) /
DataOutputStream(OutputStream)
(for example, optional)
d、从流中接收/发送信息
XXX)InputStream.read() /
(XXX)OutputStream.write()
e、释放资源
(XXX)InputStream.close() /
(XXX)OutputStream.close()
Socket.close()
多线程操作:
4、UDP: DataGramSocket DatagramPacket (数据传输)
以数据为中心 面向非连接,不安全,效率高
类:DatagramSocket Datagrampacket
1)、客户端
a、创建客户端--》DatagramSocket 指定端口
b、准备数据--》字节数组(不能太大)
c、数据打包 --》Datagrampacket + 服务器的地址和端口
d、发送
e、释放资源
2)、服务端
a、创建服务器端 --》DatagramSocket 指定端口
b、准备接受数据 -->字节数组--》封装DatagramPacket
c、包 接受数据
d、分析数据
e、释放资源