- ベストアンサー
ソケットプログラミングについて
ソケットプログラミング(ネットワーク?)をはじめようと思うのですが(使用する言語はCあるいはC++) その場合のOSとして UNIX、Linux、Windows のどれが適しているでしょうか ちなみに、メールサーバや、APACHの様なHTTPサーバを作れる様にまでなりたいです (その他にもFTP等) ちなみに私はUNIXや、Linuxだと思っていますが、Windows との文法の違いはどれくらいあるのでしょうか
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
私もunix(≒linux)をすすめます。 単純にソケット作って、send,recv程度なら違いはそれほどは無いと思いますが、 非同期に動かすとか、サーバーでスレッドなりプロセスなりがからんでくると、OSの違いや、OSの一部であるunixソケットとライブラリ(?)であるwinsockの違いがいろいろと出てきます。 ソケットそのものの違いというより、OSの違いの影響が大きいという感じです。 ソケットを使うなら、資料等もunix側の方が豊富でしょうから、unix側をすすめます。 Windowsだと純粋なsocket(winsock)よりクラスライブラリなんかの方が豊富な感じがしますし、それだと作るのは簡単になりますが細かいことが出来ない、わからないとか出てくると思いますので、 最終目標がサーバー作成にあるなら変にラップされているものは避けておいたが方がいいかも知れません。 あと、winsockは.NET 2003とMSDN入れていても日本語のヘルプが無かったりしますし。 まあ、unixも日本語マニュアルない場合もありますが。 あとは、socketそのものだけでなくTCP/IPについてもよく知っている必要があると思います。 一応、unix,windows,他各種OSでプログラム経験有り。
その他の回答 (5)
- joe-
- ベストアンサー率34% (11/32)
とりあえず、ご自身が使いやすいOSで書いてみてはどうでしょうか? インターネットの構造として通信相手のOSはあまり関係なく、通信の行い方の根本は一緒なので、APIが多少違っても裏でやっていることは大体一緒な事が多いです。 以下のサイトにlinuxとwinsockで簡単なHTTPサーバのサンプルプログラムがあるのでとりあえず、両方で書いてみてはどうでしょうか? http://www.geekpage.jp/programming/linux-network/ http://www.geekpage.jp/programming/winsock/ 書いて試してみて気に入った方を掘り下げていくのが良いと思います。
お礼
有難うございました。 サーバのサンプルは大変参考になりました。
- aozola
- ベストアンサー率12% (72/563)
UNIX系(Linuxも含む)、のほうがいいと思いますよ、ウインドウズだとツールを買わないといけない事が多いですし、ツールを使うと内部をツールが勝手にやってしまって、あんまりわからないときがありますから、学習には向いてないかなと思います。
お礼
ツールですか・・・・ 現在はボーランド(無料)のC/C++コンパイラがありますが それ以外に何か必要なのでしょうか
- tatsu99
- ベストアンサー率52% (391/751)
一応個人的な見解ということになりますが。 >UNIX、Linux、Windows >のどれが適しているでしょうか Unix(linux含む)が適しています。 >ちなみに私はUNIXや、Linuxだと思っていますが、Windowsとの文法の違いはどれくらいあるのでしょうか 文法の違いと言うよりは、呼び出すAPI(システムコール又は共通サブルーチン)が異なります。 UnixとLinuxの場合は、呼び出すAPIがおなじものですが、Windowsの場合は、Winsockといって全くべつものになります。Windowsに関するプログラミングを相当された方でないなら、Unix(linux)でソケットプログラミングから入られた方が敷居が低くなります。 上記の理由から、Unix(linux)で勉強されることを薦めます。
お礼
APIの違いですか・・・ とりあいず、WinSockの方をやってから、UNIXの方のAPI(Berkele API?)をやってみたいと思います 質問に答えてくださりありがとう御座います
昔は UNIX、Linux 系でなければ駄目だと言われていましたが、これは単にOSの安定性能に関して不安があったからです。 現在では、どれで作っても構いません。安定性能はプログラマーの能力で決まります。 文法とは言語レベルで変わるものですので、OSレベルでの文法の違いというのは答えられません。 質問の本質としては、「どのような環境の方が作りやすいか」でしょうか? もしそうならば、ウィンドウズの方がより製作環境を構築しやすいかと。
お礼
質問に答えてくださりありがとう御座いました WinSockでやる事も考えておきたいと思います
- t_nojiri
- ベストアンサー率28% (595/2071)
はあ? どれでもいいよ。それより >ソケットプログラミング(ネットワーク?)をはじめようと思うのですが(使用する言語はCあるいはC++) >その場合のOSとしてUNIX、Linux、Windowsのどれが適しているでしょうか これを聞くことからして何かあなたは勘違いしていると思います。 ネットワーク上の通信は、相手先のOSが何であるかを意識させないように作っているのに、相反する事を聞いているので開発者としては悲しい限りです。 >UNIXや、Linuxだと思っていますが、Windows との文法の違いはどれくらいあるのでしょうか コンパイラや、ヘッダの違いくらいです。 そんなに大した違いは無いけどエンディアンはひっくり返ってる機種も有ります。(INTEL系は特に)
お礼
私がいいたいのは、どれで作るかに適しているかではなく、どの環境で動かすのがいいかです。 判りやすい回答をありがとう御座いました
お礼
大変参考になる意見をありがとうございます。 呼び出すAPIが同じという事は、UNIXの書籍でも、LINUXが学べるという事でしょうか わかりやすい質問をありがとうございました