4
get_local_addr (int fd)
6
struct sockaddr_in addr;
8
socklen_t len = sizeof (addr);
10
ret = getsockname (fd, (struct sockaddr *) &addr, &len);
12
return inet_ntoa (addr.sin_addr);
16
set_sock_nonblock (int sockfd)
19
flags = fcntl (sockfd, F_GETFL, 0);
20
return fcntl (sockfd, F_SETFL, flags | O_NONBLOCK);
27
sock_fd = socket (AF_INET, SOCK_STREAM, 0);
32
tcp_connect (int sock_fd, const char *host, unsigned int port)
34
struct sockaddr_in addr;
38
h = gethostbyname (host);
40
addr.sin_family = h->h_addrtype;
41
memcpy ((char *) &addr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
43
addr.sin_family = AF_INET;
44
addr.sin_addr.s_addr = inet_addr (host);
45
if (addr.sin_addr.s_addr == 0xFFFFFFFF) {
49
addr.sin_port = htons (port);
50
ret = connect (sock_fd, (struct sockaddr *)&addr, sizeof (struct sockaddr));
56
tcp_write (int fd, const char *buf, int n)
66
ret = write (fd, ptr, nleft);
68
if (ret < 0 && errno == EWOULDBLOCK) {
70
} else if (ret < 0 && errno == EINTR) {