黑马程序员_网络编程

来源:互联网 发布:迷你ktv 知乎 编辑:程序博客网 时间:2024/05/17 21:53

------- android培训、java培训、期待与您交流! ----------

进行网络数据传输过程分析:

1.找到对方IP
2.数据要发送到对方的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。为了方便称呼这个数字,叫做端口。
3.定义通信规则即协议,国际组织定义了通用协议TCP/IP。

网络通讯要素

IP地址
网络中设备的标识
本地回环地址:127.0.0.1 主机名:localhost
端口号
用于标识进程的逻辑地址,不同进程的标识
有效端口:0~65535,其中0~1024系统使用或保留端口。
传输协议
通讯的规则

常见传输协议:TCP和UDP

TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。

UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

比较:
UDP:

1.每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
        2.UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
        3.因面向无连接,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。
4.不需要建立连接,速度快。

TCP:

1.面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。
    2.TCP传输数据无大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。
      3.通过三次握手完成连接,TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。
4.必须建立连接,效率会稍低。

应用场景:

1.UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统、桌面共享等,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了。
2.TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。

基于Socket的网络编程

UDP传输方式:

通过UDP传输方式,将一段文字数据发送出去。
定义UDP发送端。
思路:
1.建立udpsocket服务。
2.提供数据,并将数据封装到数据包中。
3.通过socket服务的发送功能,将数据包发出去。
4.关闭资源。
接收UDP协议传输的数据并处理的。


定义UDP的接收端。
思路:
1.定义udpsocket服务。通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识.方便于明确哪些数据过来该应用程序可以处理。
2.定义一个数据包,因为要存储接收到的字节数据.因为数据包对象中有更多功能可以提取字节数据中的不同数据息。
3.通过socket服务的receive方法将收到的数据存入已定义好的数据包中。
4.通过数据包对象的特有功能。将这些不同的数据取出。打印在控制台上。
5.关闭资源。


结果:


TCP传输方式

TCP分客户端和服务端。

1.客户端对应的对象是Socket。
2.服务端对应的对象是ServerSocket。

socket对象在建立时,就可以去连接指定主机。因为TCP是面向连接的。所以在建立socket服务时,就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。

客户端:

创建Socket服务。并指定要连接的主机和端口。


服务端:
1.建立服务端的socket服务。ServerSocket();并监听一个端口。
2.获取连接过来的客户端对象。通过ServerSokcet的 accept方法。没有连接就会等.所以这个方法阻塞式的。
3.客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。并打印在控制台。
4.关闭服务端(可选),不关可以允许其他的客户端连进来。


实例:

客户端:



服务端:





域名解析

当我们在浏览器中输入:www.baidu.cn的时候,需将主机名翻译成ip地址,就会用到DNS服务器,假设DNS服务器中baidu的ip地址为16.16.161.14,我们通过DNS服务器就可以访问到ip地址从而进行访问,但是当我们访问
http://127.0.0.1:8080和http://localhost:8080,效果是一样的,这是因为127和localhost之间有映射关系,且就在本机上,C:\Windows\System32\drivers\etc\hosts


事实上,无论我们访问什么域名时,首先是从本地查找有没有对应的映射,如果有则直接访问,如果没有则利用DNS域名服务器查找,当然如果直接输入IP地址,则直接访问,不用域名解析。我们还可以利用本地映射这一特点进行一些广告、病毒页面的拦截。

----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima


原创粉丝点击