package com.cinsos.RunableTCP;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Arrays;
//这是一个客户端类
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket s=new Socket(InetAddress.getByName("fan").getHostAddress(),7777);
File f=new File("C:\\Users\\34399\\Desktop\\员工.xlsx");
BufferedInputStream fi=new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream bo=new BufferedOutputStream(s.getOutputStream());
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(f.getName());
bw.newLine();
bw.flush();
byte[] b=new byte[1024];
int lie;
while ((lie=fi.read(b))!=-1){
System.out.println(Arrays.toString(b));
bo.write(b,0,lie);
}
bo.flush();
s.shutdownOutput();
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(br.readLine());
}
}
package com.cinsos.RunableTCP;
import com.cinsos.TCP2.Util;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Arrays;
//这是服务器类
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(7777);
Socket s = ss.accept();
BufferedInputStream fi=new BufferedInputStream(s.getInputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
//问题代码出现在这一行,解决方法我注释了,但是为什么会这样,一直没有想明白,为什么会出现这样的问题呀,
FileOutputStream fo=new FileOutputStream(new File((Util.getYearMothDay()+br.readLine())));
// String s1 = br.readLine();
// FileOutputStream bo=new FileOutputStream(new File(Util.getYearMothDay()+s1));
//System.out.println(s1);
int len;
byte[] b=new byte[1024];
while ((len=fi.read(b))!=-1){
System.out.println(Arrays.toString(b));
fo.write(b,0,len);
}
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("文件上传成功");
bw.newLine();
bw.flush();
}
}
没有任何的报错信息,就是后面读文件的时候,二进制码不一样了,所以很奇怪。按道理来说,声明一个变量拼接跟直接用返回值拼接都是一样的呀