PDA

View Full Version : بدست آوردن نام برنامه کلاینت هنگام اتصال به سرور



Eight 01
شنبه 01 تیر 1392, 14:15 عصر
سلام

آیا ممکنه نام برنامه کلاینت را هنگام برقراری ارتباط با سرور بدست آورد؟
تمام کلاینت ها روی کامپیوتر محلی قرار دارند.
و از TcpListenerبرای پیاده سازی سرور استفاده کردم:


TcpListener listener = new TcpListener(IPAddress.Loopback, 9025);
listener.Start();
TcpClient client = listener.AcceptTcpClient();

string ClientName;
/*
بدست آوردن نام برنامه کلاینت
.
.
.
.
.*/

MessageBox.Show(ClientName);

Eight 01
یک شنبه 02 تیر 1392, 12:04 عصر
دوستان نظری ندارید در این مورد؟

خب من دوتا راه تونستم پیدا کنم. اولی ساده است استفاده از دستور netstat (در cmd وارد میشه) همراه با پارامتر -o این دستور لیستی از تمام کانکشن های فعال tcp به همراه یک سری اطلاعات از قبیل شماره پورت مقصد ، ID پروسه مربوطه و ... را در اختیار قرار میده. برای بدست آرودن نام پروسه، شماره پورت TcpClient را در خروجی netstat جستجو می کنم و ID پروسه را بدست میارم و ....

روش دوم کمی سخته و من نتونستم به نتیجه برسم استفاده از تابع GetExtendedTcpTable (http://msdn.microsoft.com/en-us/library/aa365928%28v=VS.85%29.aspx) است ، در اینجا (http://www.pinvoke.net/default.aspx/iphlpapi/getextendedtcptable.html) و اینجا (http://www.codeproject.com/Articles/14423/Getting-the-active-TCP-UDP-connections-using-the-G) به نوعی از این تابع استفاده شده.

لطفا اگر روش بهتری سراغ دارید، به اشتراک بزارید.

ممنون.