الكود اهو بس كل ماجى افتح المشروع واضغط على البوتن عشان يجيب المتصلين الان يقولى have some error
كود :
Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
Dim mk = New Mikrotik(IPAddress)
If Not mk.Login(user.Text, pass.Text) Then
Console.WriteLine("Cant log in")
mk.Close()
Console.ReadLine()
Return
End If
Try
mk.Send("/ip/hotspot/active/print", False)
mk.Send("=.proplist=.id", False)
mk.Send("=.proplist=server", False)
mk.Send("=.proplist=user", False)
mk.Send("=.proplist=address", False)
mk.Send("=.proplist=mac-address=", False)
mk.Send("=.proplist=uptime=", False)
mk.Send("=.proplist=keepalive-timeout=", False)
mk.Send("=.proplist=disabled", True)
For Each row In mk.Read()
Dim a = row.Replace("!re", "")
Dim b = a.Replace("=.id=", "")
Dim c = b.Replace("=server=", "/")
Dim z = c.Replace("=user=", "/")
Dim x = b.Replace("=address=", "/")
Dim d = c.Replace("=mac-address=", "/")
Dim v = b.Replace("=uptime=", "/")
Dim n = c.Replace("=keepalive-timeout=", "/")
Dim f = d.Replace("=profile=", "/")
Dim r = g.Replace("!done", "")
Dim q = r.Replace("=disabled=", "/")
If q = "" Then
Else
Dim info = q.Split(New Char() {"/"c}, StringSplitOptions.RemoveEmptyEntries)
Dim id = info(0)
Dim name = info(1)
Dim password = info(2)
Dim profile = info(3)
Dim status = info(4)
Conn.Close()
Dim sql1 As String = "select * from customer_db Where m_id = '" & id & "'"
Dim cmd1 As New OleDbCommand(sql1, Conn)
cmd1.Parameters.Clear()
Conn.Open()
dr = cmd1.ExecuteReader
dr.Read()
If dr.HasRows = False Then
If r = "" Then
Else
Try
Dim sqlz As String = "select * from speed Where profile = '" & RTL(profile) & "'"
Dim cmdz As New OleDbCommand(sqlz, conn2)
Dim drz As OleDbDataReader
cmdz.Parameters.Clear()
conn2.Open()
drz = cmdz.ExecuteReader
drz.Read()
Label5.Text = drz.Item("price")
conn2.Close()
Catch
MsgBox(" غير مدرج في قائمة الاسعار" & RTL(profile) & "البروفايل ")
End Try
Conn.Close()
Dim sql = "INSERT INTO customer_db (m_id , m_us , m_pas , profile , c_name , c_add , c_tell , r_date , p_date , status , type , ip , mac , price , a_model , a_ip , a_mac , c_to , a_speed ) VALUES ('" & id & "' , '" & RTL(name) & "' , '" & convert(RTL(password)) & "' , '" & profile & "' , 'na' , 'na' , 'na' , '" & Date.Today & "' , '" & DateTime.Today.AddMonths(1) & "' , '" & conv(status) & "' , 'cable' , '0.0.0.0' , '00:00:00:00:00:00' , '" & Label5.Text & "' , 'na' , '0.0.0.0' , '00:00:00:00:00:00', 'na' , '" & profile & "')"
Dim cmd = New OleDb.OleDbCommand(sql, Conn)
Conn.Open()
cmd.ExecuteNonQuery()
Conn.Close()
End If
Else
Dim SavInto As New OleDb.OleDbCommand
Conn.Close()
SavInto.Connection = Conn
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "UPDATE customer_db SET m_us = '" & RTL(name) & "',m_pas = '" & convert(RTL(password)) & "' where m_id = '" & id & "' "
Conn.Open()
SavInto.ExecuteNonQuery()
Conn.Close()
End If
End If
Next
refrish1.Show()
Me.Close()
MsgBox("تم تحديث البيانات")
Catch
MsgBox("have some error")
End Try
Conn.Close()
Dim id As String = Regex.Match(row, "(?<=id=).+?(?=\=|$)").Value Dim server As String = Regex.Match(row, "(?<=server=).+?(?==|$)").Value Dim user As String = Regex.Match(row, "(?<=user=).+?(?==|$)").Value Dim address As String = Regex.Match(row, "(?<=address=).+?(?==|$)").Value Dim mac_address As String = Regex.Match(row, "(?<=mac-address=).+?(?==|$)").Value Dim login_by As String = Regex.Match(row, "(?<=login-by=).+?(?==|$)").Value Dim uptime As String = Regex.Match(row, "(?<=uptime=).+?(?==|$)").Value Dim keepalive_timeout As String = Regex.Match(row, "(?<=keepalive-timeout=).+?(?==|$)").Value Dim radius As String = Regex.Match(row, "(?<=radius=).+?(?==|$)").Value
07-02-18, 06:00 AM (آخر تعديل لهذه المشاركة : 07-02-18, 06:01 AM {2} بواسطة MOSTAFA.KAMEL.)
(07-02-18, 04:54 AM)طالب برمجة كتب : استخدم هذه الطريقة
PHP كود :
Dim id As String = Regex.Match(row, "(?<=id=).+?(?=\=|$)").Value Dim server As String = Regex.Match(row, "(?<=server=).+?(?==|$)").Value Dim user As String = Regex.Match(row, "(?<=user=).+?(?==|$)").Value Dim address As String = Regex.Match(row, "(?<=address=).+?(?==|$)").Value Dim mac_address As String = Regex.Match(row, "(?<=mac-address=).+?(?==|$)").Value Dim login_by As String = Regex.Match(row, "(?<=login-by=).+?(?==|$)").Value Dim uptime As String = Regex.Match(row, "(?<=uptime=).+?(?==|$)").Value Dim keepalive_timeout As String = Regex.Match(row, "(?<=keepalive-timeout=).+?(?==|$)").Value Dim radius As String = Regex.Match(row, "(?<=radius=).+?(?==|$)").Value
بعتذر جدا للتاخير فى الرد
ولكن هذا الكود هيضيف البيانات فى الDataGridView وهمسح الكود الثانى بالكامل ولا ايه بالظبط
وهو يستخرج بيانات الحقول من النص
!re=.id=*5600000A=server=hotspot1=user=12=address=10.0.0.86=mac-address=F8:3F:51:7F:C8:07=login-by=cookie=uptime=00:28:17=keepalive-timeout=00:02:00=radius=false
وبالتالي تستيطيع التعامل مع البيانات باسماء متغيراتها بشكل واضح كما تريد بدلا من طريقة (info(1 و(info(2 ...
07-02-18, 12:53 PM (آخر تعديل لهذه المشاركة : 07-02-18, 01:02 PM {2} بواسطة محمود صالح.)
تمام كده طالب البرمجة سهل الدنيا
طبعا لان المثال السابق ذكره في الموضوع اخر مش بيشتغل عندي
انا عملتلك مثال طبقه عندك وهو سهل وبسيط هتفهمه
صورة
الكود كامل
PHP كود :
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim STR As New List(Of String) STR.Add("!re=.id=*D00000A=server=hotspot1=user=00=address=10.0.0.13=mac-address=00:E0:4C:95:C2:77=login-by=cookie=uptime=08:22:07==00:02:00=radius=false") STR.Add("!re=.id=*5600000A=server=hotspot1=user=12=address=10.0.0.86=mac-address=F8:3F:51:7F:C8:07=login-by=cookie=uptime=00:28:17=keepalive-timeout=00:02:00=radius=false") STR.Add("!re=.id=*BC00000A=server=hotspot1=user=0=address=10.0.0.188=mac-address=EC:51:BC:24:E4:59=login-by=cookie=uptime=00:33:00=keepalive-timeout=00:02:00=radius=false") STR.Add("!re=.id=*FE00000A=server=hotspot1=user=3=address=10.0.0.254=mac-address=98:0C:A5:05:A2:3F=login-by=http-chap=uptime=00:42:39=keepalive-timeout=00:02:00=radius=false")
For Each ROW In STR Dim id As String = Regex.Match(ROW, "(?<=id=).+?(?=\=|$)").Value Dim server As String = Regex.Match(ROW, "(?<=server=).+?(?==|$)").Value Dim user As String = Regex.Match(ROW, "(?<=user=).+?(?==|$)").Value Dim address As String = Regex.Match(ROW, "(?<=address=).+?(?==|$)").Value Dim mac_address As String = Regex.Match(ROW, "(?<=mac-address=).+?(?==|$)").Value Dim login_by As String = Regex.Match(ROW, "(?<=login-by=).+?(?==|$)").Value Dim uptime As String = Regex.Match(ROW, "(?<=uptime=).+?(?==|$)").Value Dim keepalive_timeout As String = Regex.Match(ROW, "(?<=keepalive-timeout=).+?(?==|$)").Value Dim radius As String = Regex.Match(ROW, "(?<=radius=).+?(?==|$)").Value DGV1.Rows.Add(id, server, user, address, mac_address, login_by, uptime, keepalive_timeout, radius) Next
07-02-18, 04:55 PM (آخر تعديل لهذه المشاركة : 07-02-18, 04:59 PM {2} بواسطة MOSTAFA.KAMEL.)
(07-02-18, 07:36 AM)طالب برمجة كتب : الكود بديل عن طريقة الاستخراج عن طريق Replace
وهو يستخرج بيانات الحقول من النص
!re=.id=*5600000A=server=hotspot1=user=12=address=10.0.0.86=mac-address=F8:3F:51:7F:C8:07=login-by=cookie=uptime=00:28:17=keepalive-timeout=00:02:00=radius=false
وبالتالي تستيطيع التعامل مع البيانات باسماء متغيراتها بشكل واضح كما تريد بدلا من طريقة (info(1 و(info(2 ...
تمام بس برضو فى مشكلة عشان هو بيعمل اتصال للسيرفر عن طريق تسجيل دخول من الكود ده
كود :
Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
Dim mk = New Mikrotik(IPAddress)
If Not mk.Login(user.Text, pass.Text) Then
Console.WriteLine("Cant log in")
mk.Close()
Console.ReadLine()
Return
End If
بعد ما يعمل اتصال بيقوم بارسال او اتصال الرابط يجيب الى شغلين الان الفكرة جميلة الى حضرتك عملتها بس انا عايز بعد ما يتم الاتصال بالسيرفر يقوم بالاتصال بالرابط ويجلب البيانات زاى ما خضرتك عملت كدة
كود :
mk.Send("/ip/hotspot/active/print", False)
(07-02-18, 12:53 PM)محمود صالح كتب : تمام كده طالب البرمجة سهل الدنيا
طبعا لان المثال السابق ذكره في الموضوع اخر مش بيشتغل عندي
انا عملتلك مثال طبقه عندك وهو سهل وبسيط هتفهمه
صورة
الكود كامل
PHP كود :
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim STR As New List(Of String) STR.Add("!re=.id=*D00000A=server=hotspot1=user=00=address=10.0.0.13=mac-address=00:E0:4C:95:C2:77=login-by=cookie=uptime=08:22:07==00:02:00=radius=false") STR.Add("!re=.id=*5600000A=server=hotspot1=user=12=address=10.0.0.86=mac-address=F8:3F:51:7F:C8:07=login-by=cookie=uptime=00:28:17=keepalive-timeout=00:02:00=radius=false") STR.Add("!re=.id=*BC00000A=server=hotspot1=user=0=address=10.0.0.188=mac-address=EC:51:BC:24:E4:59=login-by=cookie=uptime=00:33:00=keepalive-timeout=00:02:00=radius=false") STR.Add("!re=.id=*FE00000A=server=hotspot1=user=3=address=10.0.0.254=mac-address=98:0C:A5:05:A2:3F=login-by=http-chap=uptime=00:42:39=keepalive-timeout=00:02:00=radius=false")
For Each ROW In STR Dim id As String = Regex.Match(ROW, "(?<=id=).+?(?=\=|$)").Value Dim server As String = Regex.Match(ROW, "(?<=server=).+?(?==|$)").Value Dim user As String = Regex.Match(ROW, "(?<=user=).+?(?==|$)").Value Dim address As String = Regex.Match(ROW, "(?<=address=).+?(?==|$)").Value Dim mac_address As String = Regex.Match(ROW, "(?<=mac-address=).+?(?==|$)").Value Dim login_by As String = Regex.Match(ROW, "(?<=login-by=).+?(?==|$)").Value Dim uptime As String = Regex.Match(ROW, "(?<=uptime=).+?(?==|$)").Value Dim keepalive_timeout As String = Regex.Match(ROW, "(?<=keepalive-timeout=).+?(?==|$)").Value Dim radius As String = Regex.Match(ROW, "(?<=radius=).+?(?==|$)").Value DGV1.Rows.Add(id, server, user, address, mac_address, login_by, uptime, keepalive_timeout, radius) Next
End Sub End Class
تمام بس برضو فى مشكلة عشان هو بيعمل اتصال للسيرفر عن طريق تسجيل دخول من الكود ده وبشكر حضرتك على مجهودك
كود :
Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
Dim mk = New Mikrotik(IPAddress)
If Not mk.Login(user.Text, pass.Text) Then
Console.WriteLine("Cant log in")
mk.Close()
Console.ReadLine()
Return
End If
بعد ما يعمل اتصال بيقوم بارسال او اتصال الرابط يجيب الى شغلين الان بس انا عايز بعد ما يتم الاتصال بالسيرفر يقوم بالاتصال بالرابط ويجلب البيانات زاى ما خضرتك عملت كدة
انا مش فاهم حاجة والله
الى دخل جلب البيانات في عرض البيانات
احنا بنتكلم عن عرض البيانات وتحديدا اظهارها في datagridview ودي اخر المراحل
كل الى هتعمله انك
اولا : حتشيل طريقة Replace الى عملها كما قال لك طالب برمجة ثانيا : هتصمم datagridview كما في المثال وتسميها dgv1 ثالثا : هتبدل جملة for each الى عندك بالكود ده
PHP كود :
For Each ROW In mk.Read() Dim id As String = Regex.Match(ROW, "(?<=id=).+?(?=\=|$)").Value Dim server As String = Regex.Match(ROW, "(?<=server=).+?(?==|$)").Value Dim user As String = Regex.Match(ROW, "(?<=user=).+?(?==|$)").Value Dim address As String = Regex.Match(ROW, "(?<=address=).+?(?==|$)").Value Dim mac_address As String = Regex.Match(ROW, "(?<=mac-address=).+?(?==|$)").Value Dim login_by As String = Regex.Match(ROW, "(?<=login-by=).+?(?==|$)").Value Dim uptime As String = Regex.Match(ROW, "(?<=uptime=).+?(?==|$)").Value Dim keepalive_timeout As String = Regex.Match(ROW, "(?<=keepalive-timeout=).+?(?==|$)").Value Dim radius As String = Regex.Match(ROW, "(?<=radius=).+?(?==|$)").Value DGV1.Rows.Add(id, server, user, address, mac_address, login_by, uptime, keepalive_timeout, radius) Next
07-02-18, 08:15 PM (آخر تعديل لهذه المشاركة : 07-02-18, 08:16 PM {2} بواسطة MOSTAFA.KAMEL.)
انا حول مع الكود وفعلا اشتغل وجاب الناس الى شغاله الان
بس مش جايب كل حاجة غير اول 3 والباقى البيانات لا يعنى الوقت الجهاز ده بقالو اد ايه منصل بالانترنت كمان لما بضغط على يجيب الناس وبعد كدة يجيب تكرار الصف مرتين وفاضي
ابعتلى صفحة الفيس بوك بتاعة حضرتك