घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "नेटवर्क";
वर्तमान संग्रह: 2003.09.01;
डाउनलोड करें: [xml.tar.bz2];

नीचे

सॉकेट की समस्या इसी तरह की शाखाएँ खोजें


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

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

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

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

код на Delphi-Server:

प्रक्रिया TForm1.Button1 क्लिक करें (प्रेषक: TObject);
था
Socket : TServerSocket;
शुरू करना
Socket:=TServerSocket.Create(Form1);
Socket.ServerType := stNonBlocking;
Socket.OnClientWrite := ServerClientRead;
Socket.Port:=4000;
Socket.Active := true;
अंत;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket );
था
rec:String;
शुरू करो
rec:=Socket.ReceiveText;
// ...
अंत;

теперь Client на JAVA:

सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] 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:

प्रक्रिया TForm1.Button1 क्लिक करें (प्रेषक: TObject);
था
Socket : TServerSocket;
शुरू करना
Socket:=TServerSocket.Create(Form1);
Socket.ServerType := stNonBlocking;
Socket.OnClientWrite := ServerClientRead;
Socket.Port:=4000;
Socket.Active := true;
अंत;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket );
था
rec:String;
शुरू करो
rec:=Socket.ReceiveText;
// ...
अंत;

теперь Client на JAVA:

सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] 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]

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

प्रक्रिया TForm1.Button1 क्लिक करें (प्रेषक: TObject);
var param1,param2:String;
Socket : TServerSocket;
शुरू करना
rec := "";
Socket:=TServerSocket.Create(Form1);
Socket.OnClientRead := ServerClientRead2;
Socket.OnClientDisconnect := ServerDics;
Socket.Port:=4000;
Socket.Active := true;
अंत;

procedure TForm1.ServerClientRead2(Sender: TObject; Socket: TCustomWinSocket );
शुरू करो
rec:= rec + Socket.ReceiveText;
अंत;

procedure TForm1.ServerDics(Sender: TObject; Socket: TCustomWinSocket);
शुरू करना
( ग्रामीण विद्युतीकरण निगम) Ну я выяснила, что сервер несколько раз в ету функцию прыгает. То-есть получается, что он блоками читает.Вот новый код:

प्रक्रिया TForm1.Button1 क्लिक करें (प्रेषक: TObject);
var param1,param2:String;
Socket : TServerSocket;
शुरू करना
rec := "";
Socket:=TServerSocket.Create(Form1);
Socket.OnClientRead := ServerClientRead2;
Socket.OnClientDisconnect := ServerDics;
Socket.Port:=4000;
Socket.Active := true;
अंत;

procedure TForm1.ServerClientRead2(Sender: TObject; Socket: TCustomWinSocket );
शुरू करो
rec:= rec + Socket.ReceiveText;
अंत;

procedure TForm1.ServerDics(Sender: TObject; Socket: TCustomWinSocket);
शुरू करना
test(rec);
अंत;

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

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

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



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

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



पन्ने: 1 पूरी शाखा

फोरम: "नेटवर्क";
वर्तमान संग्रह: 2003.09.01;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.58 एमबी
समय: 0.036 c
3-1344
Lexa_m
2003-08-06 14:54
2003.09.01
डेटाबेस तालिका फ़ील्ड में दर्ज मानों की मान्यता


14-1636
मार्कोनी
2003-08-12 07:54
2003.09.01
मूल्य डेल्फी


14-1552
स्पेलर
2003-08-12 06:23
2003.09.01
अधिकारियों का वेतन


3-1313
Gonta
2003-08-08 17:34
2003.09.01
विरोधाभास डीबी में पासवर्ड के साथ काम करना


14-1606
उपनाम
2003-08-13 19:15
2003.09.01
शुभ संध्या :)





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский