опубликован 05-06-2001 16:28 MSK
вот наткнулся на функции следующего рода:char *inet_ntoa(unsigned long cp)
{
static char Buffer[16];
int j, NrDig = 0;
for (j = 0; j < 4; j++) {
NrDig += sprintf(Buffer + NrDig, "%d%s", ((BYTE *)&cp)[j], (j == 3) ? "" : ".");
}
Buffer[NrDig] = '\0';
return Buffer;
}
int sendto(SOCKET s, char *msg, int len, int flags,
struct sockaddr *to, int tolen)
{
SO_ADDRESS ToAddress;
DATALINK *DataBuf;
int ErrCode;
if (!LOCPORTBOUND(((struct _socket *)s))) {
return NOTBOUND;
}
if (tolen != sizeof(struct sockaddr_in)) {
return ILLADDSIZE;
}
if ((ErrCode = ((struct _socket *)s)->So_Error) != NOERR) {
((struct _socket *)s)->So_Error = NOERR;
return ErrCode;
}
if ((DataBuf = IPDataLinkGet(len)) == NULL) {
IPReport(NOSPACE, NULL, NULL);
return NOBUFS;
}
DataBuf->ThisType = DATAHD;
memcpy(DataBuf->DataStart, msg, len); /* copy message from user space */
ToAddress.Port = ntohs(((struct sockaddr_in *)to)->sin_port);
ToAddress.IPAddress = ((struct sockaddr_in *)to)->sin_addr.s_addr;
return (*(((struct _socket *)s)->So_Prot->UserReq))
(PRU_SENDTO, s, DataBuf,
&(((struct _socket *)s)->So_LocAdd), &ToAddress);
}
енто случаем не те самые, которые мы хорошо знаем ? :)