PDA

View Full Version : میزان واقعی Send & Receive



daniyal_1363
یک شنبه 08 فروردین 1389, 12:05 عصر
سلام
اول سال 1389 رو به همگی تبریک میگم

همه ی پست های قبلی رو مرو کردم ولی نتونستم مطلبی درست و حسابی در مورد میزان Send و Receive تو VB6 پیدا کنم.

تو این دوره به خاطر محدودیت دانلود در اشتراک های ADSL لازمه که نرم افزارهایی ساخته بشه تا میزان Send و Receive واقعی رو مشخص کنه و در بعضی قسمت ها که نیاز به ایجاد محدودیت داره این کار رو انجام بده.

دو نمونه کد براتون ضمیه میکنم که خودم چیز زیادی ازش نفهمیدم ، در اصل یه مشکل داره اونم اینکه میزان واقعی رو نشون نمیده(بیشتر از حد معمول نشون میده)

دوستان کمک کنن تا این مشکل حل بشه

اگه کسی بتونه یه توضیح کامل در مورد چطوری کار کردن برنامه هم بده خیلی خیلی ممنون میشم

سال خوبی را برای همه ی شما آرزو میکنم:چشمک::بوس::لبخندساده:

daniyal_1363
چهارشنبه 11 فروردین 1389, 16:55 عصر
یکی نیست به داد ما برسه - آقایون مهندسین تا حالا جواب درستی در این مورد داده نشده اگه کمک کنین یکی از پر کاربردترین تایپیک ها میشه در آینده

daniyal_1363
پنج شنبه 12 فروردین 1389, 11:13 صبح
اینم نمونه کد با استفاده از API هست که من بازم نفهمیدم چرا مشکل داره -- Plzzz Heeellllllpppp:گریه::افسرده:


Public Structure RAS_STATS
Public dwAlignmentErr As Integer
Public dwBps As Integer
Public dwBufferOverrunErr As Integer
Public dwBytesRcved As Integer
Public dwBytesXmited As Integer
Public dwCompressionRatioIn As Integer
Public dwCompressionRatioOut As Integer
Public dwConnectionDuration As Integer
Public dwCrcErr As Integer
Public dwFramesRcved As Integer
Public dwFramesXmited As Integer
Public dwFramingErr As Integer
Public dwHardwareOverrunErr As Integer
Public dwSize As Integer
Public dwTimeoutErr As Integer
End Structure
'http://www.pinvoke.net/default.aspx/rasapi32.RasGetConnectionStatistics
'<DllImport("rasapi32.dll", CharSet:=CharSet:Auto)> _
'Public Shared Function RasGetConnectionStatistics( _
'ByVal hRasConn As IntPtr, _
'ByRef lpStatistics As RAS_STATS) As UInt32
'End Function

Public Declare Auto Function RasGetConnectionStatistics Lib "rasapi32.dll" _
Alias "RasGetConnectionStatistics" ( _
ByVal hrasconn As IntPtr, _
ByRef lpStatistics As RAS_STATS) As UInt32

Public Function Received()
'RAS_STATS statistics = new RAS_STATS();
'statistics.dwSize = Marshal.SizeOf(statistics);
'uint retVal = RasGetConnectionStatistics(rasConnectionHandle, ref statistics);

Dim Stat As New RAS_STATS
Stat.dwSize = 256
Dim retVal As UInt32 = RasGetConnectionStatistics(0, Stat)
Received = Stat.dwBytesRcved
End Function

HjSoft
پنج شنبه 12 فروردین 1389, 13:29 عصر
من فکر کنم اینا واقعیت رو نشون بدن ، و ویندوز مشکل داره ... البته این نظر منه ، چون خیلی از این ها رو تست کردم ، همه مغایر با ویندوز اند !!
هر کی بلده بگه ، نیاز فوری داریم !

daniyal_1363
پنج شنبه 12 فروردین 1389, 20:44 عصر
من فکر کنم اینا واقعیت رو نشون بدن ، و ویندوز مشکل داره ... البته این نظر منه ، چون خیلی از این ها رو تست کردم ، همه مغایر با ویندوز اند !!
هر کی بلده بگه ، نیاز فوری داریم !


اگه تست کنین می بینین که واقعیت رو نشون نمیده

وقتی سایتی باز نیست و هیچ نرم افزازی نباشه که از اینترنت استفاده کنه Receive تغییری نمیکنه ولی وقتی فایلی با حجمش مشخص رو دانلود کنید می بینید که تقریبا 3 برابر حجم فایل Receive نشون میده

daniyal_1363
چهارشنبه 18 فروردین 1389, 11:40 صبح
مثل اینکه نمیخواد کسی به داد ما برسه :گریه:


کسی نمیدونه عدد های Send و Receive یک کانکش رو چه جوری میشه استخراج کرد ؟

daniyal_1363
یک شنبه 22 فروردین 1389, 16:55 عصر
کس نخوارد پشت من جز ناخن انگشت من





Private Declare Function RasEnumConnections Lib "rasapi32" Alias "RasEnumConnectionsA" (ByVal lprasconn As Long, ByVal lpcb As Long, ByVal lpcConnections As Long) As Long
Private Declare Function RasGetConnectionStatistics Lib "rasapi32" (ByVal hRasConn As Long, ByVal lpStatistics As Long) As Long
Private Type RASCONN
dwSize As Long
hRasConn As Long
szEntryName(0 To 256) As Byte
szDeviceType(0 To 16) As Byte
szDeviceName(0 To 128) As Byte
pad As Byte
End Type
Private Type RAS_STATS
dwSize As Long
dwBytesXmited As Long
dwBytesRcved As Long
dwFramesXmited As Long
dwFramesRcved As Long
dwCrcErr As Long
dwTimeoutErr As Long
dwAlignmentErr As Long
dwHardwareOverrunErr As Long
dwFramingErr As Long
dwBufferOverrunErr As Long
dwCompressionRatioIn As Long
dwCompressionRatioOut As Long
dwBps As Long
dwConnectDuration As Long
End Type
Private Sub Form_Load()
Dim conn As RASCONN
Dim stat As RAS_STATS
Dim y As Long, z As Long

conn.dwSize = Len(conn)
y = conn.dwSize


If RasEnumConnections(VarPtr(conn), VarPtr(y), VarPtr(z)) = 0 Then
stat.dwSize = Len(stat)
If RasGetConnectionStatistics(conn.hRasConn, VarPtr(stat)) = 0 Then
Debug.Print stat.dwAlignmentErr
Debug.Print stat.dwBps
Debug.Print stat.dwBufferOverrunErr
Debug.Print stat.dwBytesRcved
Debug.Print stat.dwBytesXmited
Debug.Print stat.dwCompressionRatioIn
Debug.Print stat.dwCompressionRatioOut
Debug.Print stat.dwConnectDuration
Debug.Print stat.dwCrcErr
Debug.Print stat.dwFramesRcved
Debug.Print stat.dwFramesXmited
Debug.Print stat.dwFramingErr
Debug.Print stat.dwTimeoutErr
End If
End If
MsgBox stat.dwBytesRcved
End Sub


این تابع RAS بالا به صورت درست و بدون خطا - خواهش میکنم اگه چیزی به نظرتون میرسه بگین (قطره قطره جمع گردد وانگی کد اصلی شود)

ولی مقدار بازگشتیش صفره

daniyal_1363
یک شنبه 22 فروردین 1389, 17:03 عصر
اینم یه نمونه ساده تر دیگه ( ولی عددش نمیدونم چیه ؟ بلد نیستم خوب) شما بگین اگه بلدین



لیبل پایین صفحه مقدار رسیو رو میگه

daniyal_1363
پنج شنبه 26 فروردین 1389, 09:18 صبح
آقایون مدیرها کجایید به داد ما برسید ، از دوستانی که میدونن قضیه چیه کسی نیست کمک کنه ؟

تو یه سایت هندی زبان چیزای زیادی در مورد شبکه و Send و Receive زده بود ولی به خاطر زبان هندیش من چیزی نفهمیدم

اگه Ocx فروشی هم باشه من خریدارم ، کارم خیلی گیره :گریه:

Black_Strom
سه شنبه 07 اردیبهشت 1389, 04:09 صبح
ببین عزیزم من 2 سال پیش نرم افزاری طراحی کردم اونم برای محیط های ویستا و xp

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

Black_Strom
سه شنبه 07 اردیبهشت 1389, 04:13 صبح
یه نکته دیگه
اون زمان همهخ داشتن با نرم افزار radmin کار می کردن
که من تونستم به صورت مستقل اونم برای محیط ویستا تمامی امکانات یک نرم افزار حرفه ای مانند
remote monitor
remote command
send resiver accounting
accounting customer
و حتی تلاش اخرم
voip بود
را انجام بدم

اما این نکته را به همه عزیزان می گم پروتکل udp پروتکل بی عیب و نقصیه اگه خوب باهاش کار کننین فقط اگه تعداد سیستم ها کم باشه تاکید می کنم تعداد سیستم ها کم باشه حدود 15 تا سیستم

الان 3 ساله نرم افزاری که واسه کافی نت شخص دیگه ای طراحی کردم داره کار می کنه و جالبه بدونید که با پروتکل udp کار شده

daniyal_1363
پنج شنبه 09 اردیبهشت 1389, 20:46 عصر
یه نکته دیگه
اون زمان همهخ داشتن با نرم افزار radmin کار می کردن
که من تونستم به صورت مستقل اونم برای محیط ویستا تمامی امکانات یک نرم افزار حرفه ای مانند
remote monitor
remote command
send resiver accounting
accounting customer
و حتی تلاش اخرم
voip بود
را انجام بدم

اما این نکته را به همه عزیزان می گم پروتکل udp پروتکل بی عیب و نقصیه اگه خوب باهاش کار کننین فقط اگه تعداد سیستم ها کم باشه تاکید می کنم تعداد سیستم ها کم باشه حدود 15 تا سیستم

الان 3 ساله نرم افزاری که واسه کافی نت شخص دیگه ای طراحی کردم داره کار می کنه و جالبه بدونید که با پروتکل udp کار شده


از اینکه بلاخره یکی در این مورد اطلاعاتی داره واقعاً خوشحالم

میشه توضیح بیشتر بدین - این رو توی کد ها فهمیدم که نباید تمامی رقم ها رو با هم جمع زد ولی نمیدونم این اعداد چه جوری میشه تک تک بدست آورد - در اصل سند و رسیو چند قسمت با هم جمع زده میشه ولی نمیدونم چه قسمت هایی و در کجا ؟:اشتباه:

daniyal_1363
چهارشنبه 15 اردیبهشت 1389, 17:04 عصر
مثل اینکه دوستمون حرفش فقط در حد یه حرف بود. دارم به یه جاهایی میرسم :چشمک:

میگن جوینده یابندس

یه توضیح :

برای پیدا کردن میزان Send و Receive فقط باید اعداد مربوط به سخت افزاری اخراج بشه که اتصال از طریق اون صورت گرفته

حالا باید اطلاعاتمون رو در این باره زیاد کنیم، اگه کسی اطلاعات در این مورد داره خواهش دریغ نکنه

daniyal_1363
یک شنبه 15 خرداد 1390, 11:32 صبح
سلام بر دوستان عزیز

با توجه به تار عنکبوت گرفتن این تایپیک باید از دوست عزیزمون ( Mr'Jamshidy (http://barnamenevis.org/member.php?43330-Mr-Jamshidy) ) به خاطر تغییر و تلاش برای رفع مشکلات قبلی و حل مسئله تشکر کنیم.

خوب آقای (Mr'Jamshidy (http://barnamenevis.org/member.php?43330-Mr-Jamshidy)) کدهای اولیه که در اولین پست گذاشتیم رو تغییر دادن و Send و Receive یک کانکشن بخصوص رو اندازه میگیرن (البته اگه درست متوجه شده بودم - اگه خودشون زحمت بکشن و توضیح بدن خیلی بهتره)

البته من این کد ها رو سیستم تست کردم و نتیجه باز هم درست از آب در نیومد

مشکل : مشکل این کد همون مشکلی که موضوع تایپیکه یعنی "میزان واقعی Send & Receive "، این کد هم میزان دقیق Send & Receive رو نمیده

میتونین با دانلود کردن یک فایل که حجمش مشخصه امتحان کنید.

فایل جدید ضمیمه شد.

Mr'Jamshidy
دوشنبه 16 خرداد 1390, 20:13 عصر
سلام

ببینید دوستان در این زمینه من توضیحات کوتاهی میدم شما خودتون دیگه دنبالش باشید یا به عنوان دیگه من سرنخ رو میدم دیگه باقیش با خودتون

این سورس که من هم ننوشتمش و تغییر کوچکی توش ایجاد کردم کارش اینه که یکی از درایور ها رو اسنیف میکنه و تبادل پروتوکل رو به شما اعلام میکنه

وقتی برنامه رو داخل ویبی اجرا میکنید (فایل j.vbp) و اجراش میکنید فرمی به شما نمایش داده میشه که داخلش یک کمبو و دو تا باتون هست

داخل کمبو درایور هایی که به سیستم شما معرفی شده لیست میشه و اگر شما یکی از اون ها رو انتخواب کنید و OK کنید همون درایوری که انتخواب کردید اسنیف میشه و پاکت هایی که از طریق اون درایور تبادل میشه به شما گزارش میشه


خوب آقای (Mr'Jamshidy (http://barnamenevis.org/member.php?43330-Mr-Jamshidy)) کدهای اولیه که در اولین پست گذاشتیم رو تغییر دادن و Send و Receive یک کانکشن بخصوص رو اندازه میگیرن (البته اگه درست متوجه شده بودم - اگه خودشون زحمت بکشن و توضیح بدن خیلی بهتره)

دوستمون یکم بد موضوع رو به اطلاع رسوندن که دلیلش بیان اشتباه منه پس منو ببخشید

به عنوان مثال درایور هایی که تو سیستم من لیست شده ایناس


WAN Miniport (IPv6)
WAN Miniport (Network Monitor)
Realtek RTL8168B/8111B Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)-QoS Packet Scheduler-0000
Realtek RTL8168B/8111B Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)-WFP LightWeight Filter-0000
WAN Miniport (IP)
Realtek RTL8168B/8111B Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)-BitDefender Firewall NDIS6 Filter Driver-0000
Realtek RTL8168B/8111B Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
WAN Miniport (IPv6)-QoS Packet Scheduler-0000
WAN Miniport (IPv6)-BitDefender Firewall NDIS6 Filter Driver-0000
WAN Miniport (IP)-QoS Packet Scheduler-0000
WAN Miniport (IP)-BitDefender Firewall NDIS6 Filter Driver-0000
WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
WAN Miniport (Network Monitor)-BitDefender Firewall NDIS6 Filter Driver-0000
VMware Virtual Ethernet Adapter for VMnet1
VMware Virtual Ethernet Adapter for VMnet8
WAN Miniport (PPPOE)
RAS Async Adapter
Broadband Connection
Software Loopback Interface 1
WAN Miniport (SSTP)
WAN Miniport (IKEv2)
WAN Miniport (L2TP)
WAN Miniport (PPTP)
Microsoft ISATAP Adapter
Microsoft 6to4 Adapter #2
Microsoft 6to4 Adapter
Teredo Tunneling Pseudo-Interface
Microsoft ISATAP Adapter #2
Microsoft 6to4 Adapter #15
Microsoft 6to4 Adapter #4
Microsoft 6to4 Adapter #3
Microsoft 6to4 Adapter #7
Microsoft 6to4 Adapter #5
Microsoft 6to4 Adapter #6
Microsoft 6to4 Adapter #9
Microsoft 6to4 Adapter #8
Microsoft 6to4 Adapter #10
Microsoft 6to4 Adapter #14
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11
Microsoft 6to4 Adapter #11

خوب حالا ما اگر این درایور ها رو بشناسیم میتونیم بفهمیم که پاکت های مد نظر ما از طریق کدوم درایور داره تبادل میشه!!
به عنوان مثال میشه گفت اگر من هر کدوم از گزینه های زیر رو انتخواب کنم نتیجه این میشه که تعداد پاکت هایی که به اینترنت فرستاده یا دریافت شده ((فقط اینترنت)) به من گزارش میشه


Broadband Connection
WAN Miniport (PPPOE)

به یقین همه از کانکشن برای اینترنت استفاده نمیکنن مثل من پس WAN Miniport (PPPOE) در اینجا بهترین گزینس

حالا شما باید بگردید ببینید اگر این WAN Miniport (PPPOE) تو همه سیستم ها ثابت بود که خوب مشکل حله با اسنیف کردن این یک مورد دیگه نیازی به این همه بگیر ببند نیست در غیر اینصورت باید درایور اصلی رو پیدا کنید

حالا من اگر مثلا بیام و درایور لن رو انتخاب کنم چی میشه؟

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

دیگه فکر کنم کافیه

در ضمن این سورس طوری نوشته شده که نوع پروتوکل هم به شما میگه (تو فرم اصلی خاصیت Caption)

مثلا چیزایی که مربوط به اینترنتم باشه مینویسه PPP
کارت شبکه Ethernet
و ...

خوب موفق باشید

Mr'Jamshidy
دوشنبه 16 خرداد 1390, 20:16 عصر
میتونین با دانلود کردن یک فایل که حجمش مشخصه امتحان کنید.

دوست عزیز شما زمانی که 100% اطمینان داشتید که چیز دیگه روی سیستم ما از اینترنت استفاده نمیکنه میتونید این حرف رو بزنید اما متاسفانه در هر لحظه خیلی چیزا روی سیستم دارن از اینترنت استفاده میکنن

من با این که به هیچ نرم افزاری اجازه نمیدم از اینترنت استفاده کنن اما بازم میبینم که گه گاهی دارن یک سیخی به اینترنت میزنن حتی کوچک

daniyal_1363
چهارشنبه 25 خرداد 1390, 00:57 صبح
سلام

فکر میکنم یه جای کار مشکل داره

من تمامی نرم افزارهای که میتونن به اینترنت دسترسی داشته باشن رو غیر فعال میکنم

توسط یه نرم افزار دانلودر (Orbit) یک فایل که حجم مشخصی داره رو دانلود میکنم

ولی نرم افزار دانلودر هنور 1Mb بیشتر دانلود نکرده نرم افزار ما حدود 3Mb نمایش میده ، تمامی کانکش ها رو هم تست کردم همه همین مقدار رو برمیگردونن

در ضمن من وقتی یه کانکشن غیر فعال (Disable) رو هم انتخاب می کنم مثل (Bluetooth Device (RFCOMM Protocol TDI) باز هم در زمان دانلود ، عددش بالا میره در صورتی که من اصلاٌ از این کانکشن استفاده نمیکنم

و اینکه سرعت دانلود من توی نرم افزار دانلودرم 20 تا 25 کیلوبایته (این آخر سرعت دانلودمه) ولی سرعت دانلود در این نمونه ها راحت 40 تا 50 کیلو بایت نمایش داده میشه

ضمناً ویندوز من ویندوز 7

daniyal_1363
دوشنبه 06 تیر 1390, 08:27 صبح
یکی ، دو هفته گذشت و ما هنوز منتظریم ...
منتظر جواب :متفکر:

sina32
چهارشنبه 29 تیر 1390, 16:20 عصر
ما هم منتظریم این سوال به جواب درست و حسابی برسه.......... :متفکر:

saber67
دوشنبه 10 تیر 1392, 08:47 صبح
کس نخوارد پشت من جز ناخن انگشت من





Private Declare Function RasEnumConnections Lib "rasapi32" Alias "RasEnumConnectionsA" (ByVal lprasconn As Long, ByVal lpcb As Long, ByVal lpcConnections As Long) As Long
Private Declare Function RasGetConnectionStatistics Lib "rasapi32" (ByVal hRasConn As Long, ByVal lpStatistics As Long) As Long
Private Type RASCONN
dwSize As Long
hRasConn As Long
szEntryName(0 To 256) As Byte
szDeviceType(0 To 16) As Byte
szDeviceName(0 To 128) As Byte
pad As Byte
End Type
Private Type RAS_STATS
dwSize As Long
dwBytesXmited As Long
dwBytesRcved As Long
dwFramesXmited As Long
dwFramesRcved As Long
dwCrcErr As Long
dwTimeoutErr As Long
dwAlignmentErr As Long
dwHardwareOverrunErr As Long
dwFramingErr As Long
dwBufferOverrunErr As Long
dwCompressionRatioIn As Long
dwCompressionRatioOut As Long
dwBps As Long
dwConnectDuration As Long
End Type
Private Sub Form_Load()
Dim conn As RASCONN
Dim stat As RAS_STATS
Dim y As Long, z As Long

conn.dwSize = Len(conn)
y = conn.dwSize


If RasEnumConnections(VarPtr(conn), VarPtr(y), VarPtr(z)) = 0 Then
stat.dwSize = Len(stat)
If RasGetConnectionStatistics(conn.hRasConn, VarPtr(stat)) = 0 Then
Debug.Print stat.dwAlignmentErr
Debug.Print stat.dwBps
Debug.Print stat.dwBufferOverrunErr
Debug.Print stat.dwBytesRcved
Debug.Print stat.dwBytesXmited
Debug.Print stat.dwCompressionRatioIn
Debug.Print stat.dwCompressionRatioOut
Debug.Print stat.dwConnectDuration
Debug.Print stat.dwCrcErr
Debug.Print stat.dwFramesRcved
Debug.Print stat.dwFramesXmited
Debug.Print stat.dwFramingErr
Debug.Print stat.dwTimeoutErr
End If
End If
MsgBox stat.dwBytesRcved
End Sub


این تابع RAS بالا به صورت درست و بدون خطا - خواهش میکنم اگه چیزی به نظرتون میرسه بگین (قطره قطره جمع گردد وانگی کد اصلی شود)

ولی مقدار بازگشتیش صفره


این کدها رو من برای دیال آپ بررسی کردم کاملا درست کار می کنه، یعنی دقیقا اطلاعاتی که ویندوز توی پنجره اطلاعات کانکشن نشون میده رو بر می گردونه
مثلا stat.dwBytesRcved میزان بایت دریافتی رو بر می گردونه

حالا یه خواهشی دارم از دوستانی که اینترنت پر سرعت (ADSL و وایرلس و ...) دارن، این کدها رو تست بکنن ببینن واسه اوناهم اطلاعات درستی میده یا نه!
بعد همین جا نتیجش رو اعلام کنین