IPV4 4个字节表示唯一地址,每个字节的表示范围0~255
- 查看IP地址 ipconfig
- ip 地址=网络地址+主机地址
- ipv6使用16个字节表示,一共128位
- 按照冒分16进制表示法,所看到的16进制的IPV6表示,十个十个一隔开,16进制4位表示一个符号,每一组有两个字节
- A类网络 最前面1位0固定,7位表示网络号,剩下的都表示主机号,可表示的主机数量比较多。
- A B C 依次只有24 16 8位来表示主机号
- A B C 类网络依次用1 2 3 位来表示一个网络号
- 固定+网络号+主机号
- 0
- 10
- 110
- 1110 多播组号 广播地址
- 127.0.0.1表示本机地址
- 域名解决记忆困难的问题,将IP地址映射成域名
- 端口号用于标识网络上某个特定的网络程序
- 浏览器去访问 服务是 IP+端口号
- 端口号: 0-65535 两个字节表示
- 0-1024已经被占用,ssh 22,ftp21,smtp 25,http 80
- tomcat 8080
- mysql 3306
- oracle 1521
- sqlserver :1433
- 在网络编程中,数据的组织形式就是协议。
- TCP 传输控制协议
- 1.先建立数据连接形成数据通道。
- 2.传输前,采三次握手的方式
- 3.TCP协议进行通信的两个进程,客户端,服务端
- 4.在连接中进行大数据量的传输
- 5.传输完毕,释放已经建立的链接
*Socket 就是从主机传递到数据通道的一个媒介
- IP地址:主机的唯一标识
- 端口: 主机上网络程序的唯一标识
- 协议: 在同一个网络中需要遵循的约定
UDP: 一种不可靠的传输协议
Socket:类似于插头,
发送数据的步骤:
- 建发送端的Socket对象
- 打包数据
- 调用第一步创建的对象发送数据
- 关闭发送端
package com.tyj.cn.csdn._01;
import java.io.IOException;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class UDPsend {
public static void main(String[] args) throws IOException {
//创建一个发送端Socket对象
DatagramSocket udpsocket = new DatagramSocket();
Scanner scanner = new Scanner(System.in);
while (true){
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
Date date = new Date(System.currentTimeMillis());
System.out.print(formatter.format(date)+" ");
System.out.println("请输入发送的消息:");
String input = scanner.nextLine();
if("999".equals(input)){
break;
}
byte[] bytes = input.getBytes();
DatagramPacket udoPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.12.49"), 9989);
udpsocket.send(udoPacket);
}
udpsocket.close();
}
}
接收端端程序代码实现:
package com.tyj.cn.csdn._01;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class UdpReceive {
public static void main(String[] args) throws IOException {
//新建一个接收端的Socket对象
DatagramSocket receiveSocket = new DatagramSocket(9989);
while (true) {
byte[] bytes = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(bytes, 0, bytes.length);
receiveSocket.receive(receivePacket);
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
Date date = new Date(System.currentTimeMillis());
System.out.print(formatter.format(date)+" ");
System.out.println("接受到的数据是:"+new String(receivePacket.getData(), 0, receivePacket.getLength()));
}
}
}



