added +int Socket::bindToIfceAddr()
This commit is contained in:
		@ -76,10 +76,17 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	int shutdown (int how = 2) QSE_CPP_NOEXCEPT;
 | 
						int shutdown (int how = 2) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
	int connect (const SocketAddress& target) QSE_CPP_NOEXCEPT;
 | 
						int connect (const SocketAddress& target) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int bind (const SocketAddress& target) QSE_CPP_NOEXCEPT;
 | 
						int bind (const SocketAddress& target) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
						// bind to the ip address of the interface 
 | 
				
			||||||
 | 
						int bindToIfceAddr (const qse_mchar_t* ifce, qse_uint16_t port) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
						// bind to the ip address of the interface
 | 
				
			||||||
 | 
						int bindToIfceAddr (const qse_wchar_t* ifce, qse_uint16_t port) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int listen (int backlog = 128) QSE_CPP_NOEXCEPT;
 | 
						int listen (int backlog = 128) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
	int accept (Socket* newsck, SocketAddress* newaddr, int traits = 0) QSE_CPP_NOEXCEPT;
 | 
						int accept (Socket* newsck, SocketAddress* newaddr, int traits = 0) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// The send() functions sends data by attemping a single call to the 
 | 
						// The send() functions sends data by attemping a single call to the 
 | 
				
			||||||
	// underlying system calls
 | 
						// underlying system calls
 | 
				
			||||||
	qse_ssize_t send (const void* buf, qse_size_t len) QSE_CPP_NOEXCEPT;
 | 
						qse_ssize_t send (const void* buf, qse_size_t len) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
				
			|||||||
@ -66,6 +66,7 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	void setIpaddr (const qse_ip4ad_t* ipaddr) QSE_CPP_NOEXCEPT;
 | 
						void setIpaddr (const qse_ip4ad_t* ipaddr) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
	void setIpaddr (const qse_ip6ad_t* ipaddr) QSE_CPP_NOEXCEPT;
 | 
						void setIpaddr (const qse_ip6ad_t* ipaddr) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
						void setIpaddr (qse_uint32_t ipaddr) QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const qse_ip4ad_t* getIp4addr () const QSE_CPP_NOEXCEPT;
 | 
						const qse_ip4ad_t* getIp4addr () const QSE_CPP_NOEXCEPT;
 | 
				
			||||||
	const qse_ip6ad_t* getIp6addr () const QSE_CPP_NOEXCEPT;
 | 
						const qse_ip6ad_t* getIp6addr () const QSE_CPP_NOEXCEPT;
 | 
				
			||||||
 | 
				
			|||||||
@ -308,6 +308,20 @@ int Socket::bind (const SocketAddress& target) QSE_CPP_NOEXCEPT
 | 
				
			|||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Socket::bindToIfceAddr (const qse_mchar_t* ifce, qse_uint16_t port) QSE_CPP_NOEXCEPT
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						SocketAddress addr;
 | 
				
			||||||
 | 
						if (this->getIfceAddress(ifce, &addr) <= -1) return -1;
 | 
				
			||||||
 | 
						return this->bind(addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Socket::bindToIfceAddr (const qse_wchar_t* ifce, qse_uint16_t port) QSE_CPP_NOEXCEPT
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						SocketAddress addr;
 | 
				
			||||||
 | 
						if (this->getIfceAddress(ifce, &addr) <= -1) return -1;
 | 
				
			||||||
 | 
						return this->bind(addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int Socket::listen (int backlog) QSE_CPP_NOEXCEPT
 | 
					int Socket::listen (int backlog) QSE_CPP_NOEXCEPT
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	QSE_ASSERT (this->handle != QSE_INVALID_SCKHND);
 | 
						QSE_ASSERT (this->handle != QSE_INVALID_SCKHND);
 | 
				
			||||||
 | 
				
			|||||||
@ -85,6 +85,7 @@
 | 
				
			|||||||
#	define FAMILY(x) (-1)
 | 
					#	define FAMILY(x) (-1)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
/////////////////////////////////
 | 
					/////////////////////////////////
 | 
				
			||||||
QSE_BEGIN_NAMESPACE(QSE)
 | 
					QSE_BEGIN_NAMESPACE(QSE)
 | 
				
			||||||
/////////////////////////////////
 | 
					/////////////////////////////////
 | 
				
			||||||
@ -128,6 +129,17 @@ void SocketAddress::setIpaddr (const qse_ip4ad_t* ipaddr) QSE_CPP_NOEXCEPT
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SocketAddress::setIpaddr (const qse_uint32_t ipaddr) QSE_CPP_NOEXCEPT
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if defined(AF_INET)
 | 
				
			||||||
 | 
						if (FAMILY(&this->skad) == AF_INET)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							struct sockaddr_in* v4 = (struct sockaddr_in*)&this->skad;
 | 
				
			||||||
 | 
							v4->sin_addr.s_addr = ipaddr;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SocketAddress::setIpaddr (const qse_ip6ad_t* ipaddr) QSE_CPP_NOEXCEPT
 | 
					void SocketAddress::setIpaddr (const qse_ip6ad_t* ipaddr) QSE_CPP_NOEXCEPT
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(AF_INET6)
 | 
					#if defined(AF_INET6)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user