网络编程
网络基础
网络基础
概念:两台设备之间通过网络实现数据的传输
网络通信:将数据通过网络从一台设备传送到另一台设备
java.net包下提供了一系列的类和接口,供开发者使用,完成网络通信
网络
概念:两台或者多台设备通过一定的物理设备连接起来构成了网络
根据网络覆盖的范围不同,将网络分为如下的几类:
1、局域网:覆盖范围最小,仅仅覆盖一个机房或者一个教室
2、城域网:覆盖范围稍大一些,覆盖一个城市
3、广域网:覆盖范围最大,可以覆盖全国,甚至全球,万维网是广域网的代表
IP地址
IP地址概念:主机的唯一标识,相当于人的身份证号
查看IP地址:ipconfig
IP地址的表示方法:点分十进制 xx.xx.xx.xx 每一个十进制数的范围:0-255
域名
概念:将IP地址映射成域名供其他人员或者设备通过域名访问
好处:为了方便记忆,解决记IP的困难
端口号
概念:用来标识计算机上的某个特定的网络程序
表示形式:以整数形式呈现,范围0-65535
0-1024已经被系统中其他固定程序占用了,例如:ssh--22,ftp--21,smtp--25,http--80
常见的网络程序端口号:
1、tomcat:8080
2、mysql:3306
3、oracle:1521
4、sqlserver:1433
网络协议
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 (图片来源于其他)
TCP和UDP
TCP
TCP协议: 传输控制协议
1、使用TCP协议前,须先建立TCP连接,形成传输数据通道
2、传输前,采用“三次握手”方式,是可靠的
3、TCP协议进行通信的两个应用进程: 客户端、服务端
4、在连接中可进行大数据量的传输
5、传输完毕,需释放已建立的连接,效率低
UDP
UDP: 用户数据包协议
1、将数据、源、目的封装成数据包,不需要建立连接
2、每个数据报的大小限制在64K
3、内因无需连接,是不可靠的
5、发送数据结束时无需释放资源 (因为不是面向连接的),速度快
网络编程API
InetAdress类
java.net包中有InetAddress类的定义,InetAddress类的对象用于IP地址和域名
InetAddress类主要表示IP地址,两个子类: Inet4Address、Inet6Address。
lnetAddress 类没有提供公共的构造器,而是提供了如下几个静态方法来获取lnetAddress 实例:
1、public static InetAddress getlocalHost()
2、public static InetAddress getByName(String host)
3、public static InetAddress getByAddress(byteD addr)
lnetAddress 提供了如下几个常用的方法
1、public String getHostAddress0: 返回IP 地址字符串 (以文本表现形式)
2、public String getHostName0 : 获取此 地址的主机名
3、public boolean isReachable(int timeout): 测试是否可以达到该地址
案例一
案例二
ServerSocket
ServerSocket简介
此类是实现服务器套接字。服务器套接字等待请求通过网络进入。它根据该请求执行一些操作,然后可能将结果返回给请求者。
服务器套接字的实际工作由Socketlmpl该类的实例执行。应用程序可以更改创建套接字实现的套接字工厂,以将其自身配置为创建适合于本地防火墙的套接字。
ServerSocket构造器
启动服务器
public Socket accept() throws IOException |
1、侦听要连接到此套接字并接受它。 该方法将阻塞直到建立连接。 |
2、创建一个新的Socket,如果有安全管理器,则使用s.getlnetAddress().getHostAddress()和s.getPort()作为其参数来调用安全管理器的checkAccept方法,以确保允许操作。 这可能会导致SecurityException。 | </