PDA

View Full Version : گوش کردن به پورت



resident
چهارشنبه 07 مرداد 1394, 18:50 عصر
سلام. من یه برنامه ویندوزی دارم.
زمانیکه این برنامه اجرا میشه فقط یه فرم نمایش داده میشه که داخلش یه گرید ویو است.

تو این برنامه من میخوام مدام به پورت 1370 گوش کنم. اگه اطلاعاتی دریافت شد اونو به گرید اضافه کنم.
چطور به این پورت گوش کنم؟ کجا باید کدشو بذارم؟؟ تو form_load???
ممنون میشم سریع جوابمو بدید . کارم خیلی عجله ایه

resident
چهارشنبه 07 مرداد 1394, 19:45 عصر
آیا به این طرسق به پورت گوش کردن درسته؟؟

UdpClient udpClient = new UdpClient(1370);

while (true)
{
var RemoteIpEndPoint = new IPEndPoint(_ipAdd, 0);
var receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
var returnData = Encoding.Unicode.GetString(receiveBytes);
.....
}

این کد رو نوشتم اما فقط یک بار وقتی فرم لود میشه به پورت گوش می کنه و اطلاعات رو می گیره.
چکار کنم که دائما در حال گوش کردن به پورت باشه؟

silsin
چهارشنبه 07 مرداد 1394, 21:58 عصر
سلام
برای اینکه بخواین دائما به پورت گوش بده یه راه حل اینه که زمانی که اتصال برقرار شد در یک کلاک جداگانه منتظر اتصال های دیگه هم بمونه
اولین توصیه من دیدن این تاپیکه
http://barnamenevis.org/showthread.php?497056-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%88-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B3%D9%88%DA%A9%D8%AA
در مرحله بعدی
به عنوان مثال برای ادامه گوش کردن به پورت در حالت اسنکرون

void Server_BeginAccept(IAsyncResult Result) {

Virtual_Client = Server.EndAccept(Result);
Recived = new Byte[Byte.MaxValue];
Virtual_Client.BeginReceive(Recived, 0, Recived.Length, SocketFlags.None, Server_BeginRecived, null);





}




این کد میاد یه ورودی قبول می کنه و بعدش شروع می کنه به دریافت کردن
حالا کاری که میشه کرد اینه که یه شرط بزاریم و بگیم اگر VirtualClient که در اینجا نقش کلاینت اتصال شوند رو داره برقرار بود انگاه دوباره فرایند دریافت کانکشن جدید تکرار بشه یعنی یه چیزی مثل این

Server.BeginAccept(Server_BeginAccept, null);


رو تو کد قبول کردن کانکشن ها قرار میدیم با این کار زمانی که کانکشن جدید هم برقرار بشه اون رو به عنوان یه کانکشن جدا قبول می کنه

resident
پنج شنبه 08 مرداد 1394, 07:12 صبح
silsin (http://barnamenevis.org/member.php?200020-silsin) جان ممنون از پاسخ کاملت.
من از udp استفاده کردم.
یه برنامه دارم که وقتی اطلاعات رو از پورت میخونه با notification نشون میده. من اومدم notifacation رو با فرم عوض کردم و گفتم اگه اطلاعاتی اومد به گرید ویو اضافه کن. تو این حالت این مشکل پیش میاد که فقط یکبار گوش می کنه به پورت.
حالا اگه ممکنه راه حلی که گفتین رو با udp برام بگین...
مرسی