2011-12-20 21 views
0

同じソケットでUDPデータグラムを送受信できますか?私はTCP通信に使用しています。通信にUDPを使用するアプリケーションにはマルチメディア通信があります。新しいソケットそれはプロパティの例外を投げたLingerStateNoDelay。私は古いソケットインスタンスを他のソケット変数に割り当てますが、ほとんどのプロパティが読み取られるのでプロパティを変更することを許可しません。 TCP接続エリアでデータを送信する。同じソケットで同じアプリケーションで異なるプロトコルを使用する

* コード*

ソケットSendingSocket =新しいソケット(AddressFamily.InterNetwork、SocketType.Dgram、ProtocolType.Udp)。 IPEndPoint Endp =新しいIPEndPoint(IPAddress.Parse( "192.168.3.233")、ポート);

SendingSocket.Bind(Endp);

while(SendingSocket.Connected)
{ string Message = "UDP経由のテストメッセージ"; ASCIIEncoding Encode =新しいASCIIEncoding(); バイト[] MessageBytes = Encode.GetBytes(メッセージ); SendingSocket.SendTo(MessageBytes、0、MessageBytes.Length、SocketFlags.None、Endp); } '

+1

TCPとUDPは全く違った働きをします。 TCPは、クライアント/サーバーがクローズ/ドロップされるまで、クライアント/サーバー間の常時接続を維持します。 UDPはそうではありません。私が必要と思っていたソフトウェアには、TCPとUDPの2つのソケットが使用されています。 – GeoffM

+0

私はそれがアプリケーションの要件であることを尋ねています。私は分離して通信しています – Samie

答えて

0

いいえTCPとUDPの両方に同じソケットを使用することはできません。ソケットは1つのプロトコルにのみバインドされます。

+0

私の場合、SocketAはTCPのためにバインドされています。私はこの方法で作成したときに、 ** 10045 **と** 10042 ** **私はMachineAに接続されたSocketA Underソケットオブジェクトを作成している間に例外がスローされたと思います。私はMachineAと通信するつもりです。 – Samie

+0

私たちにいくつかのコードを表示します.. – jgauffin

+0

ソケットSendingSocket =新しいソケット(AddressFamily.InterNetwork、SocketType.Dgram、ProtocolType.Udp); IPEndPoint Endp =新しいIPEndPoint(IPAddress.Parse( "192.168.3.233")、port); SendingSocket.Bind(Endp); while(SendingSocket.Connected); { 文字列Message = "UDPを介して送信されるテストメッセージ";ASCIIEncoding Encode =新しいASCIIEncoding(); バイト[] MessageBytes = Encode.GetBytes(メッセージ); SendingSocket.SendTo(MessageBytes、0、MessageBytes.Length、SocketFlags.None、Endp); } ' – Samie

1

あなたのSendingSocket.SendToにはIPエンドポイントも含まれているので、そのコードフラグメントからは分かりませんが、おそらくSendingSocket.Bind(Endp)は必要ありません。また、簡単に試してください

SendingSocket.SendTo(MessageBytes, Endp); 
関連する問題