このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
やっと実装に入れる。
ネットワークプログラミングなので、
同じコンピュータでテストしても面白くない。
そこでプロキシ用にコンピュータを用意した。
まず必要なのが、クライアントの通信を待機するソケット。
ポートは 2121 にしよう。なお、IP は、192.168.0.111 だ。
sockaddr_in を準備。ここは普通の C コード
(クラス化してもいいんだけど……構想中。)
sockaddr_in addr;
memset(&addr, 0, sizeof(sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(2121);
addr.sin_addr.s_addr = inet_addr("192.168.0.111");
ソケットを作成し、Bind/Listen。
auto_ptr<Socket> listener(new Socket(AF_INET, SOCK_STREAM, 0));
// Bind はオーバーロードしてます。
listener->Bind(sockaddr);
listener->Listen(5);
後はクライアントを待ち受けるだけ。
テストなので、421 Service not available. を返します。
プロキシはエラーが起きない限り終了しません(笑)
for (;;) {
// Accept もオーバーロードしてます。
auto_ptr<Socket> client(listener->Accept());
// Send もオ(以下略)
client->Send("421 Service not available.\x0d\x0a");
}
FFFTP で接続。OK 動いた。
…といっても、すぐに切断されることを確認しただけだけど。
クラス化しておくと後が楽やね。
明日はプロキシとしてサーバにつないでみよう。