实现网络互连的不同计算机上运行的程序间可以进行数据交换
简单来说就是IP地址,用来识别设备的,端口,用来识别应用程序的,协议,用来遵守"交通规则"的
IPv4:是给每个连接在网络上的主机分配一个32bit地址,要是用二进制表示,就是4个字节,不过一般用10进制来记,比如192.168.1.66
IPv6:采用128位地址长度,16个位一组,8组十六进制数
常用命令:
ipconfig:查看本机IP地址
ping IP地址:检查网络是否连通
特殊IP地址:127.0.0.1:回送地址,可以代表本机地址,一般用来测试使用
为了方便我们对IP地址的获取和操作,JAVA提供了一个InetAddress类 供我们使用
这个类没有构造方法,同时他里面的各种方法也不全是静态方法,但是他提供一种静态方法来获取该类的对象
主要的方法有:1.staticInetAddress getByName(String host) 确定主机名称的IP地址,主机名称可以使机器名称,也可以是IP地址
2.String getHostName() 获取此IP地址的主机名
3.String getHostAdress() 返回文本显示中的IP地址字符串
端口号:用两个字节表示的整数,它的取值是0-65535,其中,0-1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要
使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。
UDP协议:无连接通信协议,即在数据传输时,数据发送端和接收端不建立链接。适合传输不重要的信息。
TCP协议:TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间
可靠无差错的数据传输。适合重要信息的传输
java提供了一个类 DatagramSocket 用于发送和接收数据报数据包的套接字,发送对象可以用DatagramPacket创建,构造方式如下
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
构造一个数据报包,用于将长度为 length且偏移量为 ioffset的数据包发送到指定主机上的指定端口号。
java使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信,java为客户端提供了Socket类,为服务器端提供了ServerSocket类
因为TCP通讯是需要三次握手的,所以只有发送数据是不行的,还得创建接受数据
有个shutdown的方法可以替代自定义结束标记,没有结束标记的话,服务端会一直在等待客户端传数据。这么看起来不知道while((line=br.readLine())!=null)到底在限制什么。
另外TCP的服务端相比于客户端,多了一个监听的功能,用accept()方法获取,返回的也是一个Socket对象。