ネットワークプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNG0480デフォルトの名無しさん
NGNGありがとうございます。
色々出てきました
0481デフォルトの名無しさん
NGNGopenやpipeとかのハンドルも認識する?
0482デフォルトの名無しさん
NGNGwinsockのselectに入れられるのは、winsockで作ったソケットだけだと思う。
WaitForMultipleObjectsのレイヤまで降りれば、
ソケット/ファイル/パイプ/スレッド/プロセス/メッセージキュー/etc.
(ぶっちゃけた話、非同期処理ほぼすべて)
のイベントを待つことができるんだが...winsockとの絡みが分からん。
詳しい奴の登場を待つ。
0483デフォルトの名無しさん
NGNGplugable protocol handler とかそのへんのドキュメントを
読めば、http(s) や ftp のプロトコルハンドラがTCP/IP を
使っているわけで、wininet はその層については関知していない
ということがわかります。
0484デフォルトの名無しさん
NGNGWindows NT 系列の Winsock2.0 なら、ソケットも
WaitFor*Objectで待てる。
0485デフォルトの名無しさん
NGNGCreatePipeで作ったパイプはWaitFor〜が効かない。
CreateNamedPipeにFILE_FLAG_OVERLAPPEDを与えて
作らないと駄目じゃないかな?
>>484
正しいやり方はWSAAsyncSelectでイベントに結びつけるか、
WSARecvでオーバーラップにしてWaitFor〜でしょ。
どちらにしても、WSAAsyncSelect以外はselectでのポーリング
とロジックの作り方が変わるので注意が必要。
0486デフォルトの名無しさん
NGNG何かいい本、またはホームページはありませんか
あったら教えてください。お願いします
0487デフォルトの名無しさん
NGNG俺は昔のCマガの特集と、極めるVisualC++で勉強した。
結論:いい本で勉強した方が遙かに吸収が早いです。
0489481
NGNGチャットクライアントを作るような場合、
selectをタイムアウト付きでポーリングして、
ユーザー入力にはkbhitで判定するのが一番自然でしょうか?
(WaitFor〜レベルまで降りたくないので)
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG連続してsendしていくと何か問題あるでしょうか?
selectの2番めの引数の使い方がわからないです。
recvならメッセージが着るって事で理解できるんですが。
0493デフォルトの名無しさん
NGNGこれは、そのポートがlistenになっているって事ですか?
そして、要求があれば、acceptするのですか?
そして、例えばプリンタポートが空いていたら、
外部からプリンターの操作が可能になるのですか?
良く分からん。
0494デフォルトの名無しさん
NGNG(sendできない状態ってのを、相手が送信を受け付けて無い状態って前提で話すけど)
sendできない状態でsendしていくと、
ソケットのバッファに溜まっていくんじゃない?
溢れたらエラー返ってくるとか。
(「溢れた場合」ってのがあるのか疑問だけど、恐らく一定サイズで切り上げるんだと思う。)
結局、相手が受信しない限りは、ソケットのsend内部バッファ?に
どんどん溜まっていく筈だから、selectして送信状況を把握していく処理は必要だと思う。
ちなみにこれは推測だから実際の所は知りません。ごめんね。
詳しい人が現れるのを待ちましょう。
0495デフォルトの名無しさん
NGNG恐らく、何らかのサーバーアプリがそのポートにbindしてなければ、
「ポートが空いている」という事では?
使ってたらbindは失敗すると思う。
0496デフォルトの名無しさん
NGNGどうするのでしょうか?
socket関数がINVALID_SOCKETを返すので先に進みません。
0497デフォルトの名無しさん
NGNGhosts参照
0498デフォルトの名無しさん
NGNGINVALID_SOCKETって、socket()が失敗するってこと?ソケット層
のレベルではオンラインもオフラインもないと思うんだけど。
WSAStartup()を呼んでないだけ、なんてオチじゃないよね?(藁
とりあえず、WSAGetLastError()で理由を調べてみましょう。
0499496
NGNGうまく行きそうです。
487さん、498さんありがとうございます。
んー、他のプロセスが一度でもWSAStartup()を呼んでいれば、
エラーにならないのかなぁ。
WSAStartup()が無くてもエラーにならない事があったから…。
0500デフォルトの名無しさん
NGNGソケットとかでいう「ポート」とプリンタポートっていうときの「ポート」は
別物だぜよ。
0501デフォルトの名無しさん
NGNGsendは1度の呼出しで送信可能状態になるまでブロックする。
そのブロックしている間に何かしたいならば、selectを使用する。
ってこと。
sendでブロックしてもいいならsekectしなくても良い。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGWSACleanup() を呼ぶ必要があるのでしょうか?
以下ヘルプ。
>There must be one WSACleanup call corresponding to every successful
>WSAStartup call to allow third-party DLLs to make use of a Windows
>Sockets DLL on behalf of an application. This means, for example,
>that if an application calls WSAStartup three times, it must call
>WSACleanup three times. The first two calls to WSACleanup do nothing
>except decrement an internal counter; the final WSACleanup call for the
>task does all necessary resource deallocation for the task.
0505デフォルトの名無しさん
NGNG他のプロセスは関係ない。自分のプロセス内のDLLが初期化した
場合は使える。>>504の記述にあるとおり、DLLが勝手に初期化
しても平気なように、WSAStartupを呼んだ回数分WSACleanupを
呼ばなきゃいけない仕様になっている。
>>504
内部の実装は知らんが、常識的に考えて失敗した場合も内部の
カウンタを増加するように実装する?つまりそゆこと。
#M$は何でWSAStartupを呼ばなきゃいけないように作ったんだ?
0506デフォルトの名無しさん
NGNGレベル (DLL) でのソケット API サポートだったからでわ。
UNIX はカーネルレベル (って表現で良い?) のサポートだから
初期化はいらない。
0507デフォルトの名無しさん
NGNGしていたわけではなかった (と記憶する)。サードパーティから DLL
形式で Winsock が出ていた。Trumpet Winsock とか、わけ分からず
設定した覚えがある (DNS とか何のことか分からんかった)。途中で
M$ がそれを買ったのかパクッたかして Win 付属の標準ライブラリと
なった。今の Winsock はそのままずるずる引きずってんじゃないの?
(確かに Winsock2 に変わったときに OS レベルでサポートしても
良かったのでは、と思う)
0508505
NGNG他のファイル関係のAPIと同じように、UNIX風の関数は
Cライブラリに取り込めば使い勝手よくなると思うぞ。
CreateSocket()を_socket()で包むような感じで。
ついでにパイプやコンソールもselect出来るようになれば
嬉しいね。何でCreatePipeのハンドルをpolling出来ない
仕様にしたんだろうね。まったく。
0509デフォルトの名無しさん
NGNGselect使えなさスギ
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG直接デバイスドライバとやり取りするのですか?
でも、これだとハード毎に異なりますよねぇ〜。
WinSockのフックは出来たのですが、検出できないアクセスがあるもので…。
0512デフォルトの名無しさん
NGNGパケットの送受信って何を使えばいいのでしょう?
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG0515超初心者
NGNGどうやって指定するのでしょう。マルチキャストがいまいち・・・
またこれを使ってtracerouteの替わりにできるとも聞いたのですが
実際どうなんでしょう。
0516デフォルトの名無しさん
NGNGそんなあなたに ping -f がオススメです
0517デフォルトの名無しさん
NGNGTオプションと言われても実装されている環境によって意味が違うの
では?Win98ではそのようなオプションはありませんでした。
多分「ping -T 値」って指定するのでは?
0518超初心者
NGNGusage: ping [-QRadfnqrv] [-c count] [-i wait] [-l preload] [-p pattern]
[-P policy] [-s packetsize] [-S src_addr] [-t timeout]
[host | [-L] [-I iface] [-T ttl] mcast-group]
こんな感じの環境です
fオプションはないみたいですね。
0519デフォルトの名無しさん
NGNGソケット通信ほとんど素人の者です。
ソケット通信で Send メソッドで通信する場合
一度で送るサイズをこうした方が良いとかありますか?
1MBのデータを送る場合、1回の Send で1MB送るのではなく
10KBに分けて100回 Send を行った方が効率的ってことありますか?
(自分で試せ!ってツッコミはイヤ〜ン。)
それとMSDNのサポート技術文書「[SDK32] 送信サイズが小さいと TCP/IP のパフォーマンスが低くなる」ってところにMTUサイズがどうのこうのって書いてありますがこれはどう言うことでしょうか?
1460バイト単位らしいですが普段気に留める必要はあるのでしょうか?
環境はVC++6.0です。
お・し・え・て
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGTTLの値はIPパケットの生存時間で0なら破棄されたと思います。
この値の減り方はよく知りませんが、ルータなどを超えると減ったと
思います。
pingとtracerouteは同じICMPのECHOリクエストとECHO応答を使う
プログラムですが、tracerouteはTTLの値でパケットが破棄される仕
組みを利用していたと思います。詳細はtracerouteのソースを読ん
でください。それに合わせてpingを利用するなら使えそうな感じが
します。
0522超初心者
NGNG224.0.0.1としてみたら何かは表示されましたが
普通のアドレスだとこうなります。
> ping -T 10 アドレス
ping: -I, -L, -T flags cannot be used with unicast destination
0523デフォルトの名無しさん
NGNG板違い。通信技術板へいきませう。
0525デフォルトの名無しさん
NGNGWinSock2って何が違うんですか?
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNGというかマトモな本がそれしかない
0528デフォルトの名無しさん
NGNG素人です。
自分は2000バイトずつに分けてます。
1回ずつACKを受け取ってから送信するようにしてます。
正しいかどうかわからないけど、動いてます。
1MBを1回のSendでは無理だと思います。
0529デフォルトの名無しさん
NGNGサンキュ。
これから本格的なMLに聞いてくる。
とりあえずレスありがと。
0530512
NGNG0531デフォルトの名無しさん
NGNGBerkeley Packet Filterでも使えば?
0532512
NGNGBerkley Packet Filterをちょっと調べてみたらパケットのスニファー
みたいな用途っぽいですね。やりたいのはconnect()などの制御
とデータパケットの送受信をrawソケットで実現させること。
環境は書いてませんでしたが、AIXかHP-UX。あるいはLinuxでも
OK。
0533デフォルトの名無しさん
NGNGLinuxでいいんならTCP実装のソース読めばいいんでねえの?
0534512
NGNGLinuxカーネルって全くといって良いほどソースを読んだことが無いです
が、rawソケットで実装されてるのですか?なかなか奥の深い助言です
ね。
カーネルソースをみてみましたが、net/ipv4辺り?としかわかりません。
ソースを読むにあたって、システムコールに対応するソースは何処か
解説のあるサイトはご存知でしょうか?
0535デフォルトの名無しさん
NGNG<input type=hidden name="get" value="143242341324">
<input type=submit value="abcd">
</form>
このCGIの出力結果を見るにはどんな文ををサーバーに送れば見ることが出来ますか?
おしえてください
0536デフォルトの名無しさん
NGNGBPFってありました? 相当する機能はあったと思うけど..
0537512
NGNGですね。詳細を調べてみます。
0538デフォルトの名無しさん
NGNGうちのはNATeなのですがヤフメなどは使えます。
で、ポートの役目リストみたいなページで、ヤフメのポートが記述してあったのですが、、
WinSockなど特別な方法を使えばふつーに通信できるのでしょうか?
判りにくくてスミマセン(汗
具体的に言うとマイクロソフトメッセンジャーなどは1:1で会話や通信できるのに
(どこかでサーバ介している??)
DirectPlayを使うと(というよりわたしの技術では)東急ケーブルなどのローカルIPなプロバイダの人とは
ネットワークゲームが出来なかったりするのです。(どうにかNATeにも対応させたいし、、)
回避する方法はないのでしょうか。。
資料などありましたらこのバカにも判りやすく具体的によろしくお願いします
(ここの何処にあるとか。。)
0539デフォルトの名無しさん
NGNGWin2000使ってます。
0540デフォルトの名無しさん
NGNGhttp://www.layer.co.jp/
0541デフォルトの名無しさん
NGNGメニューなどが英語ですけど十分使えます。
Analyzerの英語(日本語ならベターだけど)ドキュメントが欲しいところ。
0542デフォルトの名無しさん
NGNGNATって何なのかもう少し理解してから書き込んで下さい
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG回線で足つってください。
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG回線で足つって氏んで下さい
0547デフォルトの名無しさん
NGNGftp-data 20/tcp
や
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
のように実際のセッションがあるときにしか使われないポートが
開いているかどうかを調べるには対応する
ftp 21/tcp
とか
netbios-ssn 139/tcp nbssn
が開いていることで判断すればいいのでしょうか?
それとも上記のデータ送信ポートが開いていることを
セッションを作らずに直接調べる方法があるのでしょうか?
0548s
NGNG0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNG激しくワラタ
0553デフォルトの名無しさん
NGNGソケット使う「だけ」ならそれほど勉強する必要はない。
0554デフォルトの名無しさん
NGNG2、SJISのエンコードは %XX で言いと思うんですが、他の文字コードのエンコードは
どうやってやるのでしょうか?
UNICODEとかの場合は %XXXX で良いのでしょうか?
0555デフォルトの名無しさん
NGNG%xxは文字コードのエンコードじゃなくてバイナリのエンコードだから
S-JISだろうとEUCだろうとunicodeだろうと全部%xxの組み合わせダヨ。
デフォルトの文字コードはどうなんだろうね。発信元依存じゃないのかな?
0556デフォルトの名無しさん
NGNGURL-Encode は単にエンコード方式を規定しているだけで、charset の規定はない。
0557554
NGNGわかりましたです。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560七夕
NGNG0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG・IEが入ってなくても使えるようにしたい
等の理由があれば馬鹿じゃないだろ
0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGなるほど、じゃあ、そういうことにしておきます。
プロトコル調べて、自力で動かすのが楽しいからやってただけなんですが(笑)
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGWinInet 使えるんなら使っておいたほうが良いと思う。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGproxyも自分でつないじゃ駄目?
0574デフォルトの名無しさん
NGNGIEの設定を使いたいって事でしょ
自力で探ると結構面倒だし
0575デフォルトの名無しさん
NGNG厳密にはJavaScriptエンジンまで作れば取れるだろうけどそこまでする
ならWinInet使うぞ。
WinInetで困ったのがIE5あたりで追加されたフラグをうかつに立ててると
IE3環境でERROR_INVALID_PARAMETERになること
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG詳しくはアスキーのマルチスレッドプログラミングって本参照
0578デフォルトの名無しさん
NGNGってどうやって実現されてるの?
0579デフォルトの名無しさん
NGNGNTならIO完了ポートを使うのが常識。
0580デフォルトの名無しさん
NGNG要求ヘッダで「ここの位置からのデータを頂戴」と書いてサーバーに伝えてるだけです。
詳しくはIriaやRegetのログ出力を見れ。
■ このスレッドは過去ログ倉庫に格納されています