Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
14-1612
Мазут Береговой
2003-08-12 10:41
2003.09.01
Ну, тока шо прикололся! :-)


7-1692
Grinya
2003-06-14 13:49
2003.09.01
Как изьят иконку диска???


9-1269
Mef88
2003-02-28 17:10
2003.09.01
Навороченная прозрачность


1-1486
lex7
2003-08-18 13:27
2003.09.01
try...except...end;


14-1641
Best Guns
2003-08-12 17:50
2003.09.01
Ищу компонент для TCP соединений