黑马程序员------毕老师视频笔记第23-24天------网络编程(1)

来源:互联网 发布:网络理财平台哪个好 编辑:程序博客网 时间:2024/05/18 06:36

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

一概述

java对网络编程的支持很强。网络通信的基础是数据的通信。

要通信,就要先确定目标主机,使用IP地址。找到目标主机,可以通过指定的软件进行通信,数据要发送到对方指定的应用程序上,例如可以使用QQ,也可以使用FeiQ,为了表示这些应用程序,所以给这些网络应用程序都使用数字进行了标识,为了方便称呼这些数字,就起名叫做端口。(这里的端口不是说物理端口,指的是逻辑端口)。找到了目标端口了,还要定义一个通信的规则,双方都能认识,这个规则就是协议。国际组织定义了一个通用的协议,叫TCP/IP。当然,还可以有其他的规则,用于特定的环境。

IP地址,4字节,每段最大255

127.0.0.1本地回环地址,测试网卡,ping127.0.0.1

还有局域网保留字段,像192.168.*.*等

计算机的增长,IP不够用,将一片区域通过子网掩码划分为一个局域网,公用一个公网IP

注意的端口冲突

常用默认端口,如80,web端口,3306,MYSQL数据库端口

常用协议UDP,TCP

 

二网络模型


TCP协议和UDP协议就在传输层

IP协议就在网络层

HTTP协议,FTP协议等在应用层

物理层有光纤、网线、无线等

 

发送端数据从应用层向下传输,每下一层要加上这层特有的标识封装成包(数据封包),接收端物理层接收到数据包之后,向上传输,要拆包

某一层封包的数据只有对应的层才能拆,协议一样

 

实际应用的是TCP/IP模型,四层

我们现在进行网络编程,主要是在网际层和传输层

以后进行javaWeb开发,主要在应用层

 

三IP地址

IP地址:InetAddress

网络中设备的表示

不易记忆,可用主机名

本地回环地址:127.0.0.1,主机名:localhost

java中操作IP,把它封装成了类

API中找java.net包,找到InetAddress类,就是IP地址对象,发现没有公开的构造函数,所以通过静态方法获得InetAddress对象。


import java.net.*;class IPDemo{public static void main(String[] args)throws Exception{InetAddress i = InetAddress.getLocalHost();//这里会抛出异常System.out.println(i.toString());System.out.println("address:"+i.getHostAddress());System.out.println("name:"+i.getHostName());//获取任意一台主机IPInetAddress ia = InetAddress.getByName("百度网址,csdn不让写,这里自己变一下");//可以写IP地址System.out.println("address:"+ia.getHostAddress());System.out.println("name:"+ia.getHostName());}}


 

端口号

用于表示进程的逻辑地址,不同进程的标识

有效端口:0---65535,其中0---1024为系统或保留端口

端口号就是一个数字,所以没有必要封装成类

 

传输协议

UDP:将数据及源和目的封装成数据包,不需要建立连接,每个数据报大小限制在64k内,因无连接,是不可靠协议,又因为不需要建立连接,速度快。

UDP速度快,但容易丢包,生活中,FeiQ聊天就是UDP的,数据发出去就行,求速度,网络视频会议用的也是UDP,电脑桌面共享也是。

TCP:建立连接,形成传输数据的通道,在连接中可以进行大数据量传输,通过三次握手完成连接,是可靠协议,因为必须建立连接,效率会稍低。

先要确认对方在,建立连接。

三次握手:A发一个包给B,B回一个包给A表示接到了,A再给B一个包说我也能接到。

生活中,下载用的就是TCP,不能丢包,打电话也是。

TCP和UDP是比较复杂的,所以Java中封装成了类。

 

四Socket

我们所说的网络编程就是Socket编程。Socket:插座

Socket就是为网络服务提供的一种服务

通信两端都有Socket

网络通信其实就是Socket之间的通信

数据在两个Socket间通过IO传输

 

 ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


0 0
原创粉丝点击