0

私はクラスのためにCで基本的なプロキシサーバーを書いています。

Firefoxでテストしていますが、サーバーがブラウザーの要求を正常に受信しています。

しかし今、私はそれらをインターネットに送信してブラウザが必要とするページを取得する必要があり、私は躊躇しています。

これが接続用の現在のコードです。

ポート8080が正しいかどうか、また「gethostbyname」に何を入力すればよいかわかりません。それは私がいくつかのアドバイスを得ることを望んでいた部分です。

  int sock = socket( PF_INET, SOCK_STREAM, 0 );

  if ( sock < 0 )
  {
    perror( "socket() failed" );
    return EXIT_FAILURE;
  }

  struct sockaddr_in server;
  struct hostent * hp;

  server.sin_family = PF_INET;
  hp = gethostbyname( "localhost" );
  if ( hp == NULL )
  {
    perror( "Unknown host" );
    return EXIT_FAILURE;
  }

  bcopy( (char *)hp->h_addr, (char *)&server.sin_addr, hp->h_length );
  int port = 8080;
  server.sin_port = htons( port );

  if ( connect( sock, (struct sockaddr *)&server, sizeof( server ) ) < 0 )
  {
    perror( "connect() failed" );
    return EXIT_FAILURE;
  }
4

1 に答える 1

2

そのgethostbyname全体、コピーします(ha-非常に古いbcopyでも)... getaddrinfoを使用します(簡潔にするために省略された広範なエラーチェック):

int ret = getaddrinfo("localhost", "80" /* (or 8080, whichever applies) */, NULL, &res);
if (ret == 0) {
    const struct addrinfo *r;
    for (r = res; r != NULL || ret != 0; r = r->ai_next)
       ret = connect(fd, res->ai_addr, res->ai_addrlen);
}
freeaddrinfo(res);
于 2012-03-14T21:17:11.487 に答える