- 締切済み
ソケットを使ったプログラムにおいて
こんにちは。 winsockを使って、2PC間での通信を行いたいのですが、sockaddr_in構造体は struct sockaddr_in echoServAddr; echoServAddr.sin_family = AF_INET; echoServAddr.sin_addr.s_addr = inet_addr(servIP); echoServAddr.sin_port = htons(echoServPort); と表記されると思いますが、2PCをクロスケーブルでつないで相手を認識したい場合、servIPの値はどうなりますか? ご教授下さい。 環境: VC++ 6.0(SP5)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- MrBan
- ベストアンサー率53% (331/615)
・各マシンで以下のコマンドを実行して、正しくIPアドレスが表示されますか。(正しく設定できてなかったり) > ipconfig ・各マシンにファイアウォール/セキュリティソフトなどは入っていますか。(ブロックしてたり…ログに記録されてるかも) ・使用しているOSはなんですか。(XPSP2だとpingに応答しない設定になってたり) ・送受信部のソースはどうなっていますか(バグってるかも) ethereal(やwireshark他)等でキャプチャしてみると、 流れているパケットを監視してみることができます。 ちゃんと出てるかどうか/パケットはどうやり取りされるか、 等もわかり易いと思いますので、一度試してみるのもお勧めです。 「ethereal」検索してみてください。
- MrBan
- ベストアンサー率53% (331/615)
inet_addrは問い合わせもせず形式変換するだけなので、クロスケーブルでつないでも何も変わらないかと。 servIPも"xxx.xxx.xxx.xxx"のままだと思います。 相手のマシンのIPアドレスを指定してください。 外部のDHCP等に依存してる等で、クロス環境でIPが振られていないなら、まず設定してください。 # 固定で割り振るなり、2PCのどちらかにDHCPサーバを立てるなり…
補足
回答ありがとうございます。 試してみて動かないのですが、以下の手順はどこか違いますか? ・2PCをクロスケーブルでつなぐ ・ローカルエリア接続でサーバ側のIPを192.168.1.2に設定する これだと、クライアント側のPCからping 192.168.1.2でも応答が返ってきません。 ネットワーク初心者ですので、もしかすると勘違いをしているかもしれません。 間違いをご指摘下されば幸いです。