1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
class tcp_socket
{
private:
int sock;
public:
int sopen (char *host, int port)
{
int x = -1;
struct hostent *foo = NULL;
struct sockaddr_in addr;
memset ((struct sockaddr_in *) &addr, 0, sizeof (struct sockaddr_in));
if ((addr.sin_addr.s_addr = inet_addr (host)) == -1)
{
if ((foo = gethostbyname (host)) == NULL)
return -2;
addr.sin_addr.s_addr = *(unsigned long *) (foo->h_addr_list[0]);
}
addr.sin_family = PF_INET;
addr.sin_port = htons (port);
sock = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
x = connect (sock, (struct sockaddr *) &addr, sizeof (struct sockaddr_in));
if (x != 0 || sock < 0)
return -1;
return 0;
}
char *sread (int x)
{
char *y = NULL;
y = (char *) malloc (x + 1);
memset (y, 0x00, x + 1);
if (read (sock, y, x) < 1)
{
free (y);
return NULL;
}
return y;
}
int swrite (char *x)
{
return write (sock, x, strlen (x));
}
void sclose ()
{
close (sock);
}
void
init ()
{
sock = 0;
}
};
|