Search code examples
cocoanetworkingtcpcocoaasyncsocket

TCP data before session closing


Is there anyway that will allow to get all data sent via tcp before the session gets closed? What I am getting is I have to close the session from server only after that data is received, and moreover I have to manually pass EOL or carriage-return or "\n" or "\r".

Any help and suggestions is appreciated.


Solution

  • You could try setting the SO_LINGER socket option:

    GCDAsyncSocket asyncSocket = ...;
    struct linger linger;
    linger.l_onoff = 1;
    linger.l_linger = 30;
    int rv = setsockopt([asyncSocket socketFD], SOL_SOCKET, SO_LINGER, &linger, sizeof(linger));
    if (rv < 0)
    {
        // handle error
    }