0

特定のローカルポートを使用して別のTCPサーバーに接続するようにTCPクライアントを構成しようとしています。

以下のコードを使用していますが、機能しません。私が間違っていることを知っていますか、そしてこれが可能かどうか?LINUXマシンを使用しています。

ありがとう

AFG

    int localport=32000;
    m_clientfd = socket( AF_INET, SOCK_STREAM, 0 );
    assert( m_clientfd >= 0 );

    // someone set the localport        
    struct sockaddr_in sa_loc;
    struct hostent* pLocalHostInfo = gethostbyname( "localhost" );
    long LocalHostAddress;
    memcpy( &LocalHostAddress, pLocalHostInfo->h_addr
    , pLocalHostInfo->h_length );

    // Local
    memset(&sa_loc, 0, sizeof(struct sockaddr_in));
    sa_loc.sin_family = AF_INET;
    sa_loc.sin_port = htons(localport);
    sa_loc.sin_addr.s_addr = LocalHostAddress;
    int ret_bind = bind(m_clientfd, (struct sockaddr *)&sa_loc
    , sizeof(struct sockaddr));
    assert( ret_bind != -1 );
4

2 に答える 2

3
int ret_bind = bind(m_clientfd, (struct sockaddr *)&sa_loc,
    sizeof(struct sockaddr));

最後の引数はsizeof(sa_loc)またはである必要がありますsizeof(struct sockaddr_in)

于 2012-07-26T10:58:40.490 に答える
0

以下のコードを使用すると、アプリが機能するようです。ローカル IP の設定を削除するだけで十分でした。

// Local
memset(&sa_loc, 0, sizeof(struct sockaddr_in));
sa_loc.sin_family = AF_INET;
sa_loc.sin_port = htons(localport);
// sa_loc.sin_addr.s_addr = LocalHostAddress; // COMMENT THIS TO WORK
int ret_bind = bind(m_clientfd, (struct sockaddr *)&sa_loc
, sizeof(struct sockaddr));
assert( ret_bind != -1 );
于 2012-07-26T11:38:57.737 に答える