31 #include <sys/types.h> 32 #include <sys/timeb.h> 52 #define HOST_ID_ARRAY_SIZE 8 65 #if defined (ENABLE_UNUSED_FUNCTION) 73 css_get_wsa_error (
void)
96 WORD wVersionRequested;
102 wVersionRequested = 0x101;
103 err = WSAStartup (wVersionRequested, &wsaData);
125 (void) WSACleanup ();
147 (void) WSASetBlockingHook (
old_hook);
189 struct hostent *dest_host;
190 unsigned int remote_ip;
191 struct sockaddr_in addr;
197 remote_ip = inet_addr (host_name);
201 dest_host = gethostbyname (host_name);
202 if (dest_host ==
NULL)
207 remote_ip = *((
unsigned int *) (dest_host->h_addr));
222 s = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
229 addr.sin_family = AF_INET;
230 addr.sin_port =
htons (port);
231 addr.sin_addr.s_addr = remote_ip;
240 if (connect (s, (
struct sockaddr *) &addr,
sizeof (addr)) != SOCKET_ERROR)
246 err = WSAGetLastError ();
247 (void) closesocket (s);
249 if (err != WSAECONNREFUSED && err != WSAETIMEDOUT)
277 (void) setsockopt (s, SOL_SOCKET, SO_KEEPALIVE, (
const char *) &bool_value,
sizeof (int));
281 (void) setsockopt (s, IPPROTO_TCP, TCP_NODELAY, (
const char *) &bool_value,
sizeof (int));
311 rc = ioctlsocket (fd, FIONREAD, &count);
312 if (rc == SOCKET_ERROR)
320 #if defined (ENABLE_UNUSED_FUNCTION) 330 int error_size =
sizeof (int);
332 if (getsockopt (fd, SOL_SOCKET, SO_ERROR, (
char *) &error_code, &error_size) == SOCKET_ERROR || error_code != 0
351 const char *pc_name =
"PC";
355 #if !defined(SERVER_MODE) 371 err = WSAGetLastError ();
374 #if !defined(SERVER_MODE) 378 strncpy (name, pc_name, namelen);
395 #if !defined(SERVER_MODE) 410 inaddr = inet_addr (hostname);
417 hp = gethostbyname (hostname);
420 retval = (*(
unsigned int *) hp->h_addr);
430 #if !defined(SERVER_MODE) 525 struct sockaddr_in tcp_srv_addr;
539 memset ((
void *) &tcp_srv_addr, 0,
sizeof (tcp_srv_addr));
540 tcp_srv_addr.sin_family = AF_INET;
541 tcp_srv_addr.sin_addr.s_addr =
htonl (INADDR_ANY);
545 tcp_srv_addr.sin_port =
htons (port);
559 sock = socket (AF_INET, SOCK_STREAM, 0);
572 setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, (
const char *) &bool_value,
sizeof (
int));
575 setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, (
const char *) &bool_value,
sizeof (
int));
577 if (bind (sock, (
struct sockaddr *) &tcp_srv_addr,
sizeof (tcp_srv_addr)) == SOCKET_ERROR)
579 if (WSAGetLastError () == WSAEADDRINUSE && retry_count <= 5)
611 struct sockaddr_in tcp_cli_addr;
617 clilen =
sizeof (tcp_cli_addr);
618 newsockfd = accept (sockfd, (
struct sockaddr *) &tcp_cli_addr, &clilen);
622 error = WSAGetLastError ();
623 if (error == WSAEINTR)
659 struct sockaddr_in tcp_srv_addr;
664 #if !defined(SERVER_MODE) 672 fd = socket (AF_INET, SOCK_STREAM, 0);
680 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (
const char *) &bool_value,
sizeof (
int));
684 setsockopt (fd, SOL_SOCKET, SO_KEEPALIVE, (
const char *) &bool_value,
sizeof (
int));
691 memset ((
void *) &tcp_srv_addr, 0,
sizeof (tcp_srv_addr));
692 tcp_srv_addr.sin_family = AF_INET;
693 tcp_srv_addr.sin_addr.s_addr =
htonl (INADDR_ANY);
694 tcp_srv_addr.sin_port = 0;
698 if (bind (fd, (
struct sockaddr *) &tcp_srv_addr,
sizeof (tcp_srv_addr)) == SOCKET_ERROR)
704 get_length =
sizeof (tcp_srv_addr);
705 if (getsockname (fd, (
struct sockaddr *) &tcp_srv_addr, &get_length) == SOCKET_ERROR)
722 return (
int)
ntohs (tcp_srv_addr.sin_port);
773 struct sockaddr_in saddr_buf;
774 struct sockaddr *saddr;
777 saddr = (
struct sockaddr *) &saddr_buf;
778 saddr_len =
sizeof (saddr_buf);
779 if (getpeername (sockfd, saddr, &saddr_len) != 0)
781 return WSAGetLastError ();
783 return getnameinfo (saddr, saddr_len, hostname, (DWORD) len,
NULL, 0, NI_NOFQDN);
795 struct sockaddr_in saddr_buf;
796 struct sockaddr *saddr;
799 saddr = (
struct sockaddr *) &saddr_buf;
800 saddr_len =
sizeof (saddr_buf);
801 if (getsockname (sockfd, saddr, &saddr_len) != 0)
803 return WSAGetLastError ();
805 return getnameinfo (saddr, saddr_len, hostname, (DWORD) len,
NULL, 0, NI_NOFQDN);
817 unsigned int in_addr;
820 #if !defined(SERVER_MODE) 831 in_addr = inet_addr (host);
834 memcpy ((
void *) ip_addr, (
void *) &in_addr,
sizeof (in_addr));
840 hp = gethostbyname (host);
848 memcpy ((
void *) ip_addr, (
void *) hp->h_addr, hp->h_length);
852 #if !defined(SERVER_MODE) void css_close_server_connection_socket(void)
SOCKET css_tcp_client_open(const char *host_name, int port)
int css_open_server_connection_socket(void)
unsigned int htonl(unsigned int from)
#define ER_CSS_WINSOCK_HOSTID
bool css_tcp_listen_server_datagram(SOCKET sockfd, SOCKET *newfd)
#define ERR_CSS_WINTCP_PORT_ERROR
int css_gethostname(char *name, size_t namelen)
int css_hostname_to_ip(const char *host, unsigned char *ip_addr)
int css_get_peer_name(SOCKET sockfd, char *hostname, size_t len)
int css_get_max_socket_fds(void)
bool css_windows_blocking_hook(void)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
static int max_socket_fds
static unsigned int wsa_Init_count
static const int css_Tcp_max_connect_tries
int css_get_sock_name(SOCKET sockfd, char *hostname, size_t len)
bool css_transfer_fd(SOCKET server_fd, SOCKET client_fd, unsigned short rid, CSS_SERVER_REQUEST request)
#define IS_INVALID_SOCKET(socket)
SOCKET css_tcp_client_open_with_retry(const char *host_name, int port, bool will_retry)
bool css_tcp_master_datagram(char *pathname, SOCKET *sockfd)
SOCKET css_server_accept(SOCKET sockfd)
unsigned short htons(unsigned short from)
SOCKET css_Server_connection_socket
void er_set_with_oserror(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
#define ER_CSS_WINSOCK_STARTUP
bool css_tcp_setup_server_datagram(char *pathname, SOCKET *sockfd)
static void error(const char *msg)
static SOCKET css_accept(SOCKET sockfd)
unsigned int css_gethostid(void)
static const int css_Maximum_server_count
static unsigned int css_fd_error(SOCKET fd)
int css_windows_startup(void)
unsigned short ntohs(unsigned short from)
void css_windows_shutdown(void)
bool prm_get_bool_value(PARAM_ID prm_id)
#define ERR_CSS_WINTCP_BIND_ABORT
int css_tcp_master_open(int port, SOCKET *sockfd)
#define ERR_CSS_TCP_CANNOT_CONNECT_TO_MASTER
enum css_server_request CSS_SERVER_REQUEST
SOCKET css_open_new_socket_from_master(SOCKET fd, unsigned short *rid)
#define ERR_CSS_WINTCP_CANNOT_CREATE_STREAM
#define ER_CSS_WINSOCK_HOSTNAME
#define CUB_MAXHOSTNAMELEN
SOCKET css_master_accept(SOCKET sockfd)
void css_shutdown_socket(SOCKET fd)
#define ERR_CSS_WINTCP_ACCEPT_ERROR