2016-10-17 4 views
0

上の2つのファイルを送信している間、私はソケットの上に2つのファイルを送信しようとしていますが、残念ながら私はエラーを取得しています:エラーソケット

Java.io.EOFException

私は、サーバー側とクライアント側のコードを掲載しています。 2つのファイルをソケットで送信するのを手伝ってください。

ServerSocket servsock = null; /* initilization */ 
Socket sock = null; 
//Socket sock = null; 
try { 
System.out.println("waiting please connect the device"); 
servsock = new ServerSocket(5555); /* port number */ 
sock=servsock.accept(); 
System.out.println("waiting..."); 

BufferedInputStream bis = new BufferedInputStream(sock.getInputStream()); 
DataInputStream dis = new DataInputStream(bis); 

/* read the length of the file */ 
long fileLength = dis.readLong(); 
fos = new FileOutputStream(FILE_TO_RECEIVED1); 
bos = new BufferedOutputStream(fos); 

for(int j = 0; j < fileLength; j++) 
bos.write(bis.read());  
bos.close(); 
/* once the first file is read , I have closed the BOS */ 

/* code to read the second file */ 
long fileLength1 = dis.readLong(); 
fos = new FileOutputStream(FILE_TO_RECEIVED2);/* path where 
     second file should be stored */ 
bos = new BufferedOutputStream(fos); 
/* read the second file */ 
for(int j = 0; j < fileLength1; j++) 
bos.write(bis.read()); 

bos.close(); 
dis.close(); 

GUI側のコード //コードを使用すると、2つのファイルを送信しているGUI側のコードのソケット

BufferedOutputStream bos = new 
BufferedOutputStream(sock.getOutputStream()); 
DataOutputStream dos = new DataOutputStream(bos); 
System.out.println("Accepted connection : " + sock); 

File myFile1 = new File (FILE_TO_SEND1); 
long length = myFile1.length(); 
dos.writeLong(length); //sending length of the file 

fis = new FileInputStream(myFile1); 
bis = new BufferedInputStream(fis); 
int theByte = 0; 
while((theByte = bis.read()) != -1) bos.write(theByte); 
/*sending first file */ 
bis.close(); 
fis.close(); 
dos.close();       

dos = new DataOutputStream(bos); 

File myFile2 = new File (FILE_TO_SEND2); 
long length1 = myFile2.length(); 
dos.writeLong(length); 

fis = new FileInputStream(myFile1); 
bis = new BufferedInputStream(fis); 
int theByte1 = 0; 
/*sending second file */ 

while((theByte = bis.read()) != -1) bos.write(theByte); 
bis.close(); 

答えて

0

上でも第二のファイル

fis = new FileInputStream(myFile1); 
を送信中に2つのファイルを送信します

fileinputstreamを両方の時間にmyFIle1に作成した後、2回目にmyFile2に変更してください