منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مشكلتين في أرسال بأداة Socket - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : مشكلتين في أرسال بأداة Socket (/showthread.php?tid=8102)

الصفحات: 1 2 3


مشكلتين في أرسال بأداة Socket - Sajad - 24-03-13

السلام عليكم

بارك الله فيك اخي العزيز انا كتبت الكلاس الذي يحتوي على البيانات التي عملت لها Serialize في نفس المقال ومن ثم حولته الى ملف dll واستخدمته في كلا الطرفين فلا يوجد فيها اي اجراء فقط بيانات (Data members)

هذا هو الكلاس الذي استخدمته:

PHP كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
StudentInfo
{
    [
Serializable//This attribute makes the class ready for Serialization and serializes all members of a class
    //and tells the .NET Framework that the members on this class can be written to a file and read back from
    
public class SerializeStdInfo
    
{
        public 
int idage;
        public 
double avg;
        public 
string namedept;
    }



اخي الكريم فكرتك جميلة تشكر عليها بارك الله فيك لكن انا كنت بصدد توضيح كيفية ارسال فئة (Class) بكل ما فيها من بيانات بشتى الانواع او اجراءات الى الطرف الاخر ومن ثم تحويلها الى نفس نوع البيانات المرسلة لانه حسب رأي المتواضع ليس من المنطقي اسناد الرقم 1 الى متغير نصي حتى لو كان ذلك ممكنا باستخدام الCasting , وكنت ابين كيفية تحويل الفئة الى سلسلة من الBytes باستخدام خاصية الSerialize حيث يمكن ايضا خزنها في قاعدة البيانات (تخيل انك تستطيع خزن معلومات عدة حقول ومن عدة انواع في حقل واحد وعند ارجاعها تسند البيانات كل حسب نوعها).

إقتباس :في مثالك السابق لايقبل الإرسال إلى من نوع Object وانا أبي ارسل من نوع Byte

أما بخصوص ذلك يمكنك تعريف متغير او مصفوفة من نوع byte في داخل الClass ومن ثم ارسال الClass الى الطرف المقابل

وما شاءالله كما ارى انك اطلقت العنان لمخيلتك وابدعت في هذا الموضوع فبارك الله فيك وأتمنى لك التوفيق ان شاءاللهSmile



مشكلتين في أرسال بأداة Socket - Easy4ever - 24-03-13

وبارك الله فيك

sajad كتب :(تخيل انك تستطيع خزن معلومات عدة حقول ومن عدة انواع في حقل واحد وعند ارجاعها تسند البيانات كل حسب نوعها).

نعم أخي وهذا المفيد من الفكره بحيث اني أجمع كل البيانات بغض النظر عن عدد الصفوف والأعمدة لو كانت مصفوفه إيضا خزن قاعدة بيانات بأكملها في حقل واحد

ولاكن السؤال هنا إللي شيب برأسي

هل من كود يقوم بأرسال Byte وأستقبال Byte ؟
لان جميع الأمثله تقوم بأستقبال في NetworkStream وانا أريد أستقبال بـ Byte

وشكرا


مشكلتين في أرسال بأداة Socket - Sajad - 24-03-13

السلام عليكم

بصراحة لم أقرأ ولم اسمع سوى الاستقبال بالSocket او الNetStream

فلا اعرف ان كان هنالك من طريقة لذلك؟

طيب لماذا مصر على هذه الطريقة؟



مشكلتين في أرسال بأداة Socket - Easy4ever - 24-03-13

sajad كتب :السلام عليكم

بصراحة لم أقرأ ولم اسمع سوى الاستقبال بالSocket او الNetStream

فلا اعرف ان كان هنالك من طريقة لذلك؟


طيب هل يوجد طريقه بتحويل من NetStream إلى Byte ؟


sajad كتب :طيب لماذا مصر على هذه الطريقة؟

لاني أقوم بعمل مشروع يقوم بإرسال مصفوفه متغيرت الحجم بالمره الأولى تكون عمودين و 10 صفوف والمره الثانيه تكون عمودين 100 صف
لهذا أريد أن أقوم بتحويله إلى Byte واستقبله Byte حتى أقوم بإرجاعه كما كان
في حال أستلمه كـ NetworkStream ما أقدر أقرأ البيانات

لو مافي طريقه

أريد فكره أستطيع أرسال المصفوفه المتغيره بدون إي مشاكل Sad


مشكلتين في أرسال بأداة Socket - Sajad - 24-03-13

السلام عليكم

اخي العزيز هنالك دالة الRead للNetworkstream تقوم بتحويل البيانات المستلمة الى مصفوفة من الBytes جرب ذلك



مشكلتين في أرسال بأداة Socket - Easy4ever - 24-03-13

أخوي أبشرك وأخيرا قدرت أستلم Byte بدون اللجوء إلى NetStream بهذا الكود

PHP كود :
Dim i As Integer Socket1.ReceiveBufferSize 1
Dim b
(i) As Byte
Socket1
.Receive(b

شرح الكود
في البداية قمت بتخزين طول الرسالة القادمه في Socket1
ومن ثم عرفت متغير من نوع Byte بحجم i وهو الذي يحتوي على حجم الرسالة
ومن ثم بكل سهوله اسم السوكت نقطه receive وبين قوسين متغير من نوع Byte إللي عرفناه Rolleyes

انا بصراحه أرتفع ضغطي بزياده يوم عرفت انوا الحل بهذا البساطه واليسر :mad:

المهم حلينا جزء وباقي الجزء الأخر وهو أرسال تعليمه تشير للـ Object الجاي
هذي شكلها بتطلع بسيطه وترفع ضغطي ههههههههههههههههه Big Grin


مشكلتين في أرسال بأداة Socket - Sajad - 24-03-13

الحمد لله نعم هذه الطريقة صحيحية لكن باستخدام الsocket

ان شاءالله توفق وتنجح في مشروعك Smile



مشكلتين في أرسال بأداة Socket - Easy4ever - 24-03-13

sajad كتب :الحمد لله نعم هذه الطريقة صحيحية لكن باستخدام الsocket

ان شاءالله توفق وتنجح في مشروعك Smile

تسلم أخوي
وإن شاء الله تتوفق انت بدنيتك وآخرتك :o

أخوي هل لديك حل لمشكلة أرسال تعليمه مع الرساله


مشكلتين في أرسال بأداة Socket - Sajad - 24-03-13

السلام عليكم

أجمعين ان شاءاللهSmile

هل تقصد مثل تنبيه ينذر بقدوم رسالة مثلا؟ هل هذا الذي تقصده؟

عندي فكرة اولا قم بارسال التعليمة ومن ثم أخر عملية ارسال المصفوفة عن طريق الsleep للThread بمدة معينة وبعد ذلك قم بارسال المصفوفة

أما عند الاستلام فيكون مثل ال(First in - First out) يعني اولا استلم التعليمة ومن ثم الرسالة وأعتقد يكون ذلك فقط عن طريق الBinaryReader والBinaryWriter

انظر الى هذا المقال http://vb4arb.com/vb/showthread.php?27-Moving-Complex-Objects-Across-The-Network

وانظر انني قمت بارسال الحجم اولا ومن ثم ارسال البيانات واستلمت الحجم اولا ثم البيانات يمكن ان تستفيد من هذه الفكرة ان شاءالله




مشكلتين في أرسال بأداة Socket - Easy4ever - 24-03-13

آمين

لا أخي أقصد الأن مثلا في برنامجي أقوم بإرسال نوعين من الرسائل
النوع الأول أقوم بإرسال سجل عبر إدخالها بمصفوفه مثل ما ذكرنا سابقا
والنوع الثاني أقوم بأرسال أمر لأتحكم بالطرف الأخر

أبي عند أرسال الرساله أرسل معها تعليمه مثلا كلمة ( File ) أو كلمة ( Command )

وعند الأستقبال يقرأ بالأول التعليمه إذا وجدها كلمة ( File ) تلقائي يستقبلها في مصفوفه مناظره لها ويعرضها
أما كانت التعليمه كلمة ( Command ) تلقائي يروح Sub الأوامر Sub الأوامر فيه كلمه ومناظره أمر معين

ياليت وضحت الفكره
لو ما وضحت قول لي وسأشرح بشكل أكبر