TCP套接字Java(服务器)和python(客户端)
试图通过java服务器和python客户端发送文件 Client.py Server.java 它给出了以下错误:TCP套接字Java(服务器)和python(客户端),java,python,sockets,Java,Python,Sockets,试图通过java服务器和python客户端发送文件 Client.py Server.java 它给出了以下错误: java.io.EOFException at java.io.DataInputStream.readFully(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at Server.main(S
java.io.EOFException
at java.io.DataInputStream.readFully(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at Server.main(Server.java:10)
谢谢你的帮助。我有python服务器和java客户端,它工作得很好。此外,它们在python客户机服务器和java客户机服务器之间也能很好地工作这主要与您的端到端文件处理有关。您的java服务器正在尝试读取一个封闭文件“readUTF”需要一种特定的数据格式,请参见
readUTF()
仅理解由writeUTF()编写的数据,而Python中没有这种功能。只需读写字节。在发送时去掉添加的换行符,并将chr(1)
发送到信号流的末尾。关闭套接字已经做到了这一点。无论如何,您都没有试图在接收代码中正确处理这一点。您不能假设一次读取就能得到整个文件。@user207421我明白了,但是,我怎么才能做到呢?我不知道:(@abdullahalali)我该怎么解决呢?:(
import java.net.*;
import java.io.*;
public class Server {
public static void main (String []args) {
try {
ServerSocket ss = new ServerSocket(6030);
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
String k = dis.readUTF();
System.out.println("File Transferred");
FileOutputStream fos = new FileOutputStream("D:\\yo.txt");
byte[] b = k.getBytes();
fos.write(k.getBytes());
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
java.io.EOFException
at java.io.DataInputStream.readFully(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at Server.main(Server.java:10)