• 締切済み

ネットワークプログラミングについて

今、僕はネットワークプログラミングを勉強中です 今日、linuxで教科書の例題レベルの簡単なサーバプログラムを作って それを実行させて windowsでwinsock2を用いてクライアントプログラムを作って 実行させて 同じLAN内の違うパソコンにメッセージを送るプログラムを作ったのですが なぜかconnectができません. 同じLAN内でも winsock2同士で作ったwindows同士では メッセージをうまく送れました. しかし windowsとlinuxの間だとどうしてもconnectができません なぜだか全くわかりません. windows同士, linux同士だとうまくいくようです. よろしくお願いします.

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.5

>なぜだか全くわかりません. >windows同士, linux同士だとうまくいくようです. windows同士の場合、あるPCが、別のPCに接続しているのでしょうか。それとも、同じPC内で、接続しているのでしょうか。 linux同士についても、同様の質問です。

  • hegemon
  • ベストアンサー率72% (21/29)
回答No.4

>#3 WindowsもLinuxも、一般的な環境はインテルアーキテクチャなので、内部的なバイトオーダーは一緒だと思います。 が、ネットワークでつながる相手が常に同じアーキテクチャとは限りませんから、どちらかがデフォルトでリトルエンディアンに変換している、ということはありえますね。

回答No.3

送受信しているネットワークデータのバイトオーダーの整合性は取れていますか? つまり、ntohl、ntohs、htonl、htons 関数をちゃんと使っていますか? http://cai.int-univ.com/sugsi/Lecture/NetProg/chapter3/byte_order.html 当然ながら「サーバプログラムも、クライアントプログラムも、どっちも ntohl、ntohs、htonl、htons 関数をちゃんと呼ばなきゃダメ」です。 >windowsとlinuxの間だとどうしてもconnectができません >なぜだか全くわかりません. >windows同士, linux同士だとうまくいくようです. windows 同士、linux 同士では、多分、バイトオーダーが同じになっているので、バイトオーダーの整合性を取らなくても「バイトオーダーが同じだから、一見、問題が無いかのように動いてしまう」でしょう。 しかし、そのプログラムは、ローカルなバイトオーダーのデータをそのままネットワークに垂れ流しているので、バイトオーダーが異なる同士では動きません。つまり >windowsとlinuxの間だとどうしてもconnectができません と言う事が起きる可能性があります。

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

そもそもネットワーク接続できる状態なのでしょうか? pingとか、FTPとかで試してみましたか? 「同じLAN内」というだけでは繋がる保証はありません。 また、セキュリティの設定などで、特定の所からしか接続を 受け付けないようになっている場合もあります。 接続に問題無いようなら、WireSharkのようなツールでパケットを モニタしてみては如何でしょうか。

  • hegemon
  • ベストアンサー率72% (21/29)
回答No.1

>windowsとlinuxの間だとどうしてもconnectができません APIに渡してるパラメータや、実際に送受信しているデータがわからないので、このままでは有益な回答は得られないと思います。 下記のサイトなどを参考に、渡しているパラメータや関数の戻り値などを調べてみてはどうでしょうか? http://www.ibm.com/developerworks/jp/linux/library/l-sockpit/index.html

関連するQ&A