一、网络编程的基本知识
1、TCP,传输控制协议(Transmission Control Protocol),面向连接通信的协议。可靠的无错的数据传输。
2、UDP,用户数据报协议(User Datagram Protocol),无连接的通信协议。不保证可靠数据的传输,但能够向若干个目标发送数据。
3、Socket是网络驱动层提供给应用程序的接口和一种机制。
为通信协议提供的编程类位于java.net包中。
DatagramSocket类用于UDP通信。
ServerSocket类用于TCP通信的服务器端。
Socket类用于TCP通信的服务器和客户端。
二、UDP网络程序
1、DatagramSocket类
构造函数:
public DatagramSocket()
public DatagramSocket(int port)
public DatagramSocket(int port,inetAddress laddr)
第一个构造函数创建DatagramSocket对象,没有指定端口号,系统自动分配一个没有被其他网络程序所使用的端口号。
第二个构造函数创建DatagramSocket对象,我们自己指定端口号。
第三个构造函数创建DatagramSocket对象,指定了端口号,还指定了相关的IP地址。(适用于多块网卡)
close方法
send(DatagramPacket p)发送数据包
recieve(DatagramPacket p)接收数据包
2、DatagramPacket 类
构造函数:
public DatagramPacket (byte buf,int length)
public DatagramPacket (byte buf,int length,InetAddress address,int port)
第一个构造函数只指定了数据包的内存空间和大小。
第二个构造函数指定了数据包的内存空间和大小,还指定了数据包的目标地址和端口号。
在接受数据时没有办法事先知道那个地址和端口的Socket会给我们发来数据,所以应该用第一个构造函数来创建接收数据的DatagramPacket对象。在发送数据时,应该指定接受数据的Socket的地址和端口号,要用第二个构造函数来创建发送数据的DatagramPacket对象。
getInetAddress和getPort方法
getData和getLength方法
3、InetAddress类
InetAddress用于表示IP地址的一个类
getByName方法,这个静态方法根据条件返回一个相应的InetAddress实例对象。
getHostAddress方法,可以返回InetAddress对象中包装的、用“.”分割的IP地址。
三、最简单的UDP程序
发送程序:UdpSend.java
接收程序:UdpRecv.java
四、用UDP编写网络聊天程序
步骤:1、编写图形用户界面;2、编写网络消息发送功能;3、编写网络消息接收功能。
五、TCP网络程序的工作原理
1、TCP客户端程序于TCP服务器端程序的交互过程
(1)、服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。
(2)、客户端程序创建一个Socket并请求与服务器建立连接
(3)、服务器接受客户的连接请求,并创建一个新的Socket与该客户建立专线连接。
(4)、建立了连接的两个Socket在单独的线程(由服务器程序建立)。
close方法,accept方法
2、Socket类
getInputStream和getOutputStream方法
3、简单的TCp服务器程序
1、ReReverseServer.java
TCP服务器程序模型的辨析要点:
1、TCP服务器程序要想能接受多个客户端连接,需要循环调用ServerSocket.accept方法。
2、服务器程序与每个客户端连接的回话过程不能互相影响,需要独立的线程中运行。
3、一个线程服务对象与一个服务器端Socket对象相关联,共同完成与客户端的会话。