basic UDP support (patch 835128)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -754,6 +754,7 @@ bool wxSocketBase::WaitForRead(long seconds, long milliseconds)
|
||||
GSOCK_LOST_FLAG);
|
||||
}
|
||||
|
||||
|
||||
bool wxSocketBase::WaitForWrite(long seconds, long milliseconds)
|
||||
{
|
||||
return _Wait(seconds, milliseconds, GSOCK_OUTPUT_FLAG);
|
||||
@@ -1126,6 +1127,27 @@ bool wxSocketServer::WaitForAccept(long seconds, long milliseconds)
|
||||
return _Wait(seconds, milliseconds, GSOCK_CONNECTION_FLAG);
|
||||
}
|
||||
|
||||
bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen)
|
||||
{
|
||||
if (GSocket_GetSockOpt(m_socket, level, optname, optval, optlen)
|
||||
!= GSOCK_NOERROR)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxSocketBase::SetOption(int level, int optname, const void *optval,
|
||||
int optlen)
|
||||
{
|
||||
if (GSocket_SetSockOpt(m_socket, level, optname, optval, optlen)
|
||||
!= GSOCK_NOERROR)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// wxSocketClient
|
||||
// ==========================================================================
|
||||
@@ -1221,9 +1243,12 @@ wxDatagramSocket::wxDatagramSocket( wxSockAddress& addr,
|
||||
m_socket = GSocket_new();
|
||||
|
||||
if(!m_socket)
|
||||
{
|
||||
wxASSERT_MSG( 0, _T("datagram socket not new'd") );
|
||||
return;
|
||||
|
||||
}
|
||||
// Setup the socket as non connection oriented
|
||||
GSocket_Unstreamed(m_socket);
|
||||
GSocket_SetLocal(m_socket, addr.GetAddress());
|
||||
if( GSocket_SetNonOriented(m_socket) != GSOCK_NOERROR )
|
||||
{
|
||||
|
||||
@@ -990,6 +990,36 @@ void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags flags)
|
||||
}
|
||||
}
|
||||
|
||||
GSocketError GSocket_GetSockOpt(GSocket *socket, int level, int optname,
|
||||
void *optval, int *optlen)
|
||||
{
|
||||
if (getsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
|
||||
{
|
||||
return GSOCK_NOERROR;
|
||||
}
|
||||
return GSOCK_OPTERR;
|
||||
}
|
||||
|
||||
GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname,
|
||||
const void *optval, int optlen)
|
||||
{
|
||||
if (setsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
|
||||
{
|
||||
return GSOCK_NOERROR;
|
||||
}
|
||||
return GSOCK_OPTERR;
|
||||
}
|
||||
|
||||
void GSocket_Streamed(GSocket *socket)
|
||||
{
|
||||
socket->m_stream = TRUE;
|
||||
}
|
||||
|
||||
void GSocket_Unstreamed(GSocket *socket)
|
||||
{
|
||||
socket->m_stream = FALSE;
|
||||
}
|
||||
|
||||
/* Internals (IO) */
|
||||
|
||||
/* _GSocket_Input_Timeout:
|
||||
@@ -1312,7 +1342,7 @@ GSocketError _GAddress_Init_INET(GAddress *address)
|
||||
}
|
||||
|
||||
address->m_family = GSOCK_INET;
|
||||
address->m_realfamily = PF_INET;
|
||||
address->m_realfamily = AF_INET;
|
||||
((struct sockaddr_in *)address->m_addr)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)address->m_addr)->sin_addr.s_addr = INADDR_ANY;
|
||||
|
||||
|
||||
@@ -1129,6 +1129,35 @@ void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags flags)
|
||||
}
|
||||
}
|
||||
|
||||
GSocketError GSocket_GetSockOpt(GSocket *socket, int level, int optname,
|
||||
void *optval, int *optlen)
|
||||
{
|
||||
if (getsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
|
||||
{
|
||||
return GSOCK_NOERROR;
|
||||
}
|
||||
return GSOCK_OPTERR;
|
||||
}
|
||||
|
||||
GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname,
|
||||
const void *optval, int optlen)
|
||||
{
|
||||
if (setsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
|
||||
{
|
||||
return GSOCK_NOERROR;
|
||||
}
|
||||
return GSOCK_OPTERR;
|
||||
}
|
||||
|
||||
void GSocket_Streamed(GSocket *socket)
|
||||
{
|
||||
socket->m_stream = TRUE;
|
||||
}
|
||||
|
||||
void GSocket_Unstreamed(GSocket *socket)
|
||||
{
|
||||
socket->m_stream = FALSE;
|
||||
}
|
||||
|
||||
#define CALL_CALLBACK(socket, event) { \
|
||||
_GSocket_Disable(socket, event); \
|
||||
|
||||
Reference in New Issue
Block a user