3
Revision 1.4 2003/01/23 14:05:35 ganter
4
added greek translation
7
improved search for libmysqlclient.so
9
Revision 1.3 2002/07/14 18:22:19 ganter
12
Revision 1.2 2002/04/06 00:36:01 ganter
21
#if defined (HAVE_STRINGS_H)
25
#include <sys/types.h>
26
#include <sys/socket.h>
28
#include <netinet/in.h>
32
#include <arpa/inet.h>
34
#if defined (HAVE_SYS_PARAM_H)
35
#include <sys/param.h>
41
#if !defined (INADDR_NONE)
42
#define INADDR_NONE ((in_addr_t)-1)
45
static char mbuf[128];
47
int passivesock(char *service, char *protocol, int qlen)
51
struct sockaddr_in sin;
54
bzero((char *) &sin, sizeof(sin));
55
sin.sin_family = AF_INET;
56
sin.sin_addr.s_addr = INADDR_ANY;
58
if ( (pse = getservbyname(service, protocol)) )
59
sin.sin_port = htons(ntohs((u_short) pse->s_port));
60
else if ((sin.sin_port = htons((u_short) atoi(service))) == 0) {
61
sprintf(mbuf, "Can't get \"%s\" service entry.\n", service);
64
if ((ppe = getprotobyname(protocol)) == 0) {
65
sprintf(mbuf, "Can't get \"%s\" protocol entry.\n", protocol);
68
if (strcmp(protocol, "udp") == 0)
73
s = socket(PF_INET, type, ppe->p_proto);
75
errexit("Can't create socket:");
78
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i)) < 0) {
79
sprintf(mbuf, "Can't set SO_REUSEADDR, port %s", service);
83
if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
84
sprintf(mbuf, "Can't bind to port %s", service);
87
if (type == SOCK_STREAM && listen(s, qlen) < 0) {
88
sprintf(mbuf, "Can't listen on %s port:", service);
94
int passiveTCP(char *service, int qlen)
96
return passivesock(service, "tcp", qlen);
100
int connectsock(char *host, char *service, char *protocol)
104
struct protoent *ppe;
105
struct sockaddr_in sin;
108
bzero((char *) &sin, sizeof(sin));
109
sin.sin_family = AF_INET;
111
if ( (pse = getservbyname(service, protocol)) )
112
sin.sin_port = htons(ntohs((u_short) pse->s_port));
113
else if ((sin.sin_port = htons((u_short) atoi(service))) == 0) {
114
sprintf(mbuf, "Can't get \"%s\" service entry.\n", service);
117
if ( (phe = gethostbyname(host)) )
118
bcopy(phe->h_addr, (char *) &sin.sin_addr, phe->h_length);
119
else if ((sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE) {
120
sprintf(mbuf, "Can't get host entry: \"%s\".\n", host);
123
if ((ppe = getprotobyname(protocol)) == 0) {
124
sprintf(mbuf, "Can't get \"%s\" protocol entry.\n", protocol);
127
if (strcmp(protocol, "udp") == 0)
132
s = socket(PF_INET, type, ppe->p_proto);
134
errexit("Can't create socket:");
136
if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
137
sprintf(mbuf, "Can't connect to %s.%s", host, service);
143
int connectTCP(char *host, char *service)
145
return connectsock(host, service, "tcp");