クライアントとサーバーがデータをやり取りする際に殆どのアプリがWinSockのAPIを使用しますがWinSockを使わずにSOCKET、SEND、RECV等の処理をすることはできませんか?探してみましたがどこにも載ってませんでしたので書きました。
なぜWinsockを使わない方法を探しているかにもよりますが、
WinsockのAPIを直接使わない、というだけなら、MFCのCSocket等の各種ネットワーク系クラスや
.NET FrameworkのSystem.Netを利用したり、VCからは離れてしまいますが、
Cygwin経由でBSDソケットを利用したりする方法があります。
ただし、おそらく上記のいずれも内部ではWinsockを使っていると思われます。
内部的にもWinsockを一切使いたくない、というなら、ネットワークドライバを一から
書き上げるくらいの根性は必要になるのではないかと。
まあエスパーで通訳してみると
>通信したいけど、WinSockが分からないor勉強するのが嫌なので
>もっと簡単な方法はありませんか?
ということじゃいのかな?
とりあえずもうちょっと詳しく質問しなおすべき。
>内部的にもWinsockを一切使いたくない
もしこう思っているなら、OSをlinuxに変えてSOCKET通信するのが一番簡単だろうね。本末転倒だろうけど。
>OSをlinuxに変えてSOCKET通信するのが一番簡単だろうね。
Windows環境で通信用DLLを作ってアプリが通信を行いたいです。
上の文章だとわかりづらい部分がありそうなのでもう1度書きます。
アプリ自身が直接APIを呼び出さないで通信を行うのはかなり手間が掛かりそうなのでWinSock DLLみたいに通信APIが実装されてるDLLを自前で用意してみたいです。そうする為には当然APIが備わったDLLを作らないといけないのでかなり大変ですよね?
本件は通信用のAPIを実装して通信を行うことです。
その通信用 API ってのが WinSock なわけだが?
> 本件は通信用のAPIを実装して通信を行うことです。
TCP や UDP を自前で実装する気?正気?
それとも俺俺プロトコルの通信を俺俺ハードウェア上に実装するのかな?
前者ならやめといたほうがいい。単なる車輪の再実装にすぎないから。
後者ならがんばってね。
>かなり大変ですよね?
シリコンレベルからPCハードウェアを自作するぐらい大変ですw
本当にありがとうございました。
あ、すまん。その例えすら分からない可能性があるか。
鉄やゴムから自動車を自作するぐらい大変…て言えば理解できる?
>TCP や UDP を自前で実装する気?正気?
そこまで難しいことではなくSOCKETやSEND RECVなどの通信に必要なものをWinSockやWinInetをまったく使わずに自前でDLLに実装したいってことですかね。
TCPとかUDPなどのプロトコルは使わないとしょうがないでしょう
それは諦めていたし方ありませんね。だけどAPIのソケット関数などをWinsockを呼び出さないで行えたらいいと思ってます。OSのネットワークAPIの一部分の自作ってもんですかね。
おいおいw
SOCKET通信って何か分かってる?APIって何か分かってる?そこらへんから勉強しなおしなさい。
中級者マークがついてるけど、どうみても初心者や入門者レベルの知識しか無いでしょう、君。
>SOCKET通信って何か分かってる?APIって何か分かってる?そこらへんから勉強しなおしなさい。
普通にわかってますけどww
クライアントとサーバー同士の通信のことを言いますね。別に誰でも知ってることだと思いますよwww
本件に入りますがOSの自作に近いことをしてるみたいです。
正し自作と言ってもOSの一部分(ネットワークAPI関数)にすぎませんね。
やれやれw
>クライアントとサーバー同士の通信のことを言いますね。
SOCKET通信とクラサバの概念は無関係。例えばSOCKETを使ったP2Pなんかではサーバは存在しない。
他にも色々勘違いしてると思うけど、恥を晒すだけなのでもうやめときなされ。勉強して出直しなさい。
>>とおりすがり
P2Pなんか誰も聞いてませんよwww
知ったかkunnには聞いてないので返信しないでくださいごめんなさい。
とりあえず他の人は返信してください。
それと私が聞いてるのはOSのネットワークシステムを自前で用意することですのでOSで用意されてる関数等は一切使いません。
ああ、やべ。acceptする方がサーバで、connectする方がクライアントと言う意味では君の書き方でも正しいか。こりゃ失礼。
長年SOCKET使ってると、そのレベルの概念は忘れてしまうな。
でも君が根本的に色々勘違いしてるのは変わんないんで、そこんとこよろしくw
> TCPとかUDPなどのプロトコルは使わないとしょうがないでしょう
Windowsでは、TCP/IPプロトコルスタックを実装しているのはWinsock (*) ですので、
Winsockを使わないと決めた時点で、TCPやUDP、それどころかIPやARPあたりまで
自前で実装する必要が出てきます。
まあ、サードパーティー製のライブラリを探せばその辺の実装はサボれるかもしれません
が、自前でネットワークAPIの実装をするというkenさんの目的には合わないでしょうね。
(*)というより、Winsockの枠組みに載るような形でTCP/IPが実装されている。
> OSで用意されてる関数等は一切使いません。
とはいっても、OSは、ユーザーがあまり好き勝手できないように権限を制限するのも仕事の
うちですので、OSで提供されているインターフェイスを全く使わない、というわけには
いきません。
NDISあたりのレイヤから上位を実装する程度(これだけでもとんでもない労力が必要に
なりますが)で妥協できないものでしょうか。
返信ありがとうございます。
http://www.vector.co.jp/soft/dl/win95/net/se208700.html
みたいなソケットライブラリを作ってみたいんですがどこから手をつければいいですかね?
ん〜
上のサイトのものはどうやら内部上ではWinSockを使ってるみたいですので違うものですね。
ソケットライブラリ(DLL、LIB)までを作ってVCの開発環境でコンパイルしてみるのがいいんですが。内部からも使わないとなるとものすごく大変ですね。
多分ドライバレベルのものを作りたいのでしょう。
私には回答できませんが面白い話ではあります。
NetBiosの層まで下がらないといけなそうです。
http://www.ouk.jp/ogawa/treecrsdx/index.cgi
で再度質問してみてはどうですか?
え〜、やりたいことはこんなのだと思いますが
http://hp.vector.co.jp/authors/VA015591/
ソースもあるのでこの辺でどうでしょう。
凄い人もいるもんだ
ドライバなんて作ったこと無い奴らが想像だけで話してもしょうがないと思われ。
無責任に勘違いを助長させるのもどうかと思うぞ。
私みたいな中級レベルではきりがなさそうのでやめときます。単なる難しいってレベルではなく不可能に近い難易度なのでもっと技術を付けてからにしようかと。以後このスレには書き込みません。
だから最初から自動車を自作するぐらい大変って言ってるでしょw
君が素人過ぎて理解できなかっただけなのに。
なのにやっぱり自分は中級者ですかw
解決させました
本人じゃないなら勝手に解決にするのもどうかと思いますが。
百歩譲って解決にするのがOKだとしても、他にも未解決はたくさんあるのに何故これだけ?
解決させました
ツイート | ![]() |