------- android培训、java培训、期待与您交流! ------……
IP基础:
InetAddress类主要表示IP 地址,他有两个子类,也就是俗称的ipv4和ipv6.
常用的方法有:
getByName()通过主机名称获得InetAdress对象
getLocalHost() 通过本机得到InetAdress对象
getHostName() 得到IP地址
java中网络编程:
包括两种 Tcp和UDP 。 tcp 是安全的,而udp是不安全的
一:Tcp
java中使用socket完成tcp编程,服务端使用ServerSocket类 客户端使用Socket类。
serversocket类常用的方法:
1. serversocket (int 端口)创建对象并指定端口
2.accept()等待客户连接
3.getInetAddress() 返回服务器的IP
4.close() 关闭
socket类常用的方法:
1.Socket(host,int post) 创建对象并指定主机名称和端口
2.getInputStream()返回套接字的输入流
3.getOutputStream() 返回套接字的输出流
4.close() 关闭
建立连接步骤:
1。服务器分配一个端口号,服务器使用accept()方法等待客户端的信号,信号一到打开socket连接,从socket中取得OutputStream和InputStream。
2。客户端提供主机地址和端口号使用socket端口建立连接,得到OutputStream和InputStream。
Server端编码的步骤:
1、new ServerSocket打开端口
2、调ServerSocket的accept()等待客户连接,当连接成功返回交互的Socket。
3、调用Socket.getInputStream,getOutputStream获得服务器端的IO流
4、用处理流封装后与客户端交互,记住你读我写,一读一写。
5、关闭单一客户端调用Socket的close(),关闭服务器调ServerSocket的close();
简单代码:
ServerSocket ss = new ServerSocket(6666);
while(true) {
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
dis.close();
s.close();
Socket端编码步骤:
1、new Socket(Server ip,Serverport)试图连接,如成功才有对象
2、调用Socket.getInputStream,getOutputStream获得服务器端的IO流
3、用处理流封装后与客户端交互,记住你读我写,一读一写。
4、关闭,只有Socket的close()方法。
简单的创建代码:
Socket s = new Socket("127.0.0.1", 6666);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hello server!");
dos。flush()。
dos.close();
s.close();
二。 UDP
udp 需使用 datapramsocket 类 和datagrampacket 类。
DatagramSocket和DatagramPacket类:
DatagramSocket:此类表示用来发送和接收数据报包的套接字。
DatagramPacket:数据报包,是UDP下进行传输数据的单位,数据存放在字节数组中,其中包括了目标地址和端口以及传送的信息。
DatagramSocket 类常用方法:
1.DatagramSocket(int post) 创建对象指定端口
2.send(DatagramPacket p) 发送DatagramPacket数据包
3. receive(DatagramPacket p) 接收DatagramPacket数据包
DatagramPacket 类的常用方法
1.DatagramPacket(byte[] buf ,int length) 实例化对象并指定接收数据长度
2.DatagramPacket(byte【】 buf , int length,InetAddress ip,int post)实例化对象指定发送的数据,数据长度,和地址,端口
3.getDate() 返回接收的数据
4.getLength() 返回接收的或发送的长度
UDP的连接步骤:
UDP发送端:
1、创建一个DatagramSocket,不需要参数
2、创建一个DatagramPacket,指明接收方的IP地址和端口号
3、发送数据send(DatagramPacket p)
4、关闭DatagramSocket
关键代码:
long n = 10000L;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeLong(n);
byte[] buf = baos.toByteArray();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678)
);
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
UDP接收端:
1、创建一个DatagramSocket,指定接收方的IP地址和端口号
2、创建一个DatagramPacket,不需要IP地址和端口号
3、接收数据receive(DatagramPacket p)
4、关闭DatagramSocket
关键代码:
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true)
{
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readLong());