服务器类Server
package com.ligong.server;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 一些声明信息
* Description:
* date: 2021/8/9 16:21
*
* @author luozhao
* @since JDK 1.8
*/
public class Server {
public static void main(String[] args) throws IOException {
//指定服务端上的服务端口号
ServerSocket serverSocket=new ServerSocket(10086);
//要从客户端读取数据,所以服务器,首先要同意接受
Socket socket = serverSocket.accept();
//获取我们的传出端口后,进行读操作,所以是getInputStream
InputStream inputStream = socket.getInputStream();
//那么我要开始进行读取,要把读取的数据放置到一个位置中,因为是往服务器上进行写,所以是输出Out
FileOutputStream fileOutputStream=new FileOutputStream("美女.jpg");//指明要写入的文件名称及位置,这里默认是应用程序下
int read=0;
while((read=inputStream.read())!=-1){
fileOutputStream.write(read);
}
//关闭读取流,因为是网络IO,服务器或者客户端都无法知道一段时间后,还有没有数据传入过来
socket.shutdownInput();
//上传完毕后,服务器要给与客户端反应,所以是写操作
OutputStream outputStream = socket.getOutputStream();
outputStream.write("上传完毕".getBytes());
socket.shutdownOutput();
//操作完毕后开始进行关闭资源
fileOutputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
**客户端类Client**
package com.ligong.client;
import java.io.*;
import java.net.Socket;
/**
* 一些声明信息
* Description:
* date: 2021/8/9 16:11
*
* @author luozhao
* @since JDK 1.8
*/
public class Client {
public static void main(String[] args) throws IOException {
//声明一个套子接口,指定要客户端的ip地址,和端口号
Socket client=new Socket("localhost",10086);
//要想进行上传,肯定是字节上传,从文件中读取图片,所以是文件字节流
FileInputStream fileInputStream=new FileInputStream("1.jpg");
//因为是客户端向服务器端写数据所以是OutputStream
OutputStream outputStream = client.getOutputStream();
int read =0;//用于表示文件中的指针,初始指针是文件开头
while((read= fileInputStream.read())!=-1){//当文件没有遍历完毕,就一直进行遍历
outputStream.write(read);//把字节写入到输出流中,一直到遍历完毕后,写入也一同完毕
}
client.shutdownOutput();
//接收服务器发来的提示信息
InputStream inputStream = client.getInputStream();
//提前获取我要接收的字节大小
int count=0;
while(count==0){
count=inputStream.available();
}
byte[] buff=new byte[count];
int length=inputStream.read(buff);
System.out.println(new String(buff,0,length));
client.shutdownInput();
outputStream.close();//先把字节写入了关闭
fileInputStream.close();
client.close();
}
}
目录结构: