Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Вниз

Sockets Problem   Найти похожие ветки 

 
gala   (2003-06-25 13:19) [0]

Привет люди!!

У меня проблема: Сделала Server на Delphi, а Client на JAVA. Вроде все нормально работает, но почему то большие файлы не присылаются полностью.У меня например 9 Мб, я ево передаю через Buffer и нифига, приходит только одна страница. Не пойму в чем дело :(

Может кто уже сталкивался с етой проблемой?Причем не пойму, где проблема, в JAVA или в Delphi.

код на Delphi-Server:

procedure TForm1.Button1Click(Sender: TObject);
var
Socket : TServerSocket;
begin
Socket:=TServerSocket.Create(Form1);
Socket.ServerType := stNonBlocking;
Socket.OnClientWrite := ServerClientRead;
Socket.Port:=4000;
Socket.Active := true;
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket );
var
rec:String;
Begin
rec:=Socket.ReceiveText;
//...
end;

теперь Client на JAVA:

public static void main(String[] args) {
Socket con = new Socket("127.0.0.1", 4000);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter
(con.getOutputStream())));
BufferedReader in = new BufferedReader(new InputStreamReader
(con.getInputStream() ) );


DocumentBuilderFactory factory;
DocumentBuilder builder;
Document document = null;

factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.parse("input_mainplan.xml");


Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource( document );

StreamResult result = new StreamResult(out);
System.out.println("Fertig2");
( source, result ) Привет люди!!

У меня проблема: Сделала Server на Delphi, а Client на JAVA. Вроде все нормально работает, но почему то большие файлы не присылаются полностью.У меня например 9 Мб, я ево передаю через Buffer и нифига, приходит только одна страница. Не пойму в чем дело :(

Может кто уже сталкивался с етой проблемой?Причем не пойму, где проблема, в JAVA или в Delphi.

код на Delphi-Server:

procedure TForm1.Button1Click(Sender: TObject);
var
Socket : TServerSocket;
begin
Socket:=TServerSocket.Create(Form1);
Socket.ServerType := stNonBlocking;
Socket.OnClientWrite := ServerClientRead;
Socket.Port:=4000;
Socket.Active := true;
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket );
var
rec:String;
Begin
rec:=Socket.ReceiveText;
//...
end;

теперь Client на JAVA:

public static void main(String[] args) {
Socket con = new Socket("127.0.0.1", 4000);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter
(con.getOutputStream())));
BufferedReader in = new BufferedReader(new InputStreamReader
(con.getInputStream() ) );


DocumentBuilderFactory factory;
DocumentBuilder builder;
Document document = null;

factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.parse("input_mainplan.xml");


Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource( document );

StreamResult result = new StreamResult(out);
System.out.println("Fertig2");
transformer.transform( source, result );//hier wird Stream an Delphi -Server uebertragen

}


 
Digitman   (2003-06-25 14:38) [1]

как вот это понимать

Socket.OnClientWrite := ServerClientRead;

?

тебе самой-то понятно, что ты в этой строчке делаешь ?


 
gala   (2003-06-25 15:08) [2]

Конечно понятно,

в етой строчке говорится, что в случаи,когда Client посылает данные, надо иди в функцию ServerClientRead. Она же внизу стоит. Просто я ее так назвала, вот и не понятно некоторым. Я ее могла и по другому назвать.

Я счас переделала маленько все, сделала с Indy, но теперь другая проблема-скорость, 10 Мб черт знает сколько посылаются :(Уж и не знаю, вроде local работаю :(


 
Digitman   (2003-06-25 15:15) [3]


> в етой строчке говорится, что в случаи,когда Client посылает
> данные, надо иди в функцию ServerClientRead


хммм... ну ладно ! а зачем, по-твоему, серверу тогда нужно событие OnClientRead() ?


 
gala   (2003-06-25 15:27) [4]

Да какая разница то??Главное, что он не считывает весь фаил, а только часть.Может он блоками получает файл, я ето и хочу выяснить и как сделать, чтобы я весь файл получила.


 
Digitman   (2003-06-25 15:33) [5]


> Да какая разница то??


ах вон оно что !)
разницы-то, оказывается, и нет !!!

ну-ну)

не хочешь думать вслух - ничем помочь не могу, извини.


 
gala   (2003-06-25 15:48) [6]

Ну я выяснила, что сервер несколько раз в ету функцию прыгает. То-есть получается, что он блоками читает.Вот новый код:

procedure TForm1.Button1Click(Sender: TObject);
var param1,param2:String;
Socket : TServerSocket;
begin
rec := "";
Socket:=TServerSocket.Create(Form1);
Socket.OnClientRead := ServerClientRead2;
Socket.OnClientDisconnect := ServerDics;
Socket.Port:=4000;
Socket.Active := true;
end;

procedure TForm1.ServerClientRead2(Sender: TObject; Socket: TCustomWinSocket );
Begin
rec:= rec + Socket.ReceiveText;
end;

procedure TForm1.ServerDics(Sender: TObject; Socket: TCustomWinSocket);
begin
( rec) Ну я выяснила, что сервер несколько раз в ету функцию прыгает. То-есть получается, что он блоками читает.Вот новый код:

procedure TForm1.Button1Click(Sender: TObject);
var param1,param2:String;
Socket : TServerSocket;
begin
rec := "";
Socket:=TServerSocket.Create(Form1);
Socket.OnClientRead := ServerClientRead2;
Socket.OnClientDisconnect := ServerDics;
Socket.Port:=4000;
Socket.Active := true;
end;

procedure TForm1.ServerClientRead2(Sender: TObject; Socket: TCustomWinSocket );
Begin
rec:= rec + Socket.ReceiveText;
end;

procedure TForm1.ServerDics(Sender: TObject; Socket: TCustomWinSocket);
begin
test(rec);
end;

Теперь у меня другая проблема :(

Ета переменая recпочему то к моменту Disconnect пустая уже.

Хотя в функции она всегда увиличивается, я проверяла.Не одно..так другое :(


 
gala   (2003-06-25 15:53) [7]

Chert,nashla oshibku...nu ya i tupik :)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.017 c
8-1510
OlBan
2003-04-24 07:38
2003.09.01
про mmtools и глюки


14-1590
Romkin
2003-08-13 21:35
2003.09.01
Корреляции


3-1330
victor_ch
2003-08-05 10:44
2003.09.01
отрицательные числа отображаются как положительные


3-1282
Ru
2003-08-11 11:02
2003.09.01
Где глюк?


1-1400
Nikkkkk
2003-08-15 18:21
2003.09.01
Вопрос по формату ДАТЫ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский