今日内容:网络编程
1、网络编程三要素
协议:数据传输的规范规则,常见的协议有:http协议,UDP协议、TCP协议
UDP协议特点:无连接,传输效率高,但是偶尔会出现数据丢包现象,相对不安全。
TCP协议特点:建立连接,传输效率相对低一点,数据安全不会丢失。
ip地址:在互联网环境中,每台电脑都有一个唯一标识,就是ip地址。用于找到具体是哪一台电脑。
查看当前电脑的ip地址:ipconfig
查看两台计算机网络连接是否通畅:ping 对方ip地址
InetAddress
此类表示Internet协议(IP)地址
public static InetAddress getByName(String host):确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
public String getHostName():获取此IP地址的主机名
public String getHostAddress():返回文本显示中的IP地址字符串
端口号:相当于门牌号,用于找到计算机中的哪个程序。计算机中正在运行的程序端口号唯一,不能冲突。
端口号的范围:1-65525;一般1024以内的可能会被系统占用
2、UDP通信(了解)
Socket:也叫套接字,这是一个包含ip地址和端口号的网络单位。例如:kg是一个重量单位,表示千克;km是一个长度单位,表示千米。
发送端思路:
1、创建核心对象DatagramSocket对象
DatagramSocket()
2、创建数据包对象 DatagramPacket对象
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
3、调用DatagramSocket对象的send方法发送消息
send(DatagramPacket dp)
4、释放资源,关闭DatagramSocket。
close();
接收端思路:
1、创建核心对象DatagramSocket对象
DatagramSocket(int port)
2、创建数据包对象 DatagramPacket对象
DatagramPacket(byte[] buf, int length);
3、调用receive(DatagramPacket p)接收数据,数据会存到参数p中
4、从包中获取接收的数据以及接收的数据的长度
5、释放资源,关闭DatagramSocket。
close();
3、TCP通信
客户端实现思路:
1、创建客户端Socket对象
Socket(String host, int port) :参数1是服务器的ip地址,参数2是服务器中接收端程序的端口号
2、获取输出流,向服务器写消息 只有字节流
public void tOutputStream()
3、释放资源 close()
服务器端实现思路:
1、创建服务器端ServerSocket对象
ServerSocket(int port)
2、等待客户端的连接
Socket accept()
3、通过连入的客户端Socket对象获取输入流对象,读取客户端发送过来的消息
4、释放资源
注意:Exception in thread "main" java.net.BindException: Address already in use (Bind failed)
原因:端口号冲突
解决:关闭之前的程序或者该端口号
4、案例:文件上传
注意:发完了之后要告诉服务器以及上传结束了
socket.shutdownOutput();