منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "الشبكات";
الأرشيف الحالي: 2003.09.01;
تنزيل: [xml.tar.bz2];

إلى

مشكلة مآخذ البحث عن فروع مماثلة


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

مرحبا بالناس !!

لدي مشكلة: Made Server on Delphi و Client on JAVA. يبدو أن كل شيء يعمل بشكل جيد ، ولكن لسبب ما ، لا يتم إرسال الملفات الكبيرة تمامًا. على سبيل المثال ، لدي 9 ميغابايت ، أحولها من خلال Buffer و nifiga ، تأتي صفحة واحدة فقط. أنا لا أفهم ما هو الأمر :(

ربما واجه شخص ما هذه المشكلة بالفعل ، وأنا لا أفهم أين المشكلة ، في جافا أو في دلفي.

كود على دلفي خادم:

الإجراء TForm1.Button1Click (المرسل: TObject) ؛
فار
المقبس: TServerSocket ؛
بدأ
مأخذ التوصيل: = TServerSocket.Create (Form1)؛
Socket.ServerType: = stNonBlocking؛
Socket.OnClientWrite: = ServerClientRead؛
Socket.Port: = 4000؛
Socket.Active: = true؛
الغاية؛

الإجراء TForm1.ServerClientRead (المرسل: الكائن ؛ المقبس: TCustomWinSocket) ؛
فار
rec: سلسلة ؛
تبدأ
rec: = Socket.ReceiveText ؛
// ...
الغاية؛

العميل الآن على JAVA:

ثابت الفراغ الثابت الرئيسي (سلسلة [] الحجج) {
Socket con = new Socket ("127.0.0.1"، 4000) ؛
PrintWriter out = new PrintWriter (BufferedWriter جديد (OutputStreamWriter جديد
(con.getOutputStream ()))) ؛
BufferedReader in = جديد BufferedReader (جديد InputStreamReader
(con.getInputStream ())) ؛


مصنع DocumentBuilder المصنع ؛
DocumentBuilder باني.
مستند المستند = null؛

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


محول المحولات = TransformerFactory.newInstance (). NewTransformer ()؛
مصدر DOMSource = جديد DOMSource (مستند) ؛

نتيجة StreamResult = جديدة StreamResult (مهلة) ؛
System.out.println ("Fertig2") ؛
( المصدر ، النتيجة ) مرحبا بالناس !!

لدي مشكلة: Made Server on Delphi و Client on JAVA. يبدو أن كل شيء يعمل بشكل جيد ، ولكن لسبب ما ، لا يتم إرسال الملفات الكبيرة تمامًا. على سبيل المثال ، لدي 9 ميغابايت ، أحولها من خلال Buffer و nifiga ، تأتي صفحة واحدة فقط. أنا لا أفهم ما هو الأمر :(

ربما واجه شخص ما هذه المشكلة بالفعل ، وأنا لا أفهم أين المشكلة ، في جافا أو في دلفي.

كود على دلفي خادم:

الإجراء TForm1.Button1Click (المرسل: TObject) ؛
فار
المقبس: TServerSocket ؛
بدأ
مأخذ التوصيل: = TServerSocket.Create (Form1)؛
Socket.ServerType: = stNonBlocking؛
Socket.OnClientWrite: = ServerClientRead؛
Socket.Port: = 4000؛
Socket.Active: = true؛
الغاية؛

الإجراء TForm1.ServerClientRead (المرسل: الكائن ؛ المقبس: TCustomWinSocket) ؛
فار
rec: سلسلة ؛
تبدأ
rec: = Socket.ReceiveText ؛
// ...
الغاية؛

العميل الآن على JAVA:

ثابت الفراغ الثابت الرئيسي (سلسلة [] الحجج) {
Socket con = new Socket ("127.0.0.1"، 4000) ؛
PrintWriter out = new PrintWriter (BufferedWriter جديد (OutputStreamWriter جديد
(con.getOutputStream ()))) ؛
BufferedReader in = جديد BufferedReader (جديد InputStreamReader
(con.getInputStream ())) ؛


مصنع DocumentBuilder المصنع ؛
DocumentBuilder باني.
مستند المستند = null؛

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


محول المحولات = TransformerFactory.newInstance (). NewTransformer ()؛
مصدر DOMSource = جديد DOMSource (مستند) ؛

نتيجة StreamResult = جديدة StreamResult (مهلة) ؛
System.out.println ("Fertig2") ؛
transformer.transform (المصدر ، النتيجة) ؛ // hier wird Stream an Delphi-Server uebertragen

}



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

كيف نفهم هذا

Socket.OnClientWrite: = ServerClientRead؛

?

أنت نفسك تفهم ما تفعله في هذا الخط؟



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

بالطبع هذا واضح

يقول هذا السطر أنه في الحالات التي يرسل فيها العميل البيانات ، انتقل إلى وظيفة ServerClientRead. تقف أدناه. اتصلت بها للتو ، وهذا غير واضح للبعض. كان بإمكاني الاتصال بها باسم آخر.

لقد قمت بإعادة تصميم كل شيء قليلاً ، لقد فعلت ذلك مع Indy ، ولكن المشكلة الأخرى الآن هي السرعة ، 10 ميغابايت ، يعرف الشيطان عدد الرسائل المرسلة: (لا أعرف ، مثل المحلي أعمل :(



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


> يشير هذا السطر إلى أنه في الحالات التي يرسل فيها العميل
> البيانات ، انتقل إلى وظيفة ServerClientRead


هممم ... حسنا! لماذا تعتقد أن الخادم يحتاج بعد ذلك إلى حدث OnClientRead ()؟



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

ولكن ما هو الفرق ؟؟ الشيء الرئيسي هو أنه لا يقرأ الملف بأكمله ، ولكن فقط جزء. ربما يحصل على الملف في كتل ، أريد معرفة كيفية جعل الملف بأكمله.



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


> نعم ما الفرق ؟؟


يا هناك هو!)
تبين أن الفرق ليس !!!

حسنا ، حسنا)

إذا كنت لا تريد التفكير بصوت عالٍ - لا يمكنني مساعدتك ، آسف.



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

حسنًا ، اكتشفت أن الخادم يقفز عدة مرات في هذه الوظيفة. أي يتبين أنه يقرأ على شكل كتل ، هذا هو الرمز الجديد:

الإجراء TForm1.Button1Click (المرسل: TObject) ؛
var param1، param2: String؛
المقبس: TServerSocket ؛
بدأ
rec: = "" ؛
مأخذ التوصيل: = TServerSocket.Create (Form1)؛
Socket.OnClientRead: = ServerClientRead2؛
Socket.OnClientDisconnect: = ServerDics؛
Socket.Port: = 4000؛
Socket.Active: = true؛
الغاية؛

الإجراء TForm1.ServerClientRead2 (المرسل: الكائن ؛ المقبس: TCustomWinSocket) ؛
تبدأ
rec: = rec + Socket.ReceiveText ؛
الغاية؛

الإجراء TForm1.ServerDics (المرسل: TObject ؛ مأخذ التوصيل: TCustomWinSocket) ؛
بدأ
( تفصيل) حسنًا ، اكتشفت أن الخادم يقفز عدة مرات في هذه الوظيفة. أي يتبين أنه يقرأ على شكل كتل ، هذا هو الرمز الجديد:

الإجراء TForm1.Button1Click (المرسل: TObject) ؛
var param1، param2: String؛
المقبس: TServerSocket ؛
بدأ
rec: = "" ؛
مأخذ التوصيل: = TServerSocket.Create (Form1)؛
Socket.OnClientRead: = ServerClientRead2؛
Socket.OnClientDisconnect: = ServerDics؛
Socket.Port: = 4000؛
Socket.Active: = true؛
الغاية؛

الإجراء TForm1.ServerClientRead2 (المرسل: الكائن ؛ المقبس: TCustomWinSocket) ؛
تبدأ
rec: = rec + Socket.ReceiveText ؛
الغاية؛

الإجراء TForm1.ServerDics (المرسل: TObject ؛ مأخذ التوصيل: TCustomWinSocket) ؛
بدأ
اختبار (rec) ؛
الغاية؛

الآن لدي مشكلة أخرى :(

متغير التسجيل هذا هو السبب في أن وقت قطع الاتصال فارغ بالفعل.

على الرغم من أنها تنمو دائمًا في الوظيفة ، إلا أنني راجعت ذلك.



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

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



صفحات: 1 فرع كامل

المنتدى: "الشبكات";
الأرشيف الحالي: 2003.09.01;
تنزيل: [xml.tar.bz2];

الطابق العلوي





الذاكرة: 0.58 ميغابايت
الوقت: 0.044 ج
14-1671
Marser
2003-08-12 11:56
2003.09.01
حسنا ، صفحتين بالفعل


1-1480
m2003
2003-08-17 14:06
2003.09.01
EAccessViolation عند إنشاء مثيل لفئة


1-1467
Rel_
2003-08-11 08:22
2003.09.01
باستخدام دلفي في البناء


3-1310
Relaxxx
2003-08-08 17:24
2003.09.01
كيف أعرف أن المؤشر موجود في DBGrid ...............


14-1591
أمليت
2003-08-13 23:59
2003.09.01
أعياد الميلاد 14 أغسطس.





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch English الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский