小白学习java第12天(下):网络编程
下面为了理解更加清楚,我就手搓代码进行实现了(简单进行解释,为了更加深刻,我就是用直接敲上去,因为代码看起来一段一段不好看):(以传输图片为例子)
java对于网络编程也有它自己的类,客户端就是Socket,服务端就是ServerSocket,两个进行连接
服务端:
1.首先你要创建在你这服务器上面的端口(前面我们结合介绍,ip是大楼,端口就是门牌号)
ServerSocket serversocket = new ServerSocket(端口号);
2.我需要时刻监视的有没有客户端进行访问accept
Socket accept = serversocket.accept();
3.我需要以流的形式进行对客户端放松的数据进行读取(IO流中的InputStream)
InputStream inputStream = accept.getInputStream();
4.然后我们需要对读取出来的数据进行输出存储(io流的经典操作)
4.1首先创建要保存的文件目的地
File file = new File("存放地址");
4.2对文件进行数据流的操作
FileOutputStream fileOutputStream = new FileOutputStream(file);
4.3开始进行经典的字符转换
定义一个内存数组1kb
byte[] buffer = new byte[1024]
定义长度
int len;
循环遍历
while((len =inputStream.read(buffer) != -1){
fileOutputStream.write(buffer,0,len)
}
5.关闭资源(为了写得更加详细我就没有用try-catch-resource这种格式)
字节输出流关闭
fileOutputStream.close;
字节输出流关闭
inputStream;
监视关闭
accept.close;
连接关闭
serverSocket.close;
-------------------------------------------------------------------------------------------------------------
客户端:
1.首先创建Socket对于服务器进行连接
Socket socket = new Socket(InetAddress.getByName("服务器地址"),端口号);
2.创建一个输出流,输出到服务器上
OutputStream outputStream = socket.getOutputStream();
3.读取你要复制到服务器上的文件
File file = new File("存放地址");
FileIntputStream fileInputStream = new FileInputStream(file);
4.然后就进行循环将读取的文件进行输出流进行输出
定义一个内存数组1kb
byte[] buffer = new byte[1024]
定义长度
int len;
循环遍历
while((len = fileInputStream.read(buffer) != -1){
outputStream.write(buffer,0,len)
}
5.关闭资源
字节输出流关闭
outputStream.close;
字节输出流关闭
fileInputStream;
连接关闭
socket.close;
终于结束了,中午没睡觉脑袋都晕呼呼的!结合下面这个图可以好好的看一下!