57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
{
if (sock != INVALID_SOCKET)
close(sock);
return [super free];
}
- setSocket: (int)socket
{
sock = socket;
return self;
}
- setSocketAddress: (struct sockaddr*)sockaddr
withLength: (socklen_t)len
{
saddr = sockaddr;
saddr_len = len;
return self;
}
- connectTo: (const char*)host
onPort: (uint16_t)port
{
struct addrinfo hints, *res, *res0;
char portstr[6];
if (!port)
|
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
-
-
-
+
+
+
|
}
if ((s = accept(sock, addr, &addrlen)) == INVALID_SOCKET) {
[newsock free];
@throw [OFAcceptFailedException newWithClass: isa];
}
[newsock setSocket: s];
[newsock setSocketAddress: addr
withLength: addrlen];
newsock->sock = s;
newsock->saddr = addr;
newsock->saddr_len = addrlen;
return newsock;
}
- (size_t)readNBytes: (size_t)size
intoBuffer: (char*)buf
{
|