PDA

View Full Version : دریافت اطلاعات از سوکت با Thread



Mohsen6558
پنج شنبه 14 بهمن 1389, 14:01 عصر
درخواست راهنمایی داشتم برای برنامه نویسی چندنخی برای دریافت اطلاعات از سوکت
من یه IP دارم که یه سری اطلاعات بهش از ارسال کننده های مختلف ارسال می شه برای دریافت این اطلاعات برنامه ی زیر رو نوشتم:




Dim listener As TcpListener

Try

listener = New TcpListener(IPAddress.Parse(IP), port)

listener.Start()

Catch err As Exception

Console.WriteLine(err.ToString())

Environment.Exit(0)

End Try



Dim byteRcvd As Integer = 0

Dim shart As Boolean = True

Do Until (shart = False)

Try

client = listener.AcceptTcpClient()

netStream = client.GetStream()

client.ReceiveTimeout = 12000

netStream.Read(byteBuffer, 0, maxbyte)

'Save Data In DataBase

netStream.Close()

client.Close()

Catch err As Exception

Console.WriteLine(err.ToString())

netStream.Close()

End Try

Loop






این کد مشکل خاصی نداره و به خوبی کار میکنه و اطلاعات دریافتی رو ذخیره می کنه
اگه توجه کنید در آخر هر دریافت سوکت بسته می شه و دفعه ی بعد دوباره باز می شه این کار باعث دوتا مشکل اساسی می شه
اول اینکه چون اطلاعات از GPRS می رسن بخاطر همین وقتی می بندیم ودوباره باز می کنیم کیلوبایت مصرف می شه و باعث افزایش هزینه می شه
دوم اینکه وقتی بسته می شه ما ارتباطمون رو با اون Client از دست می دیم و باید دوباره منتظر باشیم که اون وصل بشه

برای حل این مشکل ها فکر می کنم برنامه نویسی نخی مناسب باشه به این صورت که هر بار کلاینتی قصد وصل شدن داشته باشه برای اون Thread جدا ساخته بشه و Thread اون کلاینت شروع به دریافت اطلاعات کنه و تا آخر هم بسته نشه
این طوری هم هزینه ی لاگین دوباره نداریم هم همیشه در دسترس هست کلاینت

من تا حالا با Thread کار نکردم می خواستم برای انجام این کار من رو راهنمایی کنید و این که اینکار ممکن هست یا نه
مرسی
اول اینکه هر بار سوکت بسته می شه و دفعه ی بعد باز می شه

Mohsen6558
جمعه 15 بهمن 1389, 11:08 صبح
مرا یاری دهنده ای نیست؟!