TCP接收数据
ServerSocket类在java.net包下。该类是一个具体的类,该类继承了Object类,该类实现了Closeable接口
该类实现服务器套接字。 服务器套接字等待通过网络进入的请求。 它根据该请求执行某些操作,然后可能将结果返回给请求者
该类的常用构造方法是ServerSocket(int port) 创建绑定到指定端口的服务器套接字
该类的常用方法是accept() 侦听对此套接字的连接并接受它
TCP接收数据的步骤,如下 1、使用ServerSocket类的带参构造方法创建服务器端的Socket对象(ServerSocket)
xxxxxxxxxx
ServerSocket(int port)
2、监听客户端连接,返回一个Socket对象
xxxxxxxxxx
Socket accept()
3、获取输入流,读数据,并把数据显示在控制台
xxxxxxxxxx
InputStream getInputStream()
4、释放资源
void close()
TCP接收数据的练习
xxxxxxxxxx
package 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。当然,也可以像上面那样都释放
}
}