Mercurial > repos > rhope
comparison runtime/net.c @ 152:e9a8269384bb
Add support for opening a new TCP connection and fix bug in Read Delim
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 05 Dec 2010 18:04:54 -0500 |
parents | 7bbdc034e347 |
children | 47ab97730865 |
comparison
equal
deleted
inserted
replaced
151:b75ec364cecc | 152:e9a8269384bb |
---|---|
35 { | 35 { |
36 char portstr[6]; | 36 char portstr[6]; |
37 int sockfd,flag=1; | 37 int sockfd,flag=1; |
38 struct addrinfo hints, *localaddr; | 38 struct addrinfo hints, *localaddr; |
39 | 39 |
40 snprintf(portstr, 6, "%d", port & 0XFFFF); | 40 snprintf(portstr, 6, "%d", port & 0xFFFF); |
41 | 41 |
42 memset(&hints, 0, sizeof(hints)); | 42 memset(&hints, 0, sizeof(hints)); |
43 hints.ai_family = AF_UNSPEC; | 43 hints.ai_family = AF_UNSPEC; |
44 hints.ai_socktype = SOCK_STREAM; | 44 hints.ai_socktype = SOCK_STREAM; |
45 hints.ai_flags = AI_PASSIVE; | 45 hints.ai_flags = AI_PASSIVE; |
61 } | 61 } |
62 freeaddrinfo(localaddr); | 62 freeaddrinfo(localaddr); |
63 return sockfd; | 63 return sockfd; |
64 } | 64 } |
65 | 65 |
66 int _internal_connectnewsocket(char * addr, int32_t port) | |
67 { | |
68 char portstr[6]; | |
69 struct addrinfo hints, *res; | |
70 int sock; | |
71 | |
72 memset(&hints, 0, sizeof(hints)); | |
73 hints.ai_family = AF_UNSPEC; | |
74 hints.ai_socktype = SOCK_STREAM; | |
75 | |
76 snprintf(portstr, 6, "%d", port & 0xFFFF); | |
77 if(getaddrinfo(addr, portstr, &hints, &res)) | |
78 return -1; | |
79 if(-1 == (sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol))) | |
80 return -1; | |
81 | |
82 if(connect(sock, res->ai_addr, res->ai_addrlen)) | |
83 { | |
84 close(sock); | |
85 sock = -1; | |
86 } | |
87 freeaddrinfo(res); | |
88 return sock; | |
89 } | |
90 |