|
|
|
Pomogite(Perepisovanie failov po seti)
|
|||
|---|---|---|---|
|
#18+
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()); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2005, 15:53 |
|
||
|
Pomogite(Perepisovanie failov po seti)
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2005, 18:01 |
|
||
|
Pomogite(Perepisovanie failov po seti)
|
|||
|---|---|---|---|
|
#18+
Зачем используется BufferedInputStream? И зачем стоит проверка? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2005, 20:44 |
|
||
|
Pomogite(Perepisovanie failov po seti)
|
|||
|---|---|---|---|
|
#18+
2Tomaso DataInputStream - лишняя вставка, он используется, что бы читать примитивные типа java из потока, при чём этот фильтр предполагает, что поток создан при помощи DataOutputStream, чего у тебя в коде нет. Отсюда могут идти проблемы. -- 2mayton Buffered*Stream - читает/пишет байты сначала к себе в буфер, а затем отдаёт беря из буфера/пересылает блоком. Это хорошо сказывается на производительности, если *Stream на который он вешается "медленный". с!=47 == с!='/' == ukazivaet na konec imeni faila :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2005, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2152554]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 449ms |

| 0 / 0 |
