网络编程的目的:
传播交流信息,数据交换,通信
网络编程的三要素:
IP地址、端口号、协议
网络的通信两个要素;
- IP和端口号:IP
- 网络通信协议:UDP,TCP
IP
IP地址:网络号段+主机号段
- 唯一定位一台网络上计算机
- 本机:127.0.0.1或localhost
- 两个DOS命令:
- ping: 后跟IP地址,测试本机与指定的IP地址间的通信是否有问题
- ipconfig:查看本机IP地址
- 域名:与IP地址一一对应
InetAddress类
InetAddress类的对象用于IP地址和域名
常用方法
-
getByName(String s):获得一个InetAddress 类的对象,该对象中含有主机的IP地址
-
getLocalHost():获得一个InetAddress对象,该对象含有本地机的域名和IP地址
-
String getHostName():返回本地主机的主机名
-
import java.net.InetAddress; import java.net.UnknownHostException; public class Demo { private void test() { try { InetAddress locAdd = InetAddress.getLocalHost(); //得到本地InetAddress对象 InetAddress remAdd = InetAddress.getByName("www.baidu.com"); //获得远程InetAddress对象 System.out.println("本机IP地址:" + locAdd.getHostAddress()); System.out.println("百度IP地址:" + remAdd.getHostAddress()); System.out.println("本机名" + locAdd.getHostName()); } catch (UnknownHostException e) { e.printStackTrace(); } } public static void main(String[] args) { Demo demo = new Demo(); demo.test(); } }
端口
端口表示计算机上的一个程序的进程
-
不同的进程有不同的端口号,用来区分软件
-
定:0~65535
-
TCP协议、UDP协议:单个协议下,端口号不能冲突
-
端口分类
-
公有端口:0~1023(系统使用或保留端口)
-
程序注册端口:1024~49151(分配用户或者程序)
- Tomcat:8080 (默认)
- MySQL:3306
- Oracle:1521
-
动态、私有端口:49152~65535
#DOS命令 netstat -ano #查看所有的端口 netstat -ano|findstr "***" #查看指定的端口 tasklist|findstr "***" #查看指定端口的进程
-
通信协议
协议:约定。
大事化小:分层。
TCP/IP协议族:实际是一族协议
重要:
- TCP:用户传输协议
- UDP:用户数据报协议
出名的协议:(TCP/IP)
- TCP:用户传输协议
- IP:网络互连协议
TCP/IP参考模型:
TCP UDP对比
- TCP
- 连接稳定
- 三次握手,四次挥手(连接三次,断开四次),可靠协议
- 客户端与服务端
- 传输完成,释放连接,效率低
- UDP:
- 不连接,不稳定,不可靠协议
- 客户端与服务端:没有明确的界限