[TeamTalk 20]: [557] TeamTalk/Agents/PrimitiveComm:
tk@edam.speech.cs.cmu.edu
tk at edam.speech.cs.cmu.edu
Mon Dec 11 03:04:39 EST 2006
An HTML attachment was scrubbed...
URL: http://mailman.srv.cs.cmu.edu/pipermail/teamtalk-developers/attachments/20061211/571e7a00/attachment-0001.html
-------------- next part --------------
Added: TeamTalk/Agents/PrimitiveComm/Makefile
===================================================================
--- TeamTalk/Agents/PrimitiveComm/Makefile (rev 0)
+++ TeamTalk/Agents/PrimitiveComm/Makefile 2006-12-11 08:04:39 UTC (rev 557)
@@ -0,0 +1,66 @@
+BOEINGLIB_DIR = ../boeingLib
+
+INCLUDES = -I. -I$(BOEINGLIB_DIR)/boeing -I$(BOEINGLIB_DIR)/coralshared
+
+CPPFLAGS = $(DEFS) $(INCLUDES)
+CXXFLAGS = -g -Wall -O0
+CXXCOMPILE = $(CXX) -c $(CPPFLAGS) $(CXXFLAGS)
+CXXLINK = $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@
+
+OBJECTS = robot_class.o robot_packet2.o udpsocket.o utils.o \
+ boeing_robot_server.o boeing_trader_server.o boeing_map_packet.o \
+ boeing_map_server.o
+
+LIBRARIES = libboeingrobotserver.a
+
+all: $(LIBRARIES)
+
+libboeingrobotserver.a: $(OBJECTS)
+ ar cru $@ $(OBJECTS)
+ ranlib $@
+
+geometry.o: geometry.cpp geometry.h
+ $(CXXCOMPILE) -o $@ $<
+
+robot_packet2.o: robot_packet2.cpp robot_packet2.h geometry.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_robot_packet.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_net.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_trader_packet.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_map_packet.h
+ $(CXXCOMPILE) -o $@ $<
+
+udpsocket.o: udpsocket.cc udpsocket.h
+ $(CXXCOMPILE) -o $@ $<
+
+utils.o: utils.cpp utils.h
+ $(CXXCOMPILE) -o $@ $<
+
+boeing_robot_server.o: $(BOEINGLIB_DIR)/boeing/boeing_robot_server.cc \
+ $(BOEINGLIB_DIR)/boeing/boeing_robot_server.h udpsocket.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_robot_packet.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_net.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_map_packet.h $(BOEINGLIB_DIR)/coralshared/timer.h \
+ $(BOEINGLIB_DIR)/coralshared/error_check.h $(BOEINGLIB_DIR)/coralshared/util.h
+ $(CXXCOMPILE) -o $@ $<
+
+boeing_trader_server.o: $(BOEINGLIB_DIR)/boeing/boeing_trader_server.cc \
+ $(BOEINGLIB_DIR)/boeing/boeing_trader_server.h udpsocket.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_trader_packet.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_net.h $(BOEINGLIB_DIR)/coralshared/timer.h \
+ $(BOEINGLIB_DIR)/coralshared/error_check.h $(BOEINGLIB_DIR)/coralshared/util.h
+ $(CXXCOMPILE) -o $@ $<
+
+boeing_map_server.o: $(BOEINGLIB_DIR)/boeing/boeing_map_server.cc \
+ $(BOEINGLIB_DIR)/boeing/boeing_map_server.h udpsocket.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_map_packet.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_net.h $(BOEINGLIB_DIR)/coralshared/timer.h \
+ $(BOEINGLIB_DIR)/coralshared/error_check.h $(BOEINGLIB_DIR)/coralshared/util.h
+ $(CXXCOMPILE) -o $@ $<
+
+boeing_map_packet.o: $(BOEINGLIB_DIR)/boeing/boeing_map_packet.cc \
+ $(BOEINGLIB_DIR)/boeing/boeing_map_packet.h \
+ $(BOEINGLIB_DIR)/boeing/boeing_net.h
+ $(CXXCOMPILE) -o $@ $<
+
+clean:
+ rm -f *.o $(LIBRARIES)
Property changes on: TeamTalk/Agents/PrimitiveComm/Makefile
___________________________________________________________________
Name: svn:executable
+ *
Added: TeamTalk/Agents/PrimitiveComm/netutils.cpp
===================================================================
--- TeamTalk/Agents/PrimitiveComm/netutils.cpp (rev 0)
+++ TeamTalk/Agents/PrimitiveComm/netutils.cpp 2006-12-11 08:04:39 UTC (rev 557)
@@ -0,0 +1,192 @@
+#include "netutils.h"
+
+using namespace std;
+
+void diag(const string& x)
+{ //return a hex rep of the string
+ for(unsigned int i = 0; i < x.length(); i++) {
+ printf("%02x ", (unsigned char) x[i]);
+ if(i%16 == 15) printf("\n");
+ }
+}
+
+NetUtilsException::NetUtilsException(const string& e) throw()
+{
+ lpMsgBuf = (char*)malloc(e.size()+1);
+ e.copy(lpMsgBuf, e.size());
+ lpMsgBuf[e.size()] = '\0';
+}
+
+#ifdef WIN32
+NetUtilsException::NetUtilsException(DWORD errorCode) throw()
+#else
+NetUtilsException::NetUtilsException() throw()
+#endif
+{
+#ifdef WIN32
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ errorCode,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &lpMsgBuf,
+ 0, NULL);
+#else
+ int errorCode = errno;
+ lpMsgBuf = (char*)malloc(100);
+ if(errorCode >= sys_nerr) {
+ snprintf(lpMsgBuf, 99, "unknown error %d", errorCode);
+ } else {
+ strncpy(lpMsgBuf, 99, sys_errlist[errorCode]);
+ }
+#endif
+}
+
+NetUtilsException::~NetUtilsException() throw() {
+ free(lpMsgBuf);
+}
+
+string NetUtilsException::what() throw() {return lpMsgBuf;}
+
+void initializeSockets(struct fd_set* sockets) {
+#ifdef WIN32
+ WORD wVersionRequested;
+ WSADATA wsaData;
+ int err;
+ wVersionRequested = MAKEWORD( 2, 2 );
+ if((err = WSAStartup(wVersionRequested, &wsaData)) != 0)
+ throw NetUtilsException(err);
+#endif
+ if (sockets != NULL) FD_ZERO(sockets);
+}
+
+void Bind_in(SOCKET socket, const sockaddr_in* socketAddress) {
+ if(bind(socket, (struct sockaddr*)socketAddress, sizeof(struct sockaddr_in)) == -1 )
+ throw NetUtilsException();
+}
+
+void Bind_in(SOCKET socket, short port) {
+ sockaddr_in st_local_addr;
+ memset(&st_local_addr, 0, sizeof(st_local_addr));
+ st_local_addr.sin_family = AF_INET;
+ st_local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ st_local_addr.sin_port = htons(port);
+ Bind_in(socket, &st_local_addr);
+}
+
+SOCKET Socket_udp() {
+ SOCKET s;
+ if((s = socket(AF_INET, SOCK_DGRAM, 0)) == -1) throw NetUtilsException();
+ return s;
+}
+
+string Recv(SOCKET socket, sockaddr_in* from) {
+ const int BUFSIZE = 0xfff;
+ char buf[BUFSIZE];
+ int addr_size = sizeof(sockaddr_in);
+ int rv = recvfrom(socket, (char *)buf, BUFSIZE, 0, (sockaddr*)from, &addr_size);
+ if(rv == SOCKET_ERROR) throw NetUtilsException();
+ return string(buf, rv);
+}
+
+string Recv(SOCKET socket, unsigned long* from) {
+ sockaddr_in s_from;
+ string retval = Recv(socket, &s_from);
+ *from = s_from.sin_addr.S_un.S_addr;
+ return retval;
+}
+
+string Recv(SOCKET socket) {
+ const int BUFSIZE = 0xfff;
+ char buf[BUFSIZE];
+ int rv = recv(socket, buf, BUFSIZE, 0);
+ if(rv == SOCKET_ERROR) throw NetUtilsException();
+ return string(buf, rv);
+}
+
+/*
+ switch (socket_error) {
+ case WSANOTINITIALISED:
+ throw RobotServerException("A successful WSAStartup call must occur before using this function.");
+ case WSAENETDOWN:
+ throw RobotServerException(" The network subsystem has failed.");
+ case WSAEFAULT:
+ throw RobotServerException(" The buf parameter is not completely contained in a valid part of the user address space.");
+ case WSAENOTCONN:
+ throw RobotServerException(" The socket is not connected.");
+ case WSAEINTR:
+ throw RobotServerException(" The (blocking) call was canceled through WSACancelBlockingCall.");
+ case WSAEINPROGRESS:
+ throw RobotServerException(" A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.");
+ case WSAENETRESET:
+ throw RobotServerException(" The connection has been broken due to the keep-alive activity detecting a failure while the operation was in progress.");
+ case WSAENOTSOCK:
+ throw RobotServerException(" The descriptor is not a socket.");
+ case WSAEOPNOTSUPP:
+ throw RobotServerException(" MSG_OOB was specified, but the socket is not stream-style such as type SOCK_STREAM, OOB data is not supported in the communication domain associated with this socket, or the socket is unidirectional and supports only send operations.");
+ case WSAESHUTDOWN:
+ throw RobotServerException(" The socket has been shut down; it is not possible to receive on a socket after shutdown has been invoked with how set to SD_RECEIVE or SD_BOTH.");
+ case WSAEWOULDBLOCK:
+ throw RobotServerException(" The socket is marked as nonblocking and the receive operation would block.");
+ case WSAEMSGSIZE:
+ throw RobotServerException(" The message was too large to fit into the specified buffer and was truncated.");
+ case WSAEINVAL:
+ throw RobotServerException(" The socket has not been bound with bind, or an unknown flag was specified, or MSG_OOB was specified for a socket with SO_OOBINLINE enabled or (for byte stream sockets only) len was zero or negative.");
+ case WSAECONNABORTED:
+ throw RobotServerException(" The virtual circuit was terminated due to a time-out or other failure. The application should close the socket as it is no longer usable.");
+ case WSAETIMEDOUT:
+ throw RobotServerException(" The connection has been dropped because of a network failure or because the peer system failed to respond.");
+ case WSAECONNRESET:
+ throw RobotServerException(" The virtual circuit was reset by the remote side executing a hard or abortive close. The application should close the socket as it is no longer usable. On a UPD-datagram socket this error would indicate that a previous send operation resulted in an ICMP \"Port Unreachable\" message.");
+ default: throw RobotServerException("unknown recv error");
+ }
+ case WSASYSNOTREADY:
+ throw "something"
+ case WSAVERNOTSUPPORTED:
+ throw NetUtilsException("The version of Windows Sockets support requested is not provided by this particular Windows Sockets implementation.");
+ case WSAEINPROGRESS:
+ throw NetUtilsException("A blocking Windows Sockets 1.1 operation is in progress.");
+ case WSAEPROCLIM:
+ throw NetUtilsException("Limit on the number of tasks supported by the Windows Sockets implementation has been reached.");
+ case WSAEFAULT:
+ throw NetUtilsException("The lpWSAData is not a valid pointer.");
+ default:
+ throw NetUtilsException("unknown error starting Windows sockets.");
+
+
+ switch(WSAGetLastError()) {
+ case WSANOTINITIALISED:
+ cerr << "A successful WSAStartup call must occur before using this function." << endl;
+ break;
+ case WSAENETDOWN:
+ cerr << "The network subsystem has failed." << endl;
+ break;
+ case WSAEACCES:
+ cerr << "Attempt to connect datagram socket to broadcast address failed because setsockopt option SO_BROADCAST is not enabled." << endl;
+ break;
+ case WSAEADDRINUSE:
+ cerr << "A process on the computer is already bound to the same fully-qualified address and the socket has not been marked to allow address reuse with SO_REUSEADDR. For example, the IP address and port are bound in the af_inet case). (See the SO_REUSEADDR socket option under setsockopt.)" << endl;
+ break;
+ case WSAEADDRNOTAVAIL:
+ cerr << "The specified address is not a valid address for this computer." << endl;
+ break;
+ case WSAEFAULT:
+ cerr << "The name or namelen parameter is not a valid part of the user address space, the namelen parameter is too small, the name parameter contains an incorrect address format for the associated address family, or the first two bytes of the memory block specified by name does not match the address family associated with the socket descriptor s." << endl;
+ break;
+ case WSAEINPROGRESS:
+ cerr << "A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function." << endl;
+ break;
+ case WSAEINVAL:
+ cerr << "The socket is already bound to an address." << endl;
+ break;
+ case WSAENOBUFS:
+ cerr << "Not enough buffers available, too many connections." << endl;
+ break;
+ case WSAENOTSOCK:
+ cerr << "The descriptor is not a socket." << endl;
+ break;
+ default:
+ cerr << "unknown bind error" << endl;
+ }
+ throw exception();
+ }
+*/
Added: TeamTalk/Agents/PrimitiveComm/netutils.h
===================================================================
--- TeamTalk/Agents/PrimitiveComm/netutils.h (rev 0)
+++ TeamTalk/Agents/PrimitiveComm/netutils.h 2006-12-11 08:04:39 UTC (rev 557)
@@ -0,0 +1,43 @@
+#ifndef NETUTILS_H
+#define NETUTILS_H
+
+#ifdef WIN32
+#include <Winsock2.h>
+#else
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+//typedef int SOCKET
+#endif
+
+#include <string>
+
+using namespace std;
+
+void diag(const string& x); //return a hex rep of the string
+
+class NetUtilsException : public exception {
+ char* lpMsgBuf;
+public:
+ NetUtilsException(const string& e) throw();
+#ifdef WIN32
+ NetUtilsException(DWORD errorCode=WSAGetLastError()) throw();
+#else
+ NetUtilsException() throw();
+#endif
+ ~NetUtilsException() throw();
+ string what() throw();
+};
+
+void initializeSockets(fd_set* sockets=NULL);
+
+void Bind_in(SOCKET socket, const sockaddr_in* socketAddress);
+void Bind_in(SOCKET socket, short port);
+
+SOCKET Socket_udp();
+
+string Recv(SOCKET socket, sockaddr_in* from);
+string Recv(SOCKET socket, unsigned long* from);
+string Recv(SOCKET socket);
+
+#endif
Deleted: TeamTalk/Agents/PrimitiveComm/win_netutils.cpp
===================================================================
--- TeamTalk/Agents/PrimitiveComm/win_netutils.cpp 2006-12-11 08:01:47 UTC (rev 556)
+++ TeamTalk/Agents/PrimitiveComm/win_netutils.cpp 2006-12-11 08:04:39 UTC (rev 557)
@@ -1,173 +0,0 @@
-#include "win_netutils.h"
-
-using namespace std;
-
-void diag(const string& x) { //return a hex rep of the string
- for(unsigned int i = 0; i < x.length(); i++) {
- printf("%02x ", (unsigned char) x[i]);
- if(i%16 == 15) printf("\n");
- }
-}
-
-NetUtilsException::NetUtilsException(const string& e) throw() {
- lpMsgBuf = (char *) malloc(e.size()+1);
- e.copy(lpMsgBuf, e.size());
- lpMsgBuf[e.size()] = '\0';
-}
-
-NetUtilsException::NetUtilsException(DWORD errorCode) throw() {
- FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- errorCode,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0, NULL);
-}
-
-NetUtilsException::~NetUtilsException() throw() {
- free(lpMsgBuf);
-}
-
-string NetUtilsException::what() throw() {return lpMsgBuf;}
-
-void initializeSockets(struct fd_set* sockets) {
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
- wVersionRequested = MAKEWORD( 2, 2 );
- if((err = WSAStartup(wVersionRequested, &wsaData)) != 0)
- throw NetUtilsException(err);
- if (sockets != NULL) FD_ZERO(sockets);
-}
-
-void Bind_in(SOCKET socket, const sockaddr_in* socketAddress) {
- if(bind(socket, (struct sockaddr*)socketAddress, sizeof(struct sockaddr_in)) == -1 )
- throw NetUtilsException();
-}
-
-void Bind_in(SOCKET socket, short port) {
- sockaddr_in st_local_addr;
- memset(&st_local_addr, 0, sizeof(st_local_addr));
- st_local_addr.sin_family = AF_INET;
- st_local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- st_local_addr.sin_port = htons(port);
- Bind_in(socket, &st_local_addr);
-}
-
-SOCKET Socket_udp() {
- SOCKET s;
- if((s = socket(AF_INET, SOCK_DGRAM, 0)) == -1) throw NetUtilsException();
- return s;
-}
-
-string Recv(SOCKET socket, sockaddr_in* from) {
- const int BUFSIZE = 0xfff;
- char buf[BUFSIZE];
- int addr_size = sizeof(sockaddr_in);
- int rv = recvfrom(socket, (char *)buf, BUFSIZE, 0, (sockaddr*)from, &addr_size);
- if(rv == SOCKET_ERROR) throw NetUtilsException();
- return string(buf, rv);
-}
-
-string Recv(SOCKET socket, unsigned long* from) {
- sockaddr_in s_from;
- string retval = Recv(socket, &s_from);
- *from = s_from.sin_addr.S_un.S_addr;
- return retval;
-}
-
-string Recv(SOCKET socket) {
- const int BUFSIZE = 0xfff;
- char buf[BUFSIZE];
- int rv = recv(socket, buf, BUFSIZE, 0);
- if(rv == SOCKET_ERROR) throw NetUtilsException();
- return string(buf, rv);
-}
-
-/*
- switch (socket_error) {
- case WSANOTINITIALISED:
- throw RobotServerException("A successful WSAStartup call must occur before using this function.");
- case WSAENETDOWN:
- throw RobotServerException(" The network subsystem has failed.");
- case WSAEFAULT:
- throw RobotServerException(" The buf parameter is not completely contained in a valid part of the user address space.");
- case WSAENOTCONN:
- throw RobotServerException(" The socket is not connected.");
- case WSAEINTR:
- throw RobotServerException(" The (blocking) call was canceled through WSACancelBlockingCall.");
- case WSAEINPROGRESS:
- throw RobotServerException(" A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.");
- case WSAENETRESET:
- throw RobotServerException(" The connection has been broken due to the keep-alive activity detecting a failure while the operation was in progress.");
- case WSAENOTSOCK:
- throw RobotServerException(" The descriptor is not a socket.");
- case WSAEOPNOTSUPP:
- throw RobotServerException(" MSG_OOB was specified, but the socket is not stream-style such as type SOCK_STREAM, OOB data is not supported in the communication domain associated with this socket, or the socket is unidirectional and supports only send operations.");
- case WSAESHUTDOWN:
- throw RobotServerException(" The socket has been shut down; it is not possible to receive on a socket after shutdown has been invoked with how set to SD_RECEIVE or SD_BOTH.");
- case WSAEWOULDBLOCK:
- throw RobotServerException(" The socket is marked as nonblocking and the receive operation would block.");
- case WSAEMSGSIZE:
- throw RobotServerException(" The message was too large to fit into the specified buffer and was truncated.");
- case WSAEINVAL:
- throw RobotServerException(" The socket has not been bound with bind, or an unknown flag was specified, or MSG_OOB was specified for a socket with SO_OOBINLINE enabled or (for byte stream sockets only) len was zero or negative.");
- case WSAECONNABORTED:
- throw RobotServerException(" The virtual circuit was terminated due to a time-out or other failure. The application should close the socket as it is no longer usable.");
- case WSAETIMEDOUT:
- throw RobotServerException(" The connection has been dropped because of a network failure or because the peer system failed to respond.");
- case WSAECONNRESET:
- throw RobotServerException(" The virtual circuit was reset by the remote side executing a hard or abortive close. The application should close the socket as it is no longer usable. On a UPD-datagram socket this error would indicate that a previous send operation resulted in an ICMP \"Port Unreachable\" message.");
- default: throw RobotServerException("unknown recv error");
- }
- case WSASYSNOTREADY:
- throw "something"
- case WSAVERNOTSUPPORTED:
- throw NetUtilsException("The version of Windows Sockets support requested is not provided by this particular Windows Sockets implementation.");
- case WSAEINPROGRESS:
- throw NetUtilsException("A blocking Windows Sockets 1.1 operation is in progress.");
- case WSAEPROCLIM:
- throw NetUtilsException("Limit on the number of tasks supported by the Windows Sockets implementation has been reached.");
- case WSAEFAULT:
- throw NetUtilsException("The lpWSAData is not a valid pointer.");
- default:
- throw NetUtilsException("unknown error starting Windows sockets.");
-
-
- switch(WSAGetLastError()) {
- case WSANOTINITIALISED:
- cerr << "A successful WSAStartup call must occur before using this function." << endl;
- break;
- case WSAENETDOWN:
- cerr << "The network subsystem has failed." << endl;
- break;
- case WSAEACCES:
- cerr << "Attempt to connect datagram socket to broadcast address failed because setsockopt option SO_BROADCAST is not enabled." << endl;
- break;
- case WSAEADDRINUSE:
- cerr << "A process on the computer is already bound to the same fully-qualified address and the socket has not been marked to allow address reuse with SO_REUSEADDR. For example, the IP address and port are bound in the af_inet case). (See the SO_REUSEADDR socket option under setsockopt.)" << endl;
- break;
- case WSAEADDRNOTAVAIL:
- cerr << "The specified address is not a valid address for this computer." << endl;
- break;
- case WSAEFAULT:
- cerr << "The name or namelen parameter is not a valid part of the user address space, the namelen parameter is too small, the name parameter contains an incorrect address format for the associated address family, or the first two bytes of the memory block specified by name does not match the address family associated with the socket descriptor s." << endl;
- break;
- case WSAEINPROGRESS:
- cerr << "A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function." << endl;
- break;
- case WSAEINVAL:
- cerr << "The socket is already bound to an address." << endl;
- break;
- case WSAENOBUFS:
- cerr << "Not enough buffers available, too many connections." << endl;
- break;
- case WSAENOTSOCK:
- cerr << "The descriptor is not a socket." << endl;
- break;
- default:
- cerr << "unknown bind error" << endl;
- }
- throw exception();
- }
-*/
\ No newline at end of file
Deleted: TeamTalk/Agents/PrimitiveComm/win_netutils.h
===================================================================
--- TeamTalk/Agents/PrimitiveComm/win_netutils.h 2006-12-11 08:01:47 UTC (rev 556)
+++ TeamTalk/Agents/PrimitiveComm/win_netutils.h 2006-12-11 08:04:39 UTC (rev 557)
@@ -1,31 +0,0 @@
-#ifndef WIN_NETUTILS_H
-#define WIN_NETUTILS_H
-
-#include <Winsock2.h>
-#include <string>
-
-using namespace std;
-
-void diag(const string& x); //return a hex rep of the string
-
-class NetUtilsException : public exception {
- char* lpMsgBuf;
-public:
- NetUtilsException(const string& e) throw();
- NetUtilsException(DWORD errorCode=WSAGetLastError()) throw();
- ~NetUtilsException() throw();
- string what() throw();
-};
-
-void initializeSockets(struct fd_set* sockets=NULL);
-
-void Bind_in(SOCKET socket, const sockaddr_in* socketAddress);
-void Bind_in(SOCKET socket, short port);
-
-SOCKET Socket_udp();
-
-string Recv(SOCKET socket, sockaddr_in* from);
-string Recv(SOCKET socket, unsigned long* from);
-string Recv(SOCKET socket);
-
-#endif
\ No newline at end of file
More information about the TeamTalk-developers
mailing list