ネットワーク通信について

解決


ken  2007-09-13 16:00:13  No: 66316  IP: 192.*.*.*

クライアントとサーバーがデータをやり取りする際に殆どのアプリがWinSockのAPIを使用しますがWinSockを使わずにSOCKET、SEND、RECV等の処理をすることはできませんか?探してみましたがどこにも載ってませんでしたので書きました。

編集 削除
yoh2  2007-09-13 22:06:14  No: 66317  IP: 192.*.*.*

なぜWinsockを使わない方法を探しているかにもよりますが、
WinsockのAPIを直接使わない、というだけなら、MFCのCSocket等の各種ネットワーク系クラスや
.NET FrameworkのSystem.Netを利用したり、VCからは離れてしまいますが、
Cygwin経由でBSDソケットを利用したりする方法があります。
ただし、おそらく上記のいずれも内部ではWinsockを使っていると思われます。

内部的にもWinsockを一切使いたくない、というなら、ネットワークドライバを一から
書き上げるくらいの根性は必要になるのではないかと。

編集 削除
エスパー  2007-09-14 12:38:21  No: 66318  IP: 192.*.*.*

まあエスパーで通訳してみると
>通信したいけど、WinSockが分からないor勉強するのが嫌なので
>もっと簡単な方法はありませんか?
ということじゃいのかな?
とりあえずもうちょっと詳しく質問しなおすべき。

>内部的にもWinsockを一切使いたくない
もしこう思っているなら、OSをlinuxに変えてSOCKET通信するのが一番簡単だろうね。本末転倒だろうけど。

編集 削除
ken  2007-09-14 15:32:23  No: 66319  IP: 192.*.*.*

>OSをlinuxに変えてSOCKET通信するのが一番簡単だろうね。
Windows環境で通信用DLLを作ってアプリが通信を行いたいです。

編集 削除
ken  2007-09-14 16:40:07  No: 66320  IP: 192.*.*.*

上の文章だとわかりづらい部分がありそうなのでもう1度書きます。
アプリ自身が直接APIを呼び出さないで通信を行うのはかなり手間が掛かりそうなのでWinSock DLLみたいに通信APIが実装されてるDLLを自前で用意してみたいです。そうする為には当然APIが備わったDLLを作らないといけないのでかなり大変ですよね?

本件は通信用のAPIを実装して通信を行うことです。

編集 削除
tetrapod  2007-09-14 18:04:21  No: 66321  IP: 192.*.*.*

その通信用 API ってのが WinSock なわけだが?

> 本件は通信用のAPIを実装して通信を行うことです。
TCP や UDP を自前で実装する気?正気?
それとも俺俺プロトコルの通信を俺俺ハードウェア上に実装するのかな?

前者ならやめといたほうがいい。単なる車輪の再実装にすぎないから。
後者ならがんばってね。

編集 削除
エスパー  2007-09-14 18:15:55  No: 66322  IP: 192.*.*.*

>かなり大変ですよね?
シリコンレベルからPCハードウェアを自作するぐらい大変ですw
本当にありがとうございました。

編集 削除
エスパー  2007-09-14 18:19:08  No: 66323  IP: 192.*.*.*

あ、すまん。その例えすら分からない可能性があるか。
鉄やゴムから自動車を自作するぐらい大変…て言えば理解できる?

編集 削除
ken  2007-09-14 19:15:11  No: 66324  IP: 192.*.*.*

>TCP や UDP を自前で実装する気?正気?
そこまで難しいことではなくSOCKETやSEND RECVなどの通信に必要なものをWinSockやWinInetをまったく使わずに自前でDLLに実装したいってことですかね。

編集 削除
ken  2007-09-14 19:22:34  No: 66325  IP: 192.*.*.*

TCPとかUDPなどのプロトコルは使わないとしょうがないでしょう
それは諦めていたし方ありませんね。だけどAPIのソケット関数などをWinsockを呼び出さないで行えたらいいと思ってます。OSのネットワークAPIの一部分の自作ってもんですかね。

編集 削除
とおりすがり  2007-09-14 19:47:08  No: 66326  IP: 192.*.*.*

おいおいw
SOCKET通信って何か分かってる?APIって何か分かってる?そこらへんから勉強しなおしなさい。
中級者マークがついてるけど、どうみても初心者や入門者レベルの知識しか無いでしょう、君。

編集 削除
ken  2007-09-14 20:10:17  No: 66327  IP: 192.*.*.*

>SOCKET通信って何か分かってる?APIって何か分かってる?そこらへんから勉強しなおしなさい。
普通にわかってますけどww
クライアントとサーバー同士の通信のことを言いますね。別に誰でも知ってることだと思いますよwww


本件に入りますがOSの自作に近いことをしてるみたいです。
正し自作と言ってもOSの一部分(ネットワークAPI関数)にすぎませんね。

編集 削除
とおりすがり  2007-09-14 20:37:56  No: 66328  IP: 192.*.*.*

やれやれw

>クライアントとサーバー同士の通信のことを言いますね。
SOCKET通信とクラサバの概念は無関係。例えばSOCKETを使ったP2Pなんかではサーバは存在しない。

他にも色々勘違いしてると思うけど、恥を晒すだけなのでもうやめときなされ。勉強して出直しなさい。

編集 削除
ken  2007-09-14 20:49:35  No: 66329  IP: 192.*.*.*

>>とおりすがり
P2Pなんか誰も聞いてませんよwww
知ったかkunnには聞いてないので返信しないでくださいごめんなさい。

とりあえず他の人は返信してください。

編集 削除
ken  2007-09-14 20:54:48  No: 66330  IP: 192.*.*.*

それと私が聞いてるのはOSのネットワークシステムを自前で用意することですのでOSで用意されてる関数等は一切使いません。

編集 削除
とおりすがり  2007-09-14 21:07:49  No: 66331  IP: 192.*.*.*

ああ、やべ。acceptする方がサーバで、connectする方がクライアントと言う意味では君の書き方でも正しいか。こりゃ失礼。
長年SOCKET使ってると、そのレベルの概念は忘れてしまうな。

でも君が根本的に色々勘違いしてるのは変わんないんで、そこんとこよろしくw

編集 削除
yoh2  2007-09-14 23:59:19  No: 66332  IP: 192.*.*.*

> TCPとかUDPなどのプロトコルは使わないとしょうがないでしょう

Windowsでは、TCP/IPプロトコルスタックを実装しているのはWinsock (*) ですので、
Winsockを使わないと決めた時点で、TCPやUDP、それどころかIPやARPあたりまで
自前で実装する必要が出てきます。
まあ、サードパーティー製のライブラリを探せばその辺の実装はサボれるかもしれません
が、自前でネットワークAPIの実装をするというkenさんの目的には合わないでしょうね。

(*)というより、Winsockの枠組みに載るような形でTCP/IPが実装されている。


> OSで用意されてる関数等は一切使いません。

とはいっても、OSは、ユーザーがあまり好き勝手できないように権限を制限するのも仕事の
うちですので、OSで提供されているインターフェイスを全く使わない、というわけには
いきません。
NDISあたりのレイヤから上位を実装する程度(これだけでもとんでもない労力が必要に
なりますが)で妥協できないものでしょうか。

編集 削除
ken  2007-09-15 00:05:45  No: 66333  IP: 192.*.*.*

返信ありがとうございます。
http://www.vector.co.jp/soft/dl/win95/net/se208700.html
みたいなソケットライブラリを作ってみたいんですがどこから手をつければいいですかね?

編集 削除
ken  2007-09-15 00:11:33  No: 66334  IP: 192.*.*.*

ん〜
上のサイトのものはどうやら内部上ではWinSockを使ってるみたいですので違うものですね。
ソケットライブラリ(DLL、LIB)までを作ってVCの開発環境でコンパイルしてみるのがいいんですが。内部からも使わないとなるとものすごく大変ですね。

編集 削除
 2007-09-15 01:25:45  No: 66335  IP: 192.*.*.*

多分ドライバレベルのものを作りたいのでしょう。
私には回答できませんが面白い話ではあります。

NetBiosの層まで下がらないといけなそうです。
http://www.ouk.jp/ogawa/treecrsdx/index.cgi
で再度質問してみてはどうですか?

編集 削除
 2007-09-15 02:06:02  No: 66336  IP: 192.*.*.*

え〜、やりたいことはこんなのだと思いますが
http://hp.vector.co.jp/authors/VA015591/
ソースもあるのでこの辺でどうでしょう。

凄い人もいるもんだ

編集 削除
アルゴス  2007-09-15 02:09:39  No: 66337  IP: 192.*.*.*

ドライバなんて作ったこと無い奴らが想像だけで話してもしょうがないと思われ。
無責任に勘違いを助長させるのもどうかと思うぞ。

編集 削除
ken  2007-09-15 17:55:24  No: 66338  IP: 192.*.*.*

私みたいな中級レベルではきりがなさそうのでやめときます。単なる難しいってレベルではなく不可能に近い難易度なのでもっと技術を付けてからにしようかと。以後このスレには書き込みません。

編集 削除
エスパー  2007-09-15 18:14:07  No: 66339  IP: 192.*.*.*

だから最初から自動車を自作するぐらい大変って言ってるでしょw
君が素人過ぎて理解できなかっただけなのに。
なのにやっぱり自分は中級者ですかw

編集 削除
a  2007-10-19 16:34:14  No: 66340  IP: 192.*.*.*

解決させました

編集 削除
b  2007-10-21 17:30:20  No: 66341  IP: 192.*.*.*

本人じゃないなら勝手に解決にするのもどうかと思いますが。
百歩譲って解決にするのがOKだとしても、他にも未解決はたくさんあるのに何故これだけ?

編集 削除
a  2007-12-03 02:36:45  No: 66342  IP: 192.*.*.*

解決させました

編集 削除