Java 如何使用tcp发送txt以外的文件格式

Java 如何使用tcp发送txt以外的文件格式,java,sockets,tcp,Java,Sockets,Tcp,我正在尝试使用tcp连接将pdf文件发送到客户端。不知何故,该文件已损坏。我想知道tcp是否支持非txt文件? 这是一个简单的服务器程序 import java.io.*; import java.net.*; class server{ public static void main (String args[]) throws Exception { Socket s = null; int firsttime=1; while(true) { ServerSocket

我正在尝试使用tcp连接将pdf文件发送到客户端。不知何故,该文件已损坏。我想知道tcp是否支持非txt文件? 这是一个简单的服务器程序

import java.io.*;
import java.net.*;


class server{
public static void main (String args[]) throws Exception 
{
  Socket s = null;
  int firsttime=1;
  while(true) {
  ServerSocket s_sock = new ServerSocket(3248);
  Socket socket = s_sock.accept();
  BufferedReader bf = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
  File myFile = new File ("/Users/wchen48/Desktop/123.pdf");
  byte [] mybyte = new byte[(int)myFile.length()];
  OutputStream os = socket.getOutputStream();
  System.out.println("sending......" + mybyte.length + "Byte");

  os.write(mybyte,0,mybyte.length);
  os.flush();
  socket.close();
  s_sock.close();

   }

} //end of main
这是客户:

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.Socket;

public class client{
  public static void main(String[] argv) throws Exception {
  Socket sock = new Socket("127.0.0.1", 3248);
  byte[] mybytearray = new byte[11536];
  InputStream is = sock.getInputStream();
  FileOutputStream fos = new     
  FileOutputStream("/Users/wchen48/Documents/123.pdf");
  bos = new BufferedOutputStream(fos);
  int bytesRead = is.read(mybytearray, 0, mybytearray.length);
  bos.write(mybytearray, 0, mybytearray.length);
  bos.close();
  sock.close();
}
}

提前谢谢。

您没有将文件内容读入稍后通过套接字发送的缓冲区mybyte,因此您发送00000…

您没有将文件内容读入稍后通过套接字发送的缓冲区mybyte,因此,您发送00000…

您没有将文件内容读入稍后通过套接字发送的缓冲区mybyte,因此您发送00000…

您没有将文件内容读入稍后通过套接字发送的缓冲区mybyte,因此您发送00000…

获取损坏文件的最可能原因是固定的字节数(11536)。您应该尝试读取套接字上接收的所有字节,而不是固定的字节数。

获取损坏文件的最可能原因是固定的字节数(11536)您正在尝试读取的。您应该尝试读取套接字上接收的所有字节,而不是固定的字节数。

获取损坏文件的最可能原因是固定的字节数(11536)您正在尝试读取的。您应该尝试读取套接字上接收的所有字节,而不是固定的字节数。

获取损坏文件的最可能原因是固定的字节数(11536)您正在尝试读取的。您应该尝试读取套接字上接收的所有字节,而不是固定数量的字节。

Zielu和Juned所说的,另外:

在服务器和客户端都需要循环


在服务器上,选择一个合理大小的缓冲区并循环。尝试从文件中读取[buffer length]字节。然后使用read调用返回的值检查错误,(结果正如Zielu和Juned所说,另外:

在服务器和客户端都需要循环


在服务器上,选择一个合理大小的缓冲区并循环。尝试从文件中读取[buffer length]字节。然后使用read调用返回的值检查错误,(结果正如Zielu和Juned所说,另外:

在服务器和客户端都需要循环


在服务器上,选择一个合理大小的缓冲区并循环。尝试从文件中读取[buffer length]字节。然后使用read调用返回的值检查错误,(结果正如Zielu和Juned所说,另外:

在服务器和客户端都需要循环


在服务器上,选择一个合理大小的缓冲区并循环。尝试从文件中读取[buffer length]字节。然后使用read调用返回的值来检查错误,(结果字节被传输,如果所有字节都被正确发送和接收,那么文件就永远不会被损坏。什么是
bf
dos
的字节被传输?如果所有字节都被正确发送和接收,那么文件就永远不会被损坏。什么是
bf
dos
的字节被传输红色,如果所有字节都被正确发送和接收,那么文件就永远不会被损坏。什么是
bf
dos
呢?字节被传输,如果所有字节都被正确发送和接收,那么文件就永远不会被损坏。什么是
bf
dos
呢?是的,服务器和客户端都需要一个循环t、 是的,在服务器和客户端都需要一个循环。是的,在服务器和客户端都需要一个循环。是的,在服务器和客户端都需要一个循环。谢谢。我试图一次发送整个文件,看看它是否工作。但是,添加一个循环会起作用。谢谢。谢谢。我试图一次发送整个文件,看看它是否工作。但是,添加一个循环会有效的。谢谢。谢谢。我试图立即发送整个文件以查看它是否有效。但是,添加循环将有效。谢谢。谢谢。我试图立即发送整个文件以查看它是否有效。但是,添加循环将有效。谢谢。