java对网络的支持
1、java支持基于
流的通信(Stream-based communication),也支持
基于包的通信(backage-based communication)
2、
基于流的通信使用
TCP协议(传输控制协议),
基于包的通信使用
UDP协议(用户数据报协议);
3、相对于UDP协议,TCP协议能发现丢失的传输信息并且重新发送,
因此大多数java程序采用基于流的通信;
客户端/服务器数据交流
1、Java API提供用于创建套接字的类以用于程序的网络通信;
套接字(Socket)是两台主机之间的逻辑连接的端点,可以用来发送和接收数据;
2、示例代码:
<span style="color:#000000;">import java.net.*;
import java.io.*;、
class Server{
int port = 8000; //端口
try{
ServerSocket server = new ServerSocket(port); //创建服务器套接字
Socket socket = server.accept(); //创建套接字监听器
InputStream input = new InputStream(socket.getInputStream()); //创建服务器输入输出流
OutputStream output = new OutputStream(socket.getOutputStream());
//以下代码可以加入到一个while(true)块中,以实现客户端服务器之间不间断的数据交流
System.out.println(input.read()); //服务器从输入流中读取数据
output.write(aNumber); //服务器向输出流写入数据
}
catch(IOException e){ //由于输入输出流的存在,可能抛出IOException异常
System.err.println(e);
}
}
class Client{
int port = 8000; //端口
String host = "localHost"; //服务器主机名,localHost=127.0.0.1
try{
Socket socket = new Socket(host,port);
InputStream input = new InputStream(socket.getInputStream());
OutputStream output = new OutputStream(socket.getOutputStream());
System.out.println(input.read());
output.write(aNumber);
}
catch(IOException e){
System.err.println(e);
}
}</span>
※如果客户端服务器模型使用GUI构建的话,那么框架构建的代码要放在建立套接字连接的try/catch块之前,否知会引起线程阻塞,而无法显示GUI;