网络编程(基础知识)
网络编程三要素
A:IP地址:网络中每台计算机的唯一标识
B:端口
C:协议
举例:我想和小林说话,怎么办? A:我要找到小林 B:对他说话,要对耳朵说(找到计算机了,要找到应用程序) C:我说什么呢?"Hello"--没学过英语,听不懂。 |
一.IP地址:网络中计算机的唯一标识。
1.计算机只能识别二进制的数据,所以我们的IP地址应该是一个二进制的数据。
但是我们配置的IP地址却不是二进制的,为什么呢?
2.IP的组成:网络号段+主机号段
3.IP地址的分类:
(1)A类:1.0.0.1--127.255.255.254
第一号段为网络号段+后三段的主机号段:
一个网络号:256*256*256 = 16777216
(2)B类:128.0.0.1--191.255.255.254
前二号段为网络号段+后三段的主机号段:
一个网络号:256*256 = 65536
(3)C类:192.0.0.1--223.255.255.254
前三号段为网络号段+后三段的主机号段:
一个网络号:256
(4)D类:224.0.0.1--239.255.255.254(保留地址)
(5)E类:240.0.0.1--247.255.255.254(保留地址)
4.两个DOS命令:
ipconfig:查看本机IP地址
ping:后面跟IP地址。测试本机与指定的IP地址间的通信是否有问题。
5.特殊的IP地址:
127.0.0.1:回环地址(表示本机)
x.x.x.255:广播地址
x.x.x.0:网络地址
二.端口号:正在运行的程序的标识。
有效端口:0~65535,其中0~1024系统使用或保留端口。
三.协议:通信的规则。
(1)UDP:将数据源和目的地封装成数据包。
(2)TCP:建立连接,形成传输的通道。
【举例】UDP:发短信;TCP:打电话。 |
【例】获取主机名和IP地址。
java.net java.net.InetAddress 所有已实现的接口: 此类表示互联网协议 (IP) 地址。 |
public static InetAddress getByName(String host):在给定主机名的情况下确定主机的 IP 地址。 主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。 |
public String getHostAddress():返回 IP 地址字符串(以文本表现形式)。 |
public String getHostName():获取此 IP 地址的主机名。 |
import java.net.InetAddress;
import java.net.UnknownHostException;
/*
* 如果一个类没用构造方法:
* A:成员全部是静态的(Math,Arrays,Collection)
* B:单例设计模式(Runtime)
* C:类中有静态方法返回该类的对象(InetAddress)
*
* public static InetAddress getByName(String host)
throws UnknownHostException:在给定主机名的情况下确定主机的 IP 地址。
* */
public class InetAddressTest {
public static void main(String[] args) throws UnknownHostException {
// public static InetAddress getByName(String host)
InetAddress address = InetAddress.getByName("192.168.80.1");
// 获取两个东西:主机名,IP地址
// String getHostName():获取此 IP 地址的主机名。
String name = address.getHostName();
// public String getHostAddress():返回 IP地址字符串(以文本表现形式)。
String ip = address.getHostAddress();
System.out.println(name + "---" + ip);
}
}
运行结果:
import java.io.IOException;
import java.net.InetAddress;
public class Test1 {
public static void main(String[] args) throws IOException {
InetAddress address = InetAddress.getLocalHost();
System.out.println(address); // HASSE/192.168.52.1
String hostName = address.getHostName();
String hostAddress = address.getHostAddress();
System.out.println(hostName); // HASSE
System.out.println(hostAddress); // 192.168.52.1
}
}
Socket
(1)Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起才能构成为唯一能识别的标识符套接字。
(2)Socket原理机制:通信的两端都有Socket;网络通信其实就是Socket间通信;数据在两个Socket间通过IO传输。