Download - Socket programming with UDP
Socket programming with UDP
UDP: no “connection” between client & server• sender explicitly attaches IP destination address and
port # to each packet
• receiver extracts sender IP address and port# from received packet
UDP: transmitted data may be lost or received out-of-order
Why UDP?
• When receiving a msg, all the data can be extracted directly.
• Can extract sender’s IP and Port#.
• UDP provides unreliable transfer of groups of bytes (“datagrams”) between client and server– loss, out of order
• Applications (tolerant loss and mis-order )? – Games? Audio/Video?– Additional code maybe needed.
UDP Socket Communications
Server Socket
Client Socket
Server Client
RecvSend
SendRecv
Client Socket
Client Socket
Client/server socket interaction: UDP
Close client
read datagram from
IPEndPoint ^receivePoint = gcnew IPEndPoint( IPAddress::Any, 0 );
array<Byte>^ data = client->Receive( receivePoint );
create socket:UdpClient ^ client = gcnew UdpClient( 0 ) ;
Create datagram with serverIP and
port=x; send datagram viaclient->Send( data, data->Length, L“serverIP", 12345 );
create socket, port= x:
UdpClient ^ client = gcnew UdpClient( 12345 );IPEndPoint ^receivePoint = gcnew IPEndPoint( IPAddress::Any, 0 );
read datagram fromarray<Byte>^ data = client->Receive( receivePoint );
write reply toclient->Send( data, data->Length, receivePoint );specifying client address,port number
server (running on serverIP) client
UDP Sockets in C++/CLI
• UdpClient ^ client = gcnew UdpClient( 12345 )
• IPEndPoint ^receivePoint = gcnew IPEndPoint( IPAddress::Any, 0 );
• array<Byte>^ data = client->Receive( receivePoint );
• client->Send( data, data->Length, receivePoint );
• UdpClient ^ client = gcnew UdpClient( 0 ) ;
• client->Send( data, data->Length, L“127.0.0.1", 12345 );
• IPEndPoint ^receivePoint = gcnew IPEndPoint( IPAddress::Any, 0 );
• array<Byte>^ data = client->Receive( receivePoint );
Server Client
An Example