Главная страница
    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.01 c
1-1410
Camedia
2003-08-15 22:22
2003.09.01
Выделение памяти массивам и про Graphic32


1-1443
gRad2003
2003-08-19 01:00
2003.09.01
Как из *.exe извлечь все String-и???


3-1317
Ренат
2003-08-08 11:11
2003.09.01
Ошибки при выполнении команды SQL


4-1721
Lony
2003-06-29 12:53
2003.09.01
IniFiles and WinAPI


1-1386
AlexLP
2003-08-16 16:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский