| ; ''''Console.WriteLine(Encoding.Unicode.GetString(data)) Dim msgHead As String = Encoding.Unicode.GetString(data, 0, 4) Select Case msgHead Case LOGININ Dim LoginThing As String = userLogin(data, tempRemoteEP, recv) If LoginThing = HVUSER Then sendMsg(HVUSER, tempRemoteEP) ElseIf LoginThing = LOGINOK Then sendMsg(LOGINOK, tempRemoteEP) End If Case LOGINOUT userloginout(data, recv) Case GETULIST Dim userinfo As String = getUserList() sendMsg(userinfo, tempRemoteEP) Case P2PCONN questP2PConn(data, recv) Case HOLDLINE holdOnLine(data, recv) End Select Catch e As Exception ''''Console.WriteLine(e.ToString) End Try End While End Sub ''''转发P2P连接请求 Private Sub questP2PConn(ByVal data() As Byte, ByVal recv As Integer) Dim recvStr As String = Encoding.Unicode.GetString(data, 4, recv - 4) Dim split() As String = recvStr.Split("|") Dim fromEP As IPEndPoint Dim toEP As IPEndPoint Dim i As Integer For i = 1 To userName.Length - 1 If userName(i) = split(0) Then fromEP = userIPEP(i) End If If userName(i) = split(1) Then toEP = userIPEP(i) End If Next Dim holdbytes() As Byte = Encoding.Unicode.GetBytes(MAKHOLD & fromEP.ToString) ServerSocket.SendTo(holdbytes, toEP) End Sub ''''函数.返回所有在线用户.其格式:用户名+|+用户IPEP+| Private Function getUserList() As String Dim userInfo As String = GETUSER Dim i As Integer For i = 1 To userName.Length - 1 If userName(i) <> "" Then userInfo += userName(i) & "|" & userIPEP(i).ToString & "|" End If Next Return userInfo End Function ''''用户登陆,直接返回登陆是否成功的值 Private Function userLogin(ByVal data As Byte(), ByVal userEP As IPEndPoint, ByVal recvCount As Integer) As String Dim Uname As String = Encoding.Unicode.GetString(data, 4, recvCount - 4) Dim Uinfobytes() As Byte Dim i As Integer Dim j As Integer For i = 1 To userName.Length - 1 If Uname = userName(i) Then Return HVUSER End If Next For i = 1 To userName.Length - 1 If userName(i) = "" Then userName(i) = Uname userIPEP(i) = userEP userTime(i) = 60 Console.Write(Chr(10) & Chr(13) & "*********************************" & Chr(10) & Chr(13) & Uname.Trim & "上线了." & "用户地址:" & userEP.ToString & Chr(10) & Chr(13) & "*********************************" & Chr(10) & Chr(13)) Console.Write("Server>") Uinfobytes = Encoding.Unicode.GetBytes(LOGININ & userName(i) & "|" & userIPEP(i).ToString) For j = 1 To userName.Length - 1 If userName(j) <> "" And userName(j) <> Uname Then ServerSocket.SendTo(Uinfobytes, userIPEP(j)) End If Next Return LOGINOK End If Next Dim userCount As Integer = userName.Length ReDim Preserve userName(userCount) ReDim Preserve userIPEP(userCount) ReDim Preserve userTime(userCount) userName(userName.Length - 1) = Uname userIPEP(userIPEP.Length - 1) = userEP userTime(userTime.Length - 1) = 60 Console.Write(Chr(10) & Chr(13) & "*********************************" & Chr(10) & Chr(13) & Uname.Trim & "上线了." & "用户地址:" & userEP.ToString & Chr(10) & Chr(13) & "**************** 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |