传输层的两个协议
TCP/IP(Transmission Control Protocol):
TCP提供IP环境下的数据可靠传输层,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。
UDP(User Datagram Protocol):是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
InetAddress:
getHostName()获取此IP地址的主机名。
getHostAddress()返回文本显示中的IP地址字符串。
getLocalHost()返回本地主机的地址。
套接字编程:
(1)Socket:在客户端使用,连接成功后会获取一个Socket对象,连接不上时抛出java.net.ConnectException。
Socket(String host,int port)向指定主机名和指定端口号的服务发送请求连接,连接成功,会获取Socket对象。
void close() 关闭套接字
InetAddress getInetAddress() 返回套接字所连接服务器的地址。
int getPort() 返回套接字所连接远程机器的端口号
int getLocalPort()返回本地的端口
InputStream getInputStream() 获取输入流对象,接收远程机器发送的信息
OutputStream getOutputStream()获取输出流对象,向远程机器发送信息
(2)ServerSocket:在服务器端使用创建服务器端套接字对象,使用accept()方法获取一个Socket对象。如果没有客户端连接时,该方法一直处于阻塞状态。
ServerSocket(int port);创建一个指定端口号的ServerSocket对象
Socket accept():等待客户端连接,返回客户端的Socket对象
void close():关闭此套接字
InetAddress getInetAddress(): 获取服务器端的本地地址
int getLocalPort(): 获取服务器端的端口号
SocketAddress getLocalSocketAddress():返回此套接字绑定到的端点的地址。
注意:通信时使用各自获取的Socket对象来通信的。
编程步骤:
1)服务器对象
2)服务器等待被连接
3)客户端连接服务器(成功与否)
4)客户端与服务器进行通信
5)断开连接
端口号:是一个16位的无符号二进制整数,范围0~65535。和IP一起是用来指定一个运行中程序的位置。端口号是运行中程序的唯一标识符,即程序运行时,端口号不能碰撞。通常0~1023是操作系统预定义的端口号,所以我们在自定义时,应该尽可能的使用1024~65535这个范围内的数。