1
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2
// vim: ts=8 sw=2 smarttab
6
#include <sys/socket.h>
7
#include <netinet/in.h>
10
#include <sys/socket.h>
15
inline ostream& operator<<(ostream& out, const sockaddr_storage &ss)
17
char buf[NI_MAXHOST] = { 0 };
18
char serv[20] = { 0 };
19
getnameinfo((struct sockaddr *)&ss, sizeof(ss), buf, sizeof(buf),
21
NI_NUMERICHOST | NI_NUMERICSERV);
22
return out //<< ss.ss_family << ":"
23
<< buf << ':' << serv;
26
inline ostream& operator<<(ostream& out, const sockaddr_in &ss)
28
char buf[NI_MAXHOST] = { 0 };
29
char serv[20] = { 0 };
30
getnameinfo((struct sockaddr *)&ss, sizeof(ss), buf, sizeof(buf),
32
NI_NUMERICHOST | NI_NUMERICSERV);
33
return out //<< ss.sin_family << ":"
34
<< buf << ':' << serv;
38
extern int tcp_read(int sd, char *buf, int len);
39
extern int tcp_write(int sd, const char *buf, int len);
42
extern int tcp_hostlookup(char *str, sockaddr_in& ta);
44
inline bool operator==(const sockaddr_in& a, const sockaddr_in& b) {
45
return strncmp((const char*)&a, (const char*)&b, sizeof(a)) == 0;
47
inline bool operator!=(const sockaddr_in& a, const sockaddr_in& b) {
48
return strncmp((const char*)&a, (const char*)&b, sizeof(a)) != 0;