您的位置:首页 > 理论基础 > 计算机网络

java基础——网络编程

2015-04-13 09:23 218 查看
一、网络编程概述

网络通讯三要素: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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息