powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Pomogite(Perepisovanie failov po seti)
5 сообщений из 5, страница 1 из 1
Pomogite(Perepisovanie failov po seti)
    #33019558
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Problema v perepise failov poseti.U klienta est programmka katoraja kopiruet faili iz papki sharing.Zatem kanektitsja k serveru peresilaet imja faila ,a zatem soderzimoe faila(Faili lubogo tipa).Server zapisivaet v papku upload faili polu4ennie ot klienta.Problema v tom 4to sej4as moj server zapisivaet tolko tekstovie faili.A vot binarnie (*.xls,*,jpg i pro4ii )s povrezdenijami.Ja ne mogu ponat po4emu?Vet ja napisal DataInputStream v konstruktore prijoma.Pozalusta pomogite esli u kogota est kakieto soobrazenija.

//server
package HTTPPereka4ka;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class HTTPSERVER {
public static void main(String[] args) {
try{
ServerSocket ss = new ServerSocket(10000);
while (true){
new HttpConnect(ss.accept()).start();
}
}
catch(ArrayIndexOutOfBoundsException e){
System.err.println("Usage: Server port");
System.exit(0);
}
catch(IOException e){
System.out.println(e);
}
}
}
class HttpConnect extends Thread{
private Socket sock;

HttpConnect(Socket s) {
sock = s;
}
synchronized public void run(){
try{
String l="";
BufferedInputStream in=new BufferedInputStream(new DataInputStream(sock.getInputStream()));

int c=in.read();//polu4aem imja 47=(ASCII)/
while(c!=47){
l+=(char)c;
c=in.read();
}

BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream ("HTTPPereka4ka/upload/"+l));

int ch=in.read();
while(ch!=-1){
out.write(ch);
ch=in.read();
//System.out.println(ch);
}

out.flush();
out.close();
in.close();
sock.close();

}
catch(Exception e){
System.out.println(e.getMessage());
}
}

//klient
package HTTPPereka4ka;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.io.BufferedInputStream;
public class HTTPCLIENT {
public static void main(String[] args) {

try{
File f=new File("HTTPPereka4ka/sharing");
String files[]=f.list();

for (byte i=0;i<files.length;i++){
Socket sock=new Socket("127.0.0.1",10000);
PrintWriter p=new PrintWriter (sock.getOutputStream());
p.print(files .toString()+"/");// / ukazivaet na konec imeni faila
BufferedInputStream in=new BufferedInputStream(new FileInputStream("HTTPPereka4ka/sharing/"+files.toString()));//bufereziruem fail

int ch=in.read();
while(ch!=-1){
p.write(ch);
ch=in.read();
System.out.println(ch);
}

p.flush();
p.close();
in.close();
sock.close();

}
}
catch(IOException e){
System.out.println("Unable to get access"+e.getMessage());
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
...
Рейтинг: 0 / 0
Pomogite(Perepisovanie failov po seti)
    #33019611
TomasoProblema v perepise failov poseti.U klienta est programmka katoraja kopiruet faili iz papki sharing.Zatem kanektitsja k serveru peresilaet imja faila ,a zatem soderzimoe faila(Faili lubogo tipa).Server zapisivaet v papku upload faili polu4ennie ot klienta.Problema v tom 4to sej4as moj server zapisivaet tolko tekstovie faili.A vot binarnie (*.xls,*,jpg i pro4ii )s povrezdenijami.Ja ne mogu ponat po4emu?Vet ja napisal DataInputStream v konstruktore prijoma.Pozalusta pomogite esli u kogota est kakieto soobrazenija.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
//server
  package  HTTPPereka4ka;
  import  java.io.BufferedInputStream;
  import  java.io.BufferedOutputStream;
  import  java.io.DataInputStream;
  import  java.io.FileOutputStream;
  import  java.io.IOException;
  import  java.net.ServerSocket;
  import  java.net.Socket;

  public   class  HTTPSERVER {
 	 public   static   void  main(String[] args) {
 		 try { 
 			ServerSocket ss =  new  ServerSocket( 10000 );  
 			 while  (true){
 				 new  HttpConnect(ss.accept()).start();
 			}
 		}
 		 catch (ArrayIndexOutOfBoundsException e){  
 			System.err.println("Usage: Server port");  
 			System.exit( 0 );  
 		}
 		 catch (IOException e){ 
 			System.out.println(e);  
 		}  
 	}
 }
  class  HttpConnect  extends  Thread{  
 	 private  Socket sock; 
 	
 	HttpConnect(Socket s) {  
 		sock = s;
 	} 
 	 synchronized   public   void  run(){ 
 		 try {
 			String l="";
 			BufferedInputStream in= new  BufferedInputStream
                            ( new  DataInputStream(sock.getInputStream()));
 			
 			 int  c=in.read();//polu4aem imja 47=(ASCII)/
 			 while (c!= 47 ){
 				l+=( char )c;
 				c=in.read();
 			}
 	
 			BufferedOutputStream out = new  BufferedOutputStream
                             ( new  FileOutputStream ("HTTPPereka4ka/upload/"+l));
 			 
 			 int  ch=in.read();
 	   		 while (ch!=- 1 ){
 	   				out.write(ch);
 	   				ch=in.read();
 	   				//System.out.println(ch);
 	   		}
 	   		
 	   		out.flush();
 	   		out.close();
 	   		in.close();
 	   		sock.close();
 	   		
 		}
 		 catch (Exception e){ 
 			System.out.println(e.getMessage());  
 		} 
 	}

//klient 
 package  HTTPPereka4ka;
 import  java.io.File;
 import  java.io.FileInputStream;
 import  java.io.IOException;
 import  java.io.PrintWriter;
 import  java.net.Socket;
 import  java.io.BufferedInputStream;
 public   class  HTTPCLIENT {
	 public   static   void  main(String[] args) {
		
		 try {
			File f= new  File("HTTPPereka4ka/sharing");
			String files[]=f.list();

			 for  ( byte  i= 0 ;i<files.length;i++){
				Socket sock= new  Socket("127.0.0.1", 10000 );
				PrintWriter p= new  PrintWriter (sock.getOutputStream());
				p.print(files[i].toString()+"/");//  / ukazivaet na konec imeni faila
				BufferedInputStream in= new  BufferedInputStream
                                    //bufereziruem fail
                                    ( new  FileInputStream("HTTPPereka4ka/sharing/"+files[i].toString()));
				 int  ch=in.read();
		   		 while (ch!=- 1 ){
		   				p.write(ch);
		   				ch=in.read();
		   				System.out.println(ch);
		   		}
		   		
		   		p.flush();
		   		p.close();
		   		in.close();
		   		sock.close();
		   		
				}
			}
			 catch (IOException e){
				System.out.println("Unable to get access"+e.getMessage());
			}
		 catch (Exception e){ 
			System.out.println(e.getMessage());  
		} 
	}
...
Рейтинг: 0 / 0
Pomogite(Perepisovanie failov po seti)
    #33019696
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем используется BufferedInputStream?

И зачем стоит проверка?
Код: plaintext
1.
2.
3.
...
while(c!= 47 ){
...
...
Рейтинг: 0 / 0
Pomogite(Perepisovanie failov po seti)
    #33019819
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Tomaso
DataInputStream - лишняя вставка, он используется, что бы читать примитивные типа java из потока, при чём этот фильтр предполагает, что поток создан при помощи DataOutputStream, чего у тебя в коде нет.
Отсюда могут идти проблемы.

--
2mayton
Buffered*Stream - читает/пишет байты сначала к себе в буфер, а затем отдаёт беря из буфера/пересылает блоком. Это хорошо сказывается на производительности, если *Stream на который он вешается "медленный".


с!=47 == с!='/' == ukazivaet na konec imeni faila :)
...
Рейтинг: 0 / 0
Pomogite(Perepisovanie failov po seti)
    #33020339
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsjo reshenie nashol.Tema zakrita.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Pomogite(Perepisovanie failov po seti)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]