java网络基础知识的简述

TCP/UDP的介绍

TCP协议:面向连接的,字节流无差错地传输协议。

UDP协议:一个不可靠的无连接的数据传输协议。

说明:TCP可以想象成电话通讯,双方在通话时必须建立连接,一方没听清,会要求对方重说,而UDP相当于是发短信,发送方发送短信时并不管对方是否在信号区,也不管对方是否能接收到。

比较:UDP比TCP传输效率高,TCP更占带宽,还有数据校验也花时间,UDP有传输数据量有限制,而TCP无限制。

总结:若不要求数据传输的可靠性,而追求效率,则用UDP协议即可,比如视频会议系统。

—————————————————————————————————————————

java网络编程类

与网络编程的相关类在java.net中,重要的类如下:

InetAddress类:表示互联网地址,它封装了IP地址和域名相关的操作方法,该类无构造方法,都是

通过该类提供的静态方法来创建该类的实例对象。

URL类:描述信息资源的字符串,主要用于万维网客户程序和服务器程序上。URL用统一的格式描述各种信息资源,包括文件、服务器的地址和目录。特点:获得URL的信息(路径、端口号、主机、文件名),建立连接(用IO流和抛出异常的方式)等。

URLConnection类:一个抽象类,代表应用程序与URL之间的通讯连接。该类的实例用于读写此URL所引用的资源。用POST、GET方法或其他HTTP请求方式将数据发送到服务器。使用URLConnection对象具体操作分6步(细节参看蓝白书P310页,简述为创建、连接、查看、输出或输入)。

——————————————————————————————————————

套接字(Socket):是一个通讯端点,是应用程序用来在网络上发送或接收数据包的对象。它允许把

网络当成一个流,通过流的方式实现数据交换。

套接字的类型分两种:

1.流式套接字:确保数据以正确无重复地被送达。(用于TCP协议)

2.数据包套接字:不能确保数据能被送达,也无法确保发送顺序。(用于UDP协议,用于多播,比如多个接受者)

说明:这两种协议都是双向的,即都可以同时在两个方向(网络通讯的两端)进行读写数据。

————————————————————————————————————————

1.基于TCP协议的网络编程

1)Socket类

Socket叫做客户端套接字,用于执行客户端的TCP操作。常用构造方法如下:

Socket(String host,int port)创建一个流式套接字,并把它连接到指定主机的端口。

Socket(InetAddress address, int port)创建一个流式套接字,并把它连接到指定的IP地址的指定端口号。

2)ServerSocket类

ServerSocket叫做服务器套接字,每个服务器套接字运行在服务器上的特定端口监听在这个端口的TCP连接。当远程客户端的Socket试图与服务器指定端口建立连接时,服务器被激活时,打开两个主机间的固有连接。一旦客户端与服务器建立了连接,两者间就可以传输数据。

可以通过构造函数来获取服务器Socket实例对象,构造方法如下:

ServerSocket()创建非绑定的服务器套接字 ……

3)TCP客户端编程步骤

客户端是指网络编程中首先发起连接的程序,实现程序界面和基本逻辑实现。

//疑问:这么说服务器端和客户端是相对的?我记得发送方与接收方是相对的。

客户端编程的三个步骤:1)建立网络连接(指定连接到的服务器的IP和端口号,形成虚拟连接)

2)交换数据(服务器和客户端之间相互通信,用IO流实现)

3)关闭网络连接(关闭连接,释放资源)

4)TCP服务器端编程步骤

服务器端是指网络编程中被动等待连接的程序,用来实现程序的核心逻辑以及数据存储等核心功能

服务器端的四个编程步骤:1)监听端口(等待连接,服务器启动后,监听一个提供给客户端的端口,服务器IP就是本机IP)

2)获得连接(获取客户端信息,并提供线程来处理连接对象)

3)交换数据(接受客户端的信息并处理并返回给客户端)

4)关闭连接(关闭服务器监听端口,并释放内存资源)

上一篇:adb -a server nodaemon,设备一直显示 offline,而 adb devices 一直显示 device【已解决】


下一篇:POJ 3744 【矩阵快速幂优化 概率DP】