一.网络编程的三要素:
1. ip:一个计算机标识,每个计算机只有一个,不可重复
2. 端口:每个程序会对应一个端口,用来通信,
有效端口:0~65535,其中0~1024系统使用或保留端口
3. 协议:TCP,UDP
协议TCP和UDP的区别:
UDP:
把数据打成一个数据包,不需要建立链接
数据包大小有限制,不能超过64K
无连接,属于不可靠协议(数据可能丢失)
无连接,效率高
TCP:
需要建立连接,形成通道
数据可通过连接通道进行传输,无大小限制
有链接,属于可靠协议
有链接,效率低
1.InetAdress:IP地址描述类(对IP地址的获取和操作)
public static InetAddress getByName(String host)( host: 可以是主机名,也可以是IP地址的字符串表现形式)
public String getHostAddress()返回 IP 地址字符串(以文本表现形式)。
public String getHostName()获取此 IP 地址的主机名。
socket通信机制:
通信两端都有Socket
网络通信其实就是Scoket通信
数据在两个Scoket间通过IO传输
3.UDP通信步骤:
发送端步骤:
/*
* UDP发送数据的步骤:
* A:创建UDP发送数据端Socket对象
* B:创建数据包,并给出数据,把数据打包
* C:通过Socket对象发送数据包
* D:释放资源
*/
接收端步骤:
/*
* UDP协议接收数据步骤:
* A:创建UDP接收数据端Socket对象
* B:创建一个接收数据的数据包
* C:接收数据,数据在数据包中
* D:解析数据包,并把数据显示在控制台
* E:释放资源
*/
4.TCP通讯步骤
/*
* TCP协议发送数据步骤:
* A:创建TCP协议发送端Socket对象
* 指定服务器IP及端口
Socket sk = new Socket("192.168.3.120" , 9527) ;
* B:获取输出流,并写数据
OutputStream outputStream = sk.getOutputStream() ;
outputStream.write("hello,TCP我来了".getBytes()) ;
* C:释放资源
sk.close() ;
*
* java.net.ConnectException: Connection refused: connect
* TCP协议是不能直接运行客户端的,必须先运行服务器。因为他是一种可靠的协议。
*/
接收端:
/*
* TCP协议接收数据步骤:
* A:创建TCP协议接收端Socket对象
ServerSocket ss = new ServerSocket(9527) ;
* B:监听客户端连接
Socket sk = ss.accept() ;
* C:获取输入流,并读取数据,显示在控制台
// 读取数据
byte[] bytes = new byte[1024] ;
int len = inputStream.read(bytes) ;
// public InetAddress getInetAddress()获取IP地址
InetAddress inetAddress = sk.getInetAddress() ;
String ip = inetAddress.getHostAddress() ;
// 输出
System.out.println(ip + "发来数据是: " + new String(bytes , 0 , len));
* D:释放资源
sk.close() ;
*/