TCP接收数据
ServerSocket类在java.net包下。该类是一个具体的类,该类继承了Object类,该类实现了Closeable接口
该类实现服务器套接字。 服务器套接字等待通过网络进入的请求。 它根据该请求执行某些操作,然后可能将结果返回给请求者
该类的常用构造方法是ServerSocket(int port) 创建绑定到指定端口的服务器套接字
该类的常用方法是accept() 侦听对此套接字的连接并接受它
TCP接收数据的步骤,如下 1、使用ServerSocket类的带参构造方法创建服务器端的Socket对象(ServerSocket)
xxxxxxxxxxServerSocket(int port)2、监听客户端连接,返回一个Socket对象
xxxxxxxxxxSocket accept()3、获取输入流,读数据,并把数据显示在控制台
xxxxxxxxxxInputStream getInputStream()4、释放资源
void close()
TCP接收数据的练习
xxxxxxxxxxpackage ch22;
import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;
//如何运行,先运行"a_10_1测试"即接收数据端,再运行"a_9_1测试"即发送数据端public class a_10_1测试 {
public static void main(String[] args) throws IOException {
//1、创建接收端的Socket对象(ServerSocket) //ServerSocket(int port) 创建绑定到指定端口的服务器套接字 ServerSocket ss = new ServerSocket(10101);
//2、获取输入流,读数据,并把数据显示在控制台。注意获取的是字节输入流,因为我们在上节课发送的是字节输出流 //accept() 侦听对此套接字的连接并接受它。简单理解就是监听客户端的连接 Socket s = ss.accept();//如果监听到客户端有连接,就对应地生成Socket对象 //通过上面那行的Socket对象来获取输入流 InputStream is = s.getInputStream(); //字节流读数据有两种方式,分别是一次读一次字节、一次读一个字节数组。这里采用的是一次读一个字节数组 byte[] bys = new byte[1024]; int len = is.read(bys);//注意这里是只读一次。对于要接受的数据不多的情况下 String data = new String(bys,0,len); System.out.println("数据是:"+data);
//3、释放资源 s.close(); ss.close(); //提示:只释放ss.close的话,其实就可以间接释放掉s.close。当然,也可以像上面那样都释放
}}