sockets - Distinguishing between 'destination of udp packet unreachable' and 'received packet with payload of length 0' in Objective C -


currently, when send udp packet unreachable destination (e.g. unbound local port), event can't seem distinguish receiving zero-length udp packet.

i creating socket this:

cfsocketcontext socketcontext = { 0, (__bridge void *)self, cfretain, cfrelease, null }; socket = cfsocketcreate(kcfallocatordefault, pf_inet, sock_dgram, ipproto_udp, kcfsocketdatacallback, (cfsocketcallback)onreceiveddata, &socketcontext); nsdata* localendpointdata = [[ipendpoint ipendpointatunspecifiedaddressonport:specifiedlocalport] sockaddrdata]; cfsocketsetaddress(socket, (__bridge cfdataref)localendpointdata); cfsocketconnecttoaddress(socket, (__bridge cfdataref)[remoteendpoint sockaddrdata], -1); 

and receiving events so:

void onreceiveddata(cfsocketref socket, cfsocketcallbacktype type, cfdataref address, const void *data, void *info) {     if(type == kcfsocketdatacallback && cfdatagetlength((cfdataref)data) == 0) {         nslog("received empty packet");     } } 

if there socket listening @ specifiedlocalport things work properly. sending data triggers no received events, receiving data triggers received event. if there's no socket listening @ specifiedlocalport, sending data triggers received event claiming empty udp packet received.

am doing stupid, cause behaviour? how can distinguish 'destination unreachable' 'destination sent empty udp packet'?


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -