java吧 关注:1,295,515贴子:12,829,620
  • 4回复贴,共1

老哥们,有一个小小的问题

只看楼主收藏回复

public class FileClient {
public static void main(String[] args) throws Exception, IOException {
System.out.println("----------Client-----------");
//使用Socket创建客户端
Socket client=new Socket("localhost",8888);
//对IO流进行操作
InputStream in=new BufferedInputStream(new FileInputStream("G:\\eclipses\\网络\\[java编程思想中文(第4版)]-2007.pdf"));
OutputStream out=client.getOutputStream();
byte[] datas=new byte[1024];
int len=-1;
while((len=in.read(datas))!=-1){
out.write(datas, 0, len);
}
out.flush();
//释放资源
out.close();
in.close();
client.close();
}
}
public class FileServer {
public static void main(String[] args) throws Exception {
System.out.println("----------Server-----------");
//使用ServerSocket创建一个服务端,需要加上开放的端口
ServerSocket server=new ServerSocket(8888);
//阻塞式的响应
Socket socket= server.accept();
System.out.println("一个客户端已响应");
//用IO流进行操作
InputStream in=socket.getInputStream();
OutputStream out=new BufferedOutputStream(new FileOutputStream("G:\\eclipses\\网络\\src\\tcp.pdf"));
byte[] datas=new byte[1024];
int len=-1;
while((len=in.read(datas))!=-1) {
out.write(datas, 0, len);
}
out.flush();
out.close();
//释放资源
in.close();
socket.close();
server.close();
}
}
我看视频写了这个例子就是利用TCP协议传输文件,本机发送而且本机接收。建立了连接之后,我向服务器发送PDF文件的字节数组,根据我的理解,客户端应该是输入到了客户端和服务器之间的流里面,在此同时服务器应该是通过流来读取流里面的字节数组。那么会不会出现这样的一种情况,客户端输入流还没来得及输入,服务器已经进行下一次的读取,并且没有接收到文件,因此循环结束。
各位老哥们,会不会出现这种情况啊,为什么?我有点懵。


IP属地:江苏1楼2019-10-13 13:49回复
    有没有哪位大哥能帮助在下


    IP属地:江苏2楼2019-10-13 13:52
    回复
      2026-01-23 08:18:03
      广告
      不感兴趣
      开通SVIP免广告
      是不是流的操作有锁啊


      IP属地:江苏4楼2019-10-13 14:28
      收起回复