به نام خدا
سلام دوستان :10: :11:
من میخواهم یه برنامه با WinSock بنویسم که برنامه سرور بتونه به بیشتر از یک کلاینت جواب بده ! باید چیکار کنم ؟ :13:
Printable View
به نام خدا
سلام دوستان :10: :11:
من میخواهم یه برنامه با WinSock بنویسم که برنامه سرور بتونه به بیشتر از یک کلاینت جواب بده ! باید چیکار کنم ؟ :13:
نمونه ی کلاینت سرور زیر رو ببین که غیر از کنترل تعداد کلاینت ها کد خطا یابی و ارسال Text هم داره. توضیح کد مفصله اگه جایی ایراد داشتی بپرس:
کد کلاینت:
کد:Private Sub Command1_Click()
If Winsock1.State = 0 Then
Call Winsock1.Connect("127.0.0.1", "1234")
End If
End Sub
Private Sub Command2_Click()
If Winsock1.State = 7 Then
Winsock1.SendData Text1.Text
End If
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Winsock1.State
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
End Sub
کد سرور:
کد:
Private Sub Form_Load()
Winsock1(1).Listen
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
Label1.Caption = ""
For i = 1 To Winsock1.Count
Label1.Caption = Label1.Caption & i & "th connection is: " & Winsock1(i).State & vbLf & vbCr
Next
End Sub
Private Sub Winsock1_Close(Index As Integer)
Winsock1(Index).Close
Unload Winsock1(Index)
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
i = Winsock1.Count + 1
Load Winsock1(i)
'Call Winsock1(2).Connect("127.0.0.1", "1235")
'winsock1(2).LocalPort = "1235"
Winsock1(i).Accept requestID
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim a As String
Winsock1(Index).GetData a, , bytesTotal
Text1.Text = a
End Sub
Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1(Index).Close
Winsock1(Index).Listen
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
End Sub
نمونه ی کلاینت سرور زیر رو ببین که غیر از کنترل تعداد کلاینت ها کد خطا یابی و ارسال Text هم داره. توضیح کد مفصله اگه جایی ایراد داشتی بپرس:
کدسرور:
کد کلاینت:کد:Private Sub Form_Load()
Winsock1(1).Listen
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
Label1.Caption = ""
For i = 1 To Winsock1.Count
Label1.Caption = Label1.Caption & i & "th connection is: " & Winsock1(i).State & vbLf & vbCr
Next
End Sub
Private Sub Winsock1_Close(Index As Integer)
Winsock1(Index).Close
Unload Winsock1(Index)
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
i = Winsock1.Count + 1
Load Winsock1(i)
'Call Winsock1(2).Connect("127.0.0.1", "1235")
'winsock1(2).LocalPort = "1235"
Winsock1(i).Accept requestID
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim a As String
Winsock1(Index).GetData a, , bytesTotal
Text1.Text = a
End Sub
Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1(Index).Close
Winsock1(Index).Listen
End Sub
کد:Private Sub Command1_Click()
If Winsock1.State = 0 Then
Call Winsock1.Connect("127.0.0.1", "1234")
End If
End Sub
Private Sub Command2_Click()
If Winsock1.State = 7 Then
Winsock1.SendData Text1.Text
End If
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Winsock1.State
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
End Sub