package com.heima.exam;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 8、使用TCP协议写一个可以上传文件的服务器和客户端。
* */
public class Test8Server {
public static void main(String[] args) throws Exception {
//创建服务器服务
ServerSocket ss = new ServerSocket(12345);
Socket socket =ss.accept();//接受客户端请求
//接收传输来的文件,写入本地
InputStream ips =socket.getInputStream();
OutputStream ops = new FileOutputStream("c.txt");
//数组缓冲区
byte[] arr = new byte[1024];
int len = 0;
while((len = ips.read(arr)) != -1 ){
ops.write(arr,0,len);
}
//给客户端发送成功的信息
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.write("成功");
//关流
ss.close();
socket.close();
ops.close();
}
}
--------------------------------------------------------------------------------------------------------------
package com.heima.exam;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
/*
* 8、使用TCP协议写一个可以上传文件的服务器和客户端。
* */
public class Test8Client {
public static void main(String[] args) throws Exception {
//创建客户端socket
Socket socket = new Socket("127.0.0.1", 12345);
//读取本地本件到socket中
OutputStream ops = socket.getOutputStream();
InputStream ips = new FileInputStream("d.txt");
//创建大小为1024字节的数组缓冲区
byte[] arr = new byte[1024];
int len = 0;
//写出去
while((len = ips.read(arr))!=-1){
ops.write(arr, 0, len);
}
//传输完毕
socket.shutdownOutput();
//用于接收服务器的消息并打印到控制台
BufferedReader br = new BufferedReader
(new InputStreamReader(socket.getInputStream()));
System.out.println(br.readLine());
//关流
socket.close();
ips.close();
}
}
这代码运行的时候服务器发回来的“成功”字符串为什么不在控制台显示呢?显示null
|
|