dongju.jeong Posted October 1, 2019 Share Posted October 1, 2019 Is there the function such as setsockopt in unigine's api? when I use UnigineStreams for socket instead of winsock2, I don't know how to change option of socket. if (setsockopt(udpsock, SOL_SOCKET, SO_REUSEADDR, (char*)&(bReuseAddr), sizeof(bReuseAddr)) < 0) { goto CLEAR_RESOURCE_2; } // Specify the Receive timeout if (setsockopt(udpsock, SOL_SOCKET, SO_RCVTIMEO, (char*)&(pSockInfo->nTimeOut), sizeof(pSockInfo->nTimeOut)) < 0) { goto CLEAR_RESOURCE_2; } // buffer size if (setsockopt(udpsock, SOL_SOCKET, SO_RCVBUF, (char*)&(pSockInfo->nBufferSize), sizeof(pSockInfo->nBufferSize)) < 0) { goto CLEAR_RESOURCE_2; } Link to comment
cash-metall Posted October 2, 2019 Share Posted October 2, 2019 Hello! No, the UnigineSocket wrapper does not allow you to set your parameters. You write udpsock = unigine_socket->getFD() and use setsockopt manualy; or you can use wrapper methods: we set SO_REUSEADDR with 1 when you call: 1. listenMulticastGroup 2. bind int reuseaddr = 1; setsockopt(data->fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, sizeof(reuseaddr)) we set SO_RCVBUF when you call 1.send(int) 2.recv(int) int send(int size) { assert(data->fd != -1 && "Socket::send(): socket is not opened"); if (setsockopt(data->fd, SOL_SOCKET, SO_SNDBUF, (char *)&size, sizeof(size)) == -1) return 0; return 1; } int recv(int size) { assert(data->fd != -1 && "Socket::recv(): socket is not opened"); if (setsockopt(data->fd, SOL_SOCKET, SO_RCVBUF, (char *)&size, sizeof(size)) == -1) return 0; return 1; } SO_RCVTIMEO we do not set anywhere. Link to comment
Recommended Posts