現在、クライアントは、このようなメッセージを送信している:ベター・ソケット通信システム
checkfileMD5-MSGDelimit0-12-MSGDelimit1-54-MSGDelimit2-filename.txt-MSGDelimit3-*md5hash*
それは、その後読み出し:
がPublic Function checkMD5(ByVal userID As Integer, ByVal gameID As Integer, ByVal file As String, ByVal fileFull As String) As String
Dim make As New CMakeMSG
Dim md5 As New CMD5
make.append("checkfileMD5")
make.append(userID)
make.append(containerID)
make.append(file)
make.append(md5.GenerateFileHash(fileFull))
Return SocketSendAndReceiveMSG(make.makestring)
End Function
サーバはこのような何かを受け取ることができます
Private _message As String
Public Function handleMessage() As String
Dim brokenMessage As New ArrayList
brokenMessage = breakDown() 'Split to ArrayList
If brokenMessage(0) = "checkfileMD5" Then
Try
If brokenMessage.Count > 5 Then
Return "0-structureMessedUp"
End If
Return CompareFileMD5(brokenMessage(1), brokenMessage(2), brokenMessage(3), brokenMessage(4))
Catch ex As Exception
Return "0-structureMessedUp"
End Try
End If
End Function
それでは受信したメッセージを受け取り、spli区切り文字として-MSGDelimitを使用して配列に追加します。したがって、この場合、CompareFileMD5()
関数は12,54,filename.txt,*md5hash*
を受け取ります。それに基づいて、それはMD5がマッチしたかどうかにかかわらずクライアントに戻ることができます。
確かに動作しますが、サーバー上のコードがかなり乱雑になります。
は、ここで(それが重要疑うが、あなたが知っていることはありません)上記のコードから、あまり関係の関数です:
だから、Private Function breakDown() As ArrayList
Try
Dim theArray As New ArrayList
Dim copymsg As String = _message
Dim counter As Integer = 0
Do Until Not copymsg.Contains("-MSGDelimit")
Dim found As String
found = copymsg.Substring(0, copymsg.IndexOf("-MSGDelimit" & counter & "-"))
theArray.Add(found)
copymsg = copymsg.Replace(found & "-MSGDelimit" & counter & "-", "")
counter += 1
Loop
theArray.Add(copymsg)
Return theArray
Catch ex As Exception
Module1.msg(ex.Message)
End Try
End Function
Private Function CompareFileMD5(ByVal userID As Integer, ByVal gameID As Integer, ByVal filename As String, ByVal source As String) As String
Try
Dim tryFindFile As String = Module1.filedatabase.findfile(userID, gameID, filename)
If Not tryFindFile = "notFound" Then
Dim fileFull As String = tryFindFile & "\" & filename
Dim md5 As New CMD5
If md5.GenerateFileHash(fileFull) = source Then
Return "Match"
Else
Return "NoMatch"
End If
Else
Return "notFound"
End If
Catch ex As Exception
Module1.msg("0")
Return "0"
End Try
End Function
、それを処理する方法上の任意のアドバイスより良い/クリーナー/もっと専門的?
私はその文を理解していないので、返信いただきありがとうございます。おそらく "送信されるデータのクライアントバージョン"について詳しく説明できますか? JSONは今のところよく見ています。 – natli
@natli:申し訳ありません。私はその文の中から一言を残しておいたのです。私は編集し、明確な情報を追加しました。 –
ああ、今や意味がある!ありがとう、私はいくつかの仕事があるように見えます;) – natli