0

私はVB.NETで作業しています

だから私はそれ自身のIPを毎秒ブロードキャストするサーバーを持っています

Private Sub IPBroadcastTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IPBroadcastTimer.Tick
        BroadcastIP()
End Sub

クライアントが数分または数時間後に受信できるように、毎秒ブロードキャストし続ける必要がありますか?

もしそうなら、ログインをリッスンするようにサーバーを設定するにはどうすればよいですか?

クライアント側とサーバー側で何が起こるかは次のとおりです。

サーバー : "毎秒 IP をブロードキャストする" > "着信をリッスンする" > "3 つの文字列[ユーザー名/パス/IP]を受信する" > "ローカル XML ファイルでユーザー名とパスワードの有効性をチェックする" > "ターゲット IP に確認または拒否を送信する"

クライアント : 「サーバー ブロードキャストをリッスンする」 > 「サーバー IP を受信する」 > 「フォームを通じて 3 つの文字列を送信する: ユーザー名、パスワード、およびローカル IP」 > 「サーバーの確認または拒否をリッスンする」

これを使って送信したのですが、リスニングがうまくいかないようです...

Public EndPoint As New IPEndPoint(IPAddress.Parse("255.255.255.255"), 1001) ''Send destination port
Public EndPoint2 As New IPEndPoint(IPAddress.Any, 2001) ''Receive destination port
Public UserIPEndPoint As New IPEndPoint(IPAddress.Any, 2001)
Public UsernameEndPoint As New IPEndPoint(IPAddress.Any, 2001)
Public PassEndPoint As New IPEndPoint(IPAddress.Any, 2001)

Public Send As New UdpClient(2001) ''Send source port
Public Receive As New UdpClient(1001) '' Receive source port

送信:

Send.Send(IPInBytes, IPInBytes.Length, EndPoint)

受信:

Receive.Receive(UserIPEndPoint)

これを解決するにはどうすればよいですか?

4

1 に答える 1

0

放送の目的は何ですか?消費者がサービスを検出することが目的である場合は、おそらく、既に開発されているプロトコル ( BonjourSSDPなど) に依存する方がよいでしょう。少なくとも SSDP と同様に、消費者はサービスが応答する可能性のある質問 (「誰かそこにいますか?」) をブロードキャストできます。サービスは、たとえばサービスが開始されたときにその存在を自発的にブロードキャストすることもできるため、進行中の検出を持つ消費者はサービスを見つけることができます。

于 2012-08-18T21:21:55.973 に答える