お世話になっています。
今回、Skypeのようなチャットツールの簡易版(とりあえずテキストのやり取りが出来る程度)を製作しようと張り切っています。(夏休みですし)
ネットワークプログラミングをやるのはこれが初めてのようなものです。
さまざまなサイト様をめぐりながらプログラムを作っているのですが、
やはり分からないことだらけで困っています。
1:PCに接続できない
昔の環境は図1のような形だったのですが、現在、事情により図2のような環境になっています。
※リンク修正
http://www.holygate.jpn.org/Data/zu.jpg
図1の環境では普通にIPアドレスを指定するだけで接続できたのですが、
図2の環境ではそれだと接続できずにエラーが返ってきます。
エラーが返ってくるのは、connect関数です。
ただし、図2の環境でも、IPアドレスをローカルのもの(192.168.1.*)で、
192.168.1.4とすると接続できました。
ただ、これをネットワーク上のパソコンでやるときはどうしたらいいかがわかりません。
2:ソフト内で行われている処理と非同期通信
下のサイト様を拝見しながらやっていました。
http://yonex1.cis.ibaraki.ac.jp/~yoneku ... ure03.html
順序だてて詳しく説明してくださっているのですが、いまいちよく分からない部分があります。
今回の目標はチャットツールで、上のサイト様を見る限り、
ソフトひとつでクライアントとサーバーの機能を持っていないといけないと読み取れます。
また、常に相手からの応答を確認しないといけません。
とりあえず、常に相手からの応答の確認(非同期通信?)は、
WSAAsyncSelect関数を使うということで、
WSAAsyncSelect(ソケット関数の戻り値,hMainWnd,???,?)
と、半分はてなですが、
特に第三引数の値がいまいち分かりません。
おそらく、コールバック関数のdwMsgに値が返るようにするのかな?
と思っていますが、結局何を指定するのかが分かりません。
第四引数は、そのdwMsgにメッセージ(「接続してきた」や、「データが来た」など)を通知するものを指定するのだと思っています。
そして一番分からないのが、この関数をどのように使うのか。
関数を呼んで、そこからメッセージが来るまでずっとループさせておけばいいのでしょうか。
まったく分かっていなくて申し訳ないですが、ご存知の方、お分かりの方がいらっしゃいましたらご教示ください。
お願いします。