コード例 #1
0
ファイル: socket.c プロジェクト: JackieXie168/movgrab
/* the name... */
int ReconnectSock(int sock, char *Host, int Port, int Flags)
{
    int salen, result;
    struct sockaddr_in sa;
    struct hostent *hostdata;

    sa.sin_family=AF_INET;
    sa.sin_port=htons(Port);

    if (IsAddress(Host))
    {
        inet_aton(Host, (struct in_addr *) &sa.sin_addr);
    }
    else
    {
        hostdata=gethostbyname(Host);
        if (!hostdata)
        {
            return(-1);
        }
        sa.sin_addr=*(struct in_addr *) *hostdata->h_addr_list;
    }

    salen=sizeof(sa);
    if (Flags & CONNECT_NONBLOCK)
    {
        fcntl(sock,F_SETFL,O_NONBLOCK);
    }

    result=connect(sock,(struct sockaddr *)&sa, salen);
    if (result==0) result=TRUE;
    if ((result==-1) && (Flags & CONNECT_NONBLOCK) && (errno == EINPROGRESS)) result=FALSE;
    return(result);
}
コード例 #2
0
ファイル: socket.c プロジェクト: JackieXie168/movgrab
int STREAMSendDgram(STREAM *S, char *Host, int Port, char *Bytes, int len)
{
    struct sockaddr_in sa;
    int salen;
    struct hostent *hostdata;

    sa.sin_port=htons(Port);
    sa.sin_family=AF_INET;
    inet_aton(Host,& sa.sin_addr);
    salen=sizeof(sa);

    if (IsAddress(Host))
    {
        inet_aton(Host, (struct in_addr *) &sa.sin_addr);
    }
    else
    {
        hostdata=gethostbyname(Host);
        if (!hostdata)
        {
            return(-1);
        }
        sa.sin_addr=*(struct in_addr *) *hostdata->h_addr_list;
    }


    return(sendto(S->out_fd,Bytes,len,0,(struct sockaddr *) &sa,salen));
}
コード例 #3
0
ファイル: Socket.cpp プロジェクト: chrisoldwood/NCL
CString CSocket::ResolveStr(const tchar* pszHost)
{
	// Is already an IP address?
	if (IsAddress(pszHost))
		return pszHost;

	in_addr addr;

	// Resolve host name.
	hostent* pHost = gethostbyname(T2A(pszHost));

	if (pHost == nullptr)
		throw CSocketException(CSocketException::E_RESOLVE_FAILED, CWinSock::LastError());

	memcpy(&addr, pHost->h_addr_list[0], pHost->h_length);

	return A2T(inet_ntoa(addr));
}