クライアント側で受信する際に、非同期で処理をしたほうがスムーズに動作する場合があります。以下は、クライアント側のソースです。
BeginReceiveが実行されると、非同期で受信を行いコールバック関数が呼び出されます。この方法を利用することで、受信を行うまでに次の処理にすすめることができます。
2010-10-07
[C++/CLI] UDPプログラミング
UDP送信プログラムのメモ書きです。下記のサンプルは、サーバー側でテキストボックスの内容を送信しています。
送信側(サーバ)
送信側(サーバ)
int groupPort = 11000; IPEndPoint ^groupEP = gcnew IPEndPoint(IPAddress::Parse("255.255.255.255"), groupPort); //ブロードキャストの場合 //groupEP = gcnew IPEndPoint(IPAddress::Broadcast, groupPort); groupEP = gcnew IPEndPoint(IPAddress::Parse("192.168.1.28"), groupPort); Socket ^socket = gcnew Socket(AddressFamily::InterNetwork, SocketType::Dgram, ProtocolType::Udp); socket->SetSocketOption(SocketOptionLevel::Socket, SocketOptionName::Broadcast, 1); socket->SendTo(System::Text::ASCIIEncoding::ASCII->GetBytes(textBox1->Text), groupEP);受信側(クライアント)
Socket ^listener = gcnew Socket(AddressFamily::InterNetwork, SocketType::Dgram,ProtocolType::Udp); IPEndPoint ^localEndPoint = gcnew IPEndPoint(IPAddress::Any, 11000); listener->Bind(localEndPoint); EndPoint ^ep = gcnew IPEndPoint(0,0); System::Diagnostics::Debug::WriteLine("Ready to receive…"); array<Byte> ^data = gcnew array<Byte>(1024); int recv = listener->ReceiveFrom(data, ep); String ^stringData = Encoding::ASCII->GetString(data, 0, recv); System::Diagnostics::Debug::WriteLine(stringData); listener->Close();
登録:
投稿 (Atom)