185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
#endif
if (address1->address.ss_family != address2->address.ss_family)
return false;
switch (address1->address.ss_family) {
case AF_INET:
if (address1->length < sizeof(struct sockaddr_in) ||
address2->length < sizeof(struct sockaddr_in))
@throw [OFInvalidArgumentException exception];
sin_1 = (struct sockaddr_in*)&address1->address;
sin_2 = (struct sockaddr_in*)&address2->address;
if (sin_1->sin_port != sin_2->sin_port)
return false;
if (sin_1->sin_addr.s_addr != sin_2->sin_addr.s_addr)
|
>
>
>
>
>
|
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
#endif
if (address1->address.ss_family != address2->address.ss_family)
return false;
switch (address1->address.ss_family) {
case AF_INET:
#ifndef __wii__
if (address1->length < sizeof(struct sockaddr_in) ||
address2->length < sizeof(struct sockaddr_in))
@throw [OFInvalidArgumentException exception];
#else
if (address1->length < 8 || address2->length < 8)
@throw [OFInvalidArgumentException exception];
#endif
sin_1 = (struct sockaddr_in*)&address1->address;
sin_2 = (struct sockaddr_in*)&address2->address;
if (sin_1->sin_port != sin_2->sin_port)
return false;
if (sin_1->sin_addr.s_addr != sin_2->sin_addr.s_addr)
|
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
size_t i;
#endif
hash += address->address.ss_family;
switch (address->address.ss_family) {
case AF_INET:
if (address->length < sizeof(struct sockaddr_in))
@throw [OFInvalidArgumentException exception];
sin = (struct sockaddr_in*)&address->address;
hash += (sin->sin_port << 1);
hash ^= sin->sin_addr.s_addr;
break;
|
>
>
>
>
>
|
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
|
size_t i;
#endif
hash += address->address.ss_family;
switch (address->address.ss_family) {
case AF_INET:
#ifndef __wii__
if (address->length < sizeof(struct sockaddr_in))
@throw [OFInvalidArgumentException exception];
#else
if (address->length < 8)
@throw [OFInvalidArgumentException exception];
#endif
sin = (struct sockaddr_in*)&address->address;
hash += (sin->sin_port << 1);
hash ^= sin->sin_addr.s_addr;
break;
|
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
|
length: length
block: block];
}
#endif
- (void)sendBuffer: (const void*)buffer
length: (size_t)length
receiver: (of_udp_socket_address_t*)receiver
{
if (_socket == INVALID_SOCKET)
@throw [OFNotOpenException exceptionWithObject: self];
#ifndef _WIN32
if (sendto(_socket, buffer, length, 0,
(struct sockaddr*)&receiver->address, receiver->length) < length)
@throw [OFWriteFailedException
exceptionWithObject: self
requestedLength: length
errNo: of_socket_errno()];
#else
if (length > INT_MAX)
@throw [OFOutOfRangeException exception];
if (sendto(_socket, buffer, (int)length, 0,
(struct sockaddr*)&receiver->address, receiver->length) < length)
@throw [OFWriteFailedException
exceptionWithObject: self
requestedLength: length
errNo: of_socket_errno()];
#endif
}
|
|
>
>
>
|
>
|
>
|
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
|
length: length
block: block];
}
#endif
- (void)sendBuffer: (const void*)buffer
length: (size_t)length
receiver: (const of_udp_socket_address_t*)receiver
{
if (_socket == INVALID_SOCKET)
@throw [OFNotOpenException exceptionWithObject: self];
#ifndef _WIN32
if (length > SSIZE_MAX)
@throw [OFOutOfRangeException exception];
if (sendto(_socket, buffer, length, 0,
(struct sockaddr*)&receiver->address,
receiver->length) != (ssize_t)length)
@throw [OFWriteFailedException
exceptionWithObject: self
requestedLength: length
errNo: of_socket_errno()];
#else
if (length > INT_MAX)
@throw [OFOutOfRangeException exception];
if (sendto(_socket, buffer, (int)length, 0,
(struct sockaddr*)&receiver->address,
receiver->length) != (int)length)
@throw [OFWriteFailedException
exceptionWithObject: self
requestedLength: length
errNo: of_socket_errno()];
#endif
}
|