objective c - Setting TCP_NODELAY for NSOutputStream in Swift -
this answer , this answer both show how set tcp_nodelay nsoutputstream in objective-c. need on getting work in swift, , believe it's mistake i'm making api.
this objective-c solution supposedly works:
cfdataref nativesocket = cfwritestreamcopyproperty(`mywritestream`, kcfstreampropertysocketnativehandle); cfsocketnativehandle *sock = (cfsocketnativehandle *)cfdatagetbyteptr(nativesocket); setsockopt(*sock, ipproto_tcp, tcp_nodelay, &(int){ 1 }, sizeof(int)); cfrelease(nativesocket); this attempt @ translating swift:
let nativesocket: cfdataref = cfwritestreamcopyproperty(mywritestream, kcfstreampropertysocketnativehandle).data let sock = cfsocketnativehandle(cfdatagetbyteptr(nativesocket).memory) var 1 = int(1) setsockopt(sock, ipproto_tcp, tcp_nodelay, &one, uint32(sizeofvalue(one))) the real issue getting cfdataref mywritestream (an nsoutputstream), , getting cfsocketnativehandle that. in swift code above, crashes on first line while trying create nativesocket (specifically, trying access data property).
can me out this?
ok, after while figured out. here's working code in case else needs it:
let socketdata = cfwritestreamcopyproperty(self.outputstream!, kcfstreampropertysocketnativehandle) as! cfdata let handle = cfsocketnativehandle(cfdatagetbyteptr(socketdata).memory) var one: int = 1 let size = uint32(sizeofvalue(one)) setsockopt(handle, ipproto_tcp, tcp_nodelay, &one, size)
Comments
Post a Comment