2013-11-28 124 views
0
listener = New TcpListener(System.Net.IPAddress.Any, portconnect) 
    listener.Start() 
    client = listener.AcceptTcpClient 
    loginInfo = receivedata() 
    Dim array() As String 
    array = loginInfo.Split("|") 
    username = array(0) 
    pass = array(1) 

信息客戶端發送到服務器是logininfo。我將logininfo輸入用戶名和密碼。從客戶端到服務器vb.net獲取實際字符串

Public Function authentication(ByVal user As String, ByVal pass As String) As Boolean 
     Dim authentica As Boolean = False 
     Dim con As New OleDbConnection 
    Try 
     con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & " data source= " & Application.StartupPath & "\" & dataName 

     Dim myCommand As OleDbCommand = con.CreateCommand() 
     Dim sqlstr As String = "" 
     sqlstr = "Select password from tbusers where Username = " & "'" & user & "'" 
     myCommand.CommandText = sqlstr 
     con.Open() 
     Dim passw As String 
     passw = myCommand.ExecuteScalar() 
     con.Close() 
     If pass = passw Then 
      authentica = True 
     End If 

    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
    Return authentica 
End Function 

問題是:If pass = passw Then authentica = True End If 百達返回false。 請幫忙

+0

沒有兄弟,我認爲,當客戶端發送數據時,數據被封裝。調試,用戶是用戶名和newstr =「用戶名」。布爾用戶= newstr,它返回false –

+0

請顯示你已有的代碼不工作 –

回答

1

如果管道字符'|'始終分隔的用戶名和密碼,分裂:

Dim str As String = "username|password" 
Dim splitString() As String = str.Split("|") 
Dim userName As String = splitString(0) 
Dim password As String = splitString(1) 

至於你提到如果用戶名不同的長度(因爲它最有可能!),你將需要的東西不斷成爲分裂的基礎。

但是,最好將用戶名和密碼分開,以便它們可以獨立訪問。

+0

這不是我的問題兄弟。 –

+2

什麼不是你的問題?如果我提供的內容不適合,請更新您的問題並提供一些代碼,以顯示已經建議的不工作。 – Ric

+0

當您檢查pass = passw時,是否看到調試器中的值是否相同?可能是whitepsace或區分大小寫的問題 – Ric

1

可以使用Split function

​​

這似乎是一個壞主意,用這種方式發送這些。例如:如果密碼包含管道字符會發生什麼?

+0

對包含管道的密碼是真實的!麻煩會隨之而來.. – Ric

+0

然後,密碼中通常不允許使用特殊字符嗎? –

+0

問題是Logininfo服務器接收是否正確。我獲得用戶名並傳遞正確。但是當我檢查長度傳球時,它的值是8185。我不會不知道爲什麼 –

相關問題