一.网络编程三要素:
1.IP:
二进制:四段8位的二进制表示;
十进制:四段3位的0--255的数字;
2.端口:
1).物理端口:网卡口
2).逻辑端口:由操作系统维护,Windows下0--65535
0-1024由系统内部使用,我们尽量不要使用;
我们讲的端口:逻辑端口:
3.协议:
1).UDP协议:
A.将数据源和目的封装成数据包中,
B.不需要建立连接;
C.每个数据报的大小在限制在64k;
D.因无连接,是不可靠协议;但速度快
2).TCP协议:
A.需要建立连接;
B.在连接中进行大数据量传输;
C.通过三次握手完成连接,是可靠协议;
D.必须建立连接,效率会稍低
二.UDP协议编程:
1.发送端:
1.实例化DatagramSocket();
DatagramSocket socket = new DatagramSocket();
2.准备数据:
IP: InetAddress add = InetAddress("Lenovo-PC");
端口: int port = 8888;
数据: byte[] byteArray = "你好".getBytes();
3.准备数据报:
DatagramPacket packet = new DatagramPacket(byteArray,
byteArray.length,
add,port);
4.发送:
socket.send(packet);
5.释放资源:
socket.close();
2.接收端:
//1.实例化DatagramSocket
DatagramSocket socket = new DatagramSocket(8888);
//2.准备一个空的byte[]数组
byte[] byteArray = new byte[1024];
//3.准备一个空的DatagramPacket
DatagramPacket packet = new DatagramPacket(byteArray,byteArray.length);
//4.等待信息
socket.receive(packet);
//5.获取信息
byte[] infoArray = packet.getData();
String info = new String(infoArray,0,packet.getLength());
System.out.println("获取的信息:" + info);
//6.释放资源
socket.close();
三.TCP协议编程:
1.发送端:
//1.实例化一个Socket
Socket socket = new Socket("192.168.38.91",8888);
//2.获取输出流
OutputStream out = socket.getOutputStream();
//3.输出,一次输出一个字节数组
out.write("你好".getBytes());
//4.释放资源
out.close();
socket.close();
2.接收端:
//1.实例化一个ServerSocket
ServerSocket server = new ServerSocket(8888);
//2.获取输入流
InputStream in = socket.getInputStream();
//3.一次读取一个字节数组
byte[] byteArray = new byte[1024];
int len = in.read(byteArray);
String s = new String(byteArray,0,len);
System.out.println("接收到的数据:" + s);
//4.释放资源
in.close();
sever.close();
|
|