chapter13 网络技术和应用开发VR彩票 VR彩票官网
VR彩票 VR彩票app 官方VR彩票 VR彩票app 官方IP地址:主机在网络中的唯一标识,是一个逻辑地址。 127.0.0.1(或用”localhost”表示) 表示本机地址(即使没有 网卡该地址仍然可以用)。
端口(port):端口是一个软件抽象的概念。如果把IP地址 看作是一部电话,端口就相当于分机。 端口号:在某台机器上为某个应用程序分配的可以与外 部进行通信的编号。端口号占两个字节(0-65535)。比如 HTTP的端口号为80,FTP服务的端口号为21等。 网络应用程序一定要和某个端口绑定监听关系。
Server在指定端口上监听客户端连接请求,并指定允许连接的客户 最大数目。
例如,一个机器有多个网络应用程序被打开:QQ聊天、网络视 频、使用IE浏览网页、迅雷下载。而该机器的网卡只有一个,这 些应用程序的数据传递给网卡后,网卡需要将数据解包分发给应 用层。为此,发送端发送的信息既包括了数据也包括端口号。接 收端收到数据包后,根据传递的数据包中的端口号,将数据包交 给与该端口号绑定的应用程序处理。
网络编程基础知识 基于流套接字(socket)的服务器/客户端通信 Socket类 ServerSocket类 基于流套接字的服务器/客户端通信实例(单向、双向、 多线程) 多用户聊天室 基于数据报套接字(datagram)的服务器/客户端通信 DatagramPacket类 DatagramSocket类 基于数据报套接字的服务器/客户端的通信实例
【例13-1】服务器端自动授时服务。只要有客户端连接,服 务器就将自己的系统时间发给客户端,客户端显示该时间。
Java中网络通信相关的类和接口在中 InetAddress类:描述了IP地址的相关信息 ServerSocket类:用于创建服务器应用对象 Socket类:用于创建网络连接
(1)创建ServerSocket对象,建立新的服务器端应用程序,并与端口绑定。 (2)使用ServerSocket 的accept方法等待客户端的连接。 accept()方法是一个阻塞线程方法,执行到accept后会等待,直到客户 端有申请连接过来,成功连接后返回一个socket对象。该Socket对象绑 定了客户程序的IP地址或端口号。 (3)使用socket的getInputStream(),getOutputStream()方法得到对方的输 入字节流或自己的输出字节流。 (4)对输入、输出字节流进行上层包装,根据需要封装为欲读写的字符、 基本类型或对象等。 (5)对包装好的流对象进行读写操作。 (6)关闭资源:包括输入输出流、socket、serverSocket。 (2)-(5)循环,双方利用建立起来的socket进行通信。
TCP(Transmission Control Protocol):有连接的可靠的传输协议。 传输数据的过程:设两台机器A和B使用TCP协议传输数据,A发给B 的数据包,B收到后会给A一个确认收到的回复。如果A一直未收到 回复,则A断定网络故障。A端发送的数据不会出现不可预知的丢失。 TCP传输协议的特点 建立连接,安全,但效率低。 TCP将要传送的内容以流的形式传输。 TCP传输数据的过程相当于打电线 网络基础知识
协议:通讯双方为了完成预先制定好的功能而达成的约定。 协议中层与层之间是单向依赖关系。例如,计算机接收数据时,就 是将从网卡传进的信号,一层层解包展开,最终传递给应用层进行 处理。互相通信的两台机器的对等层之间相当于有一条虚连接。 Java的网络编程是基于传输层的两个协议:TCP和UDP 。
socket(流套接字):一个机器与外部连接的接口。 基于socket的数据传递方式基于TCP协议,在两个网络应用 程序(服务器应用和客户机应用)之间发送和接收信息时,需 要建立一个可靠的连接。 socket可以形象地理解为本地机器与外部机器的一个确定的 连接,由一进一出两条数据传输通道组成,即包括了输入流 通道和输出流通道。 Java中与流套接字相关的类
UDP(User Datagram Protocol):无连接的不可靠的传输协议。 传输数据的过程:设两台机器A和B使用UDP协议传输数据, A发送 数据后不需要得到B机器的回复,A只管发,B只管收。B到底收到多 少数据A并不知情。 UDP的特点 无连接的,不安全,但效率高。 UDP协议将要传输的内容分隔成一个一个的数据报进行传输。 UDP传输数据相当于写信。 UDP也可以保证可靠传输,如信件双方事先约好一定回信,即由上 层的约定保证可靠性,也就是说UDP可靠传输需要程序员自己写程 序保证。
(1)创建一个socket对象,传递要连接的服务器名和端口号。连接服务器 成功,服务器端的accept方法成功执行,创建连接。 (2)使用socket的getInputStream(),getOutputStream()方法得到对方的输 入字节流或自己的输出字节流。 (3)对输入、输出字节流进行上层包装, 根据需要封装为想读取的字符、 基本类型或对象等。 (4)对包装好的流对象进行读写操作。 (5)关闭资源:输入流、输出流、socket。 (2)-(4)循环,双方利用建立起来的socket进行通信。
TCP用于可靠性要求高的场合。使用比较广泛。 UDP 用在对实时性要求比较高的场合。例如:视频传输,要求效率 高,允许少量数据丢失(数据包丢失后对视频效果影响不大)。
思考:两台机器的数据交换如何被应用程序读到? 首先,需要知道对方机器的IP地址。 其次,要知道应用程序的端口号。 IP地址决定找的机器是谁,端口号决定和该机器的哪个 应用程序通信。
扫一扫关注微信公众帐号