2

OK、これはとても単純な問題ですが、それは私をとても怒らせて、私が落ち着くために水差し全体を飲まなければならなかったのです。

編集

タグにもc#を追加しました。ac#の回答も問題ありません。

基本的に、私はこの非同期クライアント/サーバーの例をMicrosoftのWebサイトhttp://msdn.microsoft.com/en-us/library/bbx2eya8.aspxに実装しています。

これで、サーバーを実行しているプロジェクトインスタンスがあり、サーバーはOKで、接続を待っています。

.netの非同期通信モデルを理解しようとしていますが、ポート2000でローカルにリッスンしているサーバーにclient.vbから挨拶してもらいたいだけです。

マイクロソフトの例のコードは長く、少しずつ理解するように取り組んでいますが、今のところ、待機中のサーバーに「こんにちは」と言う簡単な数行のコードが必要です。

Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
    Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
    Dim localEndPoint As New IPEndPoint(ipAddress, 2000)
    clientSocket.BeginConnect("localhost", 2000, AddressOf ConnectionMade, clientSocket)

上記は機能していません。nullポインタ例外が発生します。マイクロソフトの例には非常に多くのコールバック、acceptcallback、およびその他のメソッドがあるので、すぐにうまく理解できると確信していますが、今のところ、それは信じられないほど混乱しています。

帽子をかぶって助けてくれるラップトップを身に着けないようにしてください。サーバーへの単純な「こんにちは」の文字列だけで、私の人生は幸せなものになります。ありがとう

4

1 に答える 1

2

私はあなたのコードを使用して例を作成しましたが、null参照例外を発生させる唯一の方法は、ソケットを適切にインスタンス化しない場合です。しかし、clientSocketまたはConnectionMadeメソッドの宣言を見なければ、見分けるのは困難です。

IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint (ipAddress, 2000);
Socket clientSocket = new Socket(SocketType.Raw, ProtocolType.IPv4);
clientSocket.BeginConnect("http://www.google.com", 80, new AsyncCallback(method), clientSocket);
于 2013-03-07T23:17:46.610 に答える