一、java socket短连接的基本概念
1.socket套接字
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。
即TCP/IP实现的套接字,是应用层调用下层服务的接口。
备注:若接口被占用,打开cmd窗口,输入netstat -ano,查找端口号对应的PID;打开任务管理器,详细信息,结束对应PID的进程,即可。
2.短连接:连接->传输数据->关闭连接
短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
优点:不需要长期占用通道,对于业务频率不高的场合,能节省通道的使用。
缺点:需要在每次发送业务时,都要建立一次连接,连接建立的过程开销大。
最常见的短连接例子就是HTTP协议。
长连接 :连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接
长连接指建立socket连接后不管是否使用都保持连接,但安全性较差。
JAVA如何实现短连接:(我理解为socket相当于一个快递点或可以说是中转站)
①发送的方法:直接获得socket的OutputStream流,然后用write方法,flush方法即可。
②接收的方法:常用的两个类是InputStream和BufferedInputStream。
二、实现文件发送与存储的步骤
1.要求: 传输文件:即将客户端的文件传输到服务器
2.步骤:
客户端
①创建客户端Socket对象,指定服务器地址和端口;
②创建socket输出流(方便往socket写数据):
os = socket.getOutputStream();
③读取文件读到byte[]数组中:byte[] bs = new byte[1024];
is = new FileInputStream(new File("D:\\新建文本文档1.txt"));
再将数组中的数据通过os写入socket:
os.write(bs,0,num);
服务器端
①创建服务器端ServerSocket对象,指定端口:
serverSocket = new ServerSocket(9999);
②调用accept()监听(即等待客户端的连接)来接收一个socket:
socket = serverSocket.accept();