今、僕はネットワークプログラミングを勉強中です

今日、linuxで教科書の例題レベルの簡単なサーバプログラムを作って
それを実行させて
windowsでwinsock2を用いてクライアントプログラムを作って
実行させて
同じLAN内の違うパソコンにメッセージを送るプログラムを作ったのですが
なぜかconnectができません.

同じLAN内でも
winsock2同士で作ったwindows同士では
メッセージをうまく送れました.

しかし
windowsとlinuxの間だとどうしてもconnectができません

なぜだか全くわかりません.
windows同士, linux同士だとうまくいくようです.

よろしくお願いします.

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>なぜだか全くわかりません.


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

>#3



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

送受信しているネットワークデータのバイトオーダーの整合性は取れていますか?



つまり、ntohl、ntohs、htonl、htons 関数をちゃんと使っていますか?

http://cai.int-univ.com/sugsi/Lecture/NetProg/ch …

当然ながら「サーバプログラムも、クライアントプログラムも、どっちも ntohl、ntohs、htonl、htons 関数をちゃんと呼ばなきゃダメ」です。

>windowsとlinuxの間だとどうしてもconnectができません
>なぜだか全くわかりません.
>windows同士, linux同士だとうまくいくようです.

windows 同士、linux 同士では、多分、バイトオーダーが同じになっているので、バイトオーダーの整合性を取らなくても「バイトオーダーが同じだから、一見、問題が無いかのように動いてしまう」でしょう。

しかし、そのプログラムは、ローカルなバイトオーダーのデータをそのままネットワークに垂れ流しているので、バイトオーダーが異なる同士では動きません。つまり

>windowsとlinuxの間だとどうしてもconnectができません

と言う事が起きる可能性があります。
    • good
    • 0

そもそもネットワーク接続できる状態なのでしょうか?


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

>windowsとlinuxの間だとどうしてもconnectができません



APIに渡してるパラメータや、実際に送受信しているデータがわからないので、このままでは有益な回答は得られないと思います。
下記のサイトなどを参考に、渡しているパラメータや関数の戻り値などを調べてみてはどうでしょうか?

http://www.ibm.com/developerworks/jp/linux/libra …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報