目录
Java网络编程
java语言中,提供了一套统一的网络编程接口。很多细节都已经底层化。所在,可以进行无痛的网络通信编程。提供的是Socket套接字技术。
Java网络编程主要是运用IO流进行数据传输的,客户端将数据写到服务器,服务器读到数据后,在将数据返回或发送给其他客户端。IO流基础参考:https://blog.csdn.net/woainiqazwsx123/article/details/82052201
常用的通信协议:
TCP:是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。
1.面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。
2.TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。
3.TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。
UDP:是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
1.每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
2.UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
3.UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方
InetAddress
类型:java.net.InetAddress,提供了用于获取和描述主机和IP的信息功能
常用方法:
static InetAddress getByName(String host) 返回一个指定字符串主机的地址对象
主机名:可以使用IP来描述,还可以使用域名来描述(通常域名会绑定一个IP地址)
String getHostName() 返回用于描述主机的字符串名称
String getHostAddress() 返回用于描述主机的IP地址
static InetAddress getLocalHost() 返回本地主机地址对象
套接字编程
编程步骤:
(1)服务器对象
(2)服务器等待被连接
(3)客户端连接服务器(成功与否)
(4)客户端与服务器进行通信
(5)断开连接
注意:通信时使用各自获取的Socket对象来通信的。
端口号:是一个16位的无符号二进制整数,范围0~65535。和IP一起是用来指定一个运行中程序的位置。所以这么说:端口号是运行中程序的唯一标识符,即程序运行时,端口号不能碰撞。通常0~1023是操作系统预定义的端口号,所以我们在自定义时,应该尽可能的使用1024~65535这个范围内的数。
Socket
在客户端使用,连接成功后会获取一个Socket对象
构造器:
Socket(String host,int port) 向指定主机名和指定端口号的服务发送请求连接,连接成功,会获取Socket对象。
常用方法:
void close() 关闭套接字
InetAddress getInetAddress() 返回套接字所连接服务器的地址。
int getPort() 返回套接字所连接远程机器的端口号
int getLocalPort() 返回本地的端口
InputStream getInputStream() 获取输入流对象,接收远程机器发送的信息
OutputStream getOutputStream() 获取输出流对象,向远程机器发送信息
ServerSocket
在服务器端使用创建服务器端套接字对象,当被连接成功后,会获取一个Socket对象。
构造器:
ServerSocket(int port) 创建一个指定端口号的ServerSocket对象
常用方法:
Socket accept() 等待客户端连接,返回客户端的Socket对象
void close() 关闭此套接字
InetAddress getInetAddress() 获取服务器端的本地地址
int getLocalPort() 获取服务器端的端口号
SocketAddress getLocalSocketAddress() 返回此套接字绑定到的端点的地址。
Java网络编程(聊天器)程序练习代码地址:https://download.csdn.net/download/woainiqazwsx123/10640175