------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
/*
1.IP地址类 InetAddress
所在包:java.net.InetAddress;
异常: java.net.UnknowHostException;
此类表示IP地址,该类的对象已经存在,无构造方法,只能通过静态方法获取。
类无构造方法的情况:
A:该类的对象已经存在
B:单例设计模式,由于内存中只允许存在一个对象,所以不允许创造对象。如:Runtime
C:类的方法全部是静态的,无序创造对象。如:Math,Arrays,Collentions
该类获取对象的方法是:
根据主机名或IP地址的字符串表示得到IP地址的对象,一般使用ip地址
public static InetAddress getByName(String host);
常用的方法有:
public String getHostName() 获取主机名
public String getHostAddress() 获取主机IP地址
Socket对象:是网络上具有唯一标识的IP地址和端口号组合在一起构成的唯一能够识别的标识符套接字。
2.UDP协议
udp协议不建立连接,数据传输需要打包,目标主机信息和端口号都包装在数据包中
效率高但是不安全,不保证数据可以被接收到。
发送数据:
A:创建发送端Socket对象:DatagramSocket套接字对象
DatagramSocket ds = new DatagramSocket();
B:通过传递数据参数创建数据报包对象:DatagramPacket存放数据报
DatagramPacket(byte[] buf,int length,InetAddress address,int prot);
存放的内容有:数据、其长度、远程主机IP地址对象、端口号
C:调用DatagramSocket对象的方法发送数据
public void send(DatagramPacket p);
D:释放资源
ds.close();
接收数据:
A:创建接收端Socket对象,指明端口号
DatagramSocket(int port);
B:创建数据报包接收数据
DatagramPacket(byte[] buf,int length);
C:调用Socket对象的方法接收数据存入数据报包中
public void receive(DatagramPacket p);
D:通过数据报包的方法解析数据,DatagramPacket的常用方法有:
public InetAddress getAddress();获取发送端的IP对象
public byte[] getData();获取数据缓冲区
public int getLength();获取数据的实际长度
3.TCP协议
tcp协议数据的传输需要先建立连接,数据在连接通道内传输,数据安全但是效率比较低
由于要先建立连接后才能传输数据,所以服务端必须先开启
接收数据:
A:创建服务端Socket对象,指明端口号
ServerSocket(int port);
B:监听客户端并建立连接,返回一个对应的Socket对象以便得到对应的信息
public Socket accept();
C:通过返回的Socket对象获取输入流对象,读取通道内数据
public InputStream getInputStream();
D:释放资源
ss.close(); 一般服务端不会关闭
发送数据:
A:创建发送端Socket对象,指明目标IP和端口号
Socket(String host,int port);
B:获取输出流对象,写数据到通道内
public OutputStream getOutputStream();
C:释放资源
s.close();
*/