Hi all,
I am opening a socket on one machine and do
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(connectionAccepted:)
name:FBConnectionAcceptedNotification object: nil];
[self acceptConnectionInBackgroundAndNotify];
I connect to this socket from another machine. This fires the
following method:
- (void)connectionAccepted:(NSNotification *)notification
{
NSFileHandle *clientHandle = [[notification userInfo]
objectForKey:NSFileHandleNotificationFileHandleItem];
[clientHandle readInBackgroundAndNotify];
}
On the remote machine I send stuff using
- [NSFileHandle writeData:]
and wait for
- (void)readCompleted:(NSNotification *)notification
being called on the server end. This basically works. However,
sometimes it takes 5 or more minutes before the data is received by
the server. I assume that since I only sent a few bytes only and
the data is kept until either more data is queued for transmission
or a timeout occurs before the data is actually sent over the line.
Can anybody confirm this assumption? What can i do about it? What I
am looking for is some kind of flush mechanism (in NSFileHandle or
directly on the socket) that sends out the data immediately
regardless of how small the package is.