一、网络编程概述
网络通讯三要素:IP地址,端口号,传输协议。
(1)找到对方,通过IP;
(2)数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,就叫做端口(逻辑的,不是物理的)。
(3)定义通信规则,这个通讯规则称为协议。-------就如同语言的作用一样。
例如:两个人的交流,一个外国人,一个中国人,IP就是他们的国家,端口就是他们的门牌号,规则就是他们的交流语言。
国际组织定义了一个通用的协议TCP/IP,这个协议可以用于局域网和广域网。公有的协议还有UDP。
IP地址分为四段,即4个字节。127.0.0.1是本地回环地址,用于测试网卡。
0-1024一般是系统或保留端口。常见的端口有:Web:80,TomCat:8080,数据库:3306
二、网络模型
网络模型:OSI模型和TCP/IP模型。
三、网络编程———IP地址
网络中设备的标识。java中用于描述IP对象的类——InetAddress(java.net包中)。
由于IP地址不好记忆,于是产生了主机名。比如:www.baidu.com;本地回环地址:127.0.0.1,->对应主机名:localhost。
四、网络编程——UDP和TCP
关于TCP的三次握手:
五、Socket编程
Socket就像码头一样,是为网络服务提供的一种机制。通信的双方都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket之间通过IO传输。
UDP传输和TCP传输都是通过Socket来完成,但是二者又不同。
(一)UDP传输
(1)UDP发送端
UDP的socket服务如何建立?
API中有两个类:DatagramSocket、DatagramPacket
DatagramSocket:此类表示用来发送和接收数据报包的套接字(插座)。
DatagramPacket:此类表示数据报包,数据报包用来实现无连接包投递服务。
(2)UDP接收端
扩展一:键盘录入方式发送数据
两个特殊的地址:xxx.xxx.xxx.0 网段地址 xxx.xxx.xxx.255 广播地址
扩展二:聊天小程序
明确需求:聊天程序,有收数据的部分和发数据的部分。这两部分需要同时执行,那就需要用到多线程技术,一个线程控制收,一个线程控制发。因为收和发动作时不一致的,所以要定义两个run方法,而且这两个run方法要封装到不同的类中。
(二)TCP传输
客户端————————————服务端
Socket———————————ServerSocket
Socket:此类实现了客户端套接字。套接字是两台机器间通信的端点。
(1)TCP客户端
通过查阅socket对象,发现在该对象建立时,就可以去连接指定的主机。因为TCP是面向连接的,所以,在建立socket服务时,就要有服务端存在并连接成功,形成通路后,在该通道进行数据的传输。
Socket对象一建立,输入流和输出流就已经存在。
(2)TCP服务端
扩展一:演示tcp传输的客户端和服务端的互访。
需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息。
扩展二:建立一个文本转换服务器。客户端给服务端发送文本,服务端会将文本转成大写再返回给客户端,而且客户端可以不断的进行文本转换,当客户端输入over时,转换结束。
客户端:
服务端:
扩展三:TCP复制文件
客户端:
服务端:
扩展四:客户端并发上传图片
我们以上的服务端都具有局限性:当A客户端连接上以后,被服务端获取到 ,服务端执行具体流程,这时B客户端连接只有等待。因为服务端还没有处理完A客户端的请求,还没有循环回来执行下一次accept方法,所以暂时获取不到B客户端对象,为了可以让多个客户端同时并发访问服务端,服务端最好就是将每个客户端封装到一个单独的线程中。这样就可以同时处理多个客户端请求。
如何定义线程呢?
只要明确了每一个客户端要在服务端执行的代码即可,将该代码存入run方法中。
——————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————
扩展五:客户端并发登录
需求:客户端通过键盘录入用户名,服务端对这个用户名进行校验。
如果该用户存在,在服务端显示xxx,已登录。并在客户端显示xxx,欢迎光临。
如果该用户不存在,在服务端显示xxx尝试登录。并在客户端显示xxx该用户不存在。最多登录3次。
扩展六:自定义服务器,通过浏览器访问
扩展七:自定义浏览器。首先得知道浏览器向服务器发了哪些信息?
(四)域名解析
浏览器:网址去访问某一台主机时,做了哪些事情?
想要将主机名翻译成ip地址,需要域名解析。-----------------DNS服务器
浏览器去公网上找域名解析服务器,公网DNS上存在有主机名和ip地址的对应表。
127.0.0.1和localhost的映射关系就在本机上,c:\windows\system32\drivers\etc\hosts,由此引出,主机在访问dns时,先访问本机上的映射关系,然后再去找公网上的dns