Java实现基础的client/server模型

本文介绍了Java如何实现基于流的TCP通信,讲解了客户端/服务器数据交流,包括单个服务端对应多个客户端的实现,并通过示例代码展示了如何创建套接字、处理输入输出流。此外,还提及了InetAddress类的用法以及如何从Web服务器上读取文件。
摘要由CSDN通过智能技术生成
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值