Exemplo n.º 1
0
/**
**  Open an UDP Socket port.
**
**  @param port !=0 Port to bind in host notation.
**
**  @return If success the socket fildes, -1 otherwise.
*/
Socket NetOpenUDP(int port)
{
	Socket sockfd;

	// open the socket
	sockfd = socket(AF_INET, SOCK_DGRAM, 0);
	if (sockfd == INVALID_SOCKET) {
		return (Socket)-1;
	}
	// bind local port
	if (port) {
		struct sockaddr_in sock_addr;

		memset(&sock_addr, 0, sizeof(sock_addr));
		sock_addr.sin_family = AF_INET;
		sock_addr.sin_addr.s_addr = INADDR_ANY;
		sock_addr.sin_port = htons(port);
		// Bind the socket for listening
		if (bind(sockfd, (struct sockaddr *)&sock_addr, sizeof(sock_addr)) < 0) {
			fprintf(stderr, "Couldn't bind to local port\n");
			NetCloseUDP(sockfd);
			return (Socket)-1;
		}
		NetLastHost = sock_addr.sin_addr.s_addr;
		NetLastPort = sock_addr.sin_port;
	}
	return sockfd;
}
Exemplo n.º 2
0
/**
**  Open an UDP Socket port.
**
**  @param ip !=0 Ip to bind in host notation.
**  @param port !=0 Port to bind in host notation.
**
**  @return If success the socket fildes, -1 otherwise.
*/
Socket NetOpenUDP(unsigned long ip, int port)
{
	// open the socket
	Socket sockfd = socket(AF_INET, SOCK_DGRAM, 0);

	if (sockfd == INVALID_SOCKET) {
		return static_cast<Socket>(-1);
	}
	// bind local port
	if (port) {
		struct sockaddr_in sock_addr;

		memset(&sock_addr, 0, sizeof(sock_addr));
		sock_addr.sin_family = AF_INET;
		sock_addr.sin_addr.s_addr = ip;
		sock_addr.sin_port = port;
		// Bind the socket for listening
		if (bind(sockfd, (struct sockaddr *)&sock_addr, sizeof(sock_addr)) < 0) {
			fprintf(stderr, "Couldn't bind to local port\n");
			NetCloseUDP(sockfd);
			return static_cast<Socket>(-1);
		}
	}
	return sockfd;
}
Exemplo n.º 3
0
 void Close() {
     NetCloseUDP(socket);
     socket = Socket(-1);
 }