ネットワークプログラミング相談室 Port4
レス数が1000を超えています。これ以上書き込みはできません。
0001Unassigned
NGNGProgramming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ
http://tangentsoft.net/wskfaq/
過去スレ:
ネットワークプログラミング相談室
http://pc.2ch.net/tech/kako/970/970344582.html
ネットワークプログラミング相談室 Port2
http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
ネットワークプログラミング相談室 Port3
http://pc3.2ch.net/test/read.cgi/tech/1023359282/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG乙彼〜
0005デフォルトの名無しさん
NGNG0006255.255.255.255
NGNGUNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/ref=pd_bxgy_text_2/249-2677107-1089124
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/ref=pd_sim_dp_3/249-2677107-1089124
The Implementation (TCP/IP Illustrated, Volume 2)
http://www.amazon.co.jp/exec/obidos/ASIN/020163354X/ref=pd_sim_dp_4/249-2677107-1089124
Linuxソケットプログラミング―ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/qid=1034258224/sr=1-4/ref=sr_1_2_4/249-2677107-1089124
0007デフォルトの名無しさん
NGNGいきなり低レベルの質問なんですが
win95 C TCP/IP でプログラムしたのですが
double*1000000
のデータは送れたのですが
double*2000000
のデータを送ろうとしたらエラーがでてしまいました。
なぜなのでしょうか?
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG受信側のバッファ不足っぽいけど。
0011デフォルトの名無しさん
NGNG後日エラーコードをとってもういちど質問させていただきます;;
0012デフォルトの名無しさん
NGNG前スレの最後の方で似たようなの見たような・・・
ちゃんと過去ログ参照しようね。
0013デフォルトの名無しさん
NGNG問題が出るとすれば、パケットに流すバイト列の中身の方。
0014デフォルトの名無しさん
NGNGという話題が出ていたが、マルチプロセッサでの race condition
が原因のバグを何度も見たことあるぞ。
シロートは引っ込んでなさいってんだ。
0015デフォルトの名無しさん
NGNG意外とできそうなんですが・・。
0016デフォルトの名無しさん
NGNG1日あれば作れる。
簡単と言うかどうかは知らん。
0017デフォルトの名無しさん
NGNGで、それが並行動作している証拠と言うわけ ?
似非玄人も、引っ込んだ方がいいよ。
001815
NGNG#文字コードってJISなんですね。
文字コード変換して、あと文字列やりくりしたら何とかなりそうな感じです。
まあ、作ってみないとどうかはわかりませんが・・。
0019デフォルトの名無しさん
NGNG並列動作してない証拠にもなってないし…
>>14ってミジンコ?
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGのためにプログラム組んでくだされ
0022デフォルトの名無しさん
NGNG携帯捨てれば?
0023 ◆Rc2D5d6xf.
NGNG0024 ◆Rc2D5d6xf.
NGNG0025デフォルトの名無しさん
NGNGttp://www.users.gr.jp/ml/archive/delphi/48638.asp
このようなものを見つました。
テキストの場合、上手く受信したファイルを保存出来るのですが、
他の形式の場合の受信方法がわかりません。
TStringsに入れてSavetofileで保存できますか?
0027デフォルトの名無しさん
NGNG別にあんたの業務内容なんか聞いてないんですけど、自慢ですか ?
どうやって並列動作確認してるのかを聞きたいだけだよ。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGdelphiは良く分からんが、"TStrings"なるインスタンスにバイナリを突っ込む理由がわからん。
バイナリに\0が入ってたらどーすんの?
ていうか、サンプルのままやればいいじゃん。
Memo1.lines.add(IntToStr(b));
の代わりに1バイトづつファイル保存すればいいんでないの?
0031デフォルトの名無しさん
NGNGこの人前スレの本題は無視して、
俺はカーネルにバグがあるのを知っているぞ─、偉いだろう、だけだね…
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGdelphiスレ行った方が良さげ。
fs:=TFileStream.Create('file', fmCreate);
for i := 0 to Socket.ReceiveLength - 1 do begin
Socket.ReceiveBuf(b, 1);
fs.WriteBuffer(b, sizeof(Byte));
end;
fs.Free;
こんなカンジか? delphiやったことないから知らんけど。
0034デフォルトの名無しさん
NGNG具体的には ?
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG結局「示せない」と言うことですね。
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNGヴァカは、放置で。> >>37 を除く 各位
0039デフォルトの名無しさん
NGNG放置なんていう言葉をナチュラルに使うなんて
さすが2ちゃんねらーは違いますね。
0040デフォルトの名無しさん
NGNGC言語ではむりなのでしょうか?C++でないとだめなんですか?
0041デフォルトの名無しさん
NGNGsocketってそもそもC言語用のインターフェースだし
0042デフォルトの名無しさん
NGNGむしろお前が放置してくれよ
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGその中継はSMTPでどんなコマンド(?)でやり取りしているのでしょうか?
誰かわかる人いますか?
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGだけじゃああんまりなんで、
ftp://ftp.iij.ad.jp/pub/RFC/rfc821.txt
の6ページに例があります。他にもたくさん載ってる。
0047デフォルトの名無しさん
NGNG開発はVisual C++6です。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG参考になりそうな本・サイトってありますか?
(できれば日本語で)
0051デフォルトの名無しさん
NGNGキーワードは wininet
005250
NGNG0053デフォルトの名無しさん
NGNG005450
NGNGありが�dございます。勘違いしてますた。
0055デフォルトの名無しさん
NGNGclient_socket = socket( AF_INET, SOCK_STREAM, 0 );
・
・
とsocketのプログラム書いてるんですが、
connect()でサーバと繋がった状態で、サーバ側が落ちた(接続が切れた)時の判断って
どうやればいいんでしょうか?
try catchとかで例外を拾えるのかと思ったのですがそれも駄目でして・・。
(selectはつかえないですよね・・)
使用開発ツールはVisual C++です。
0056デフォルトの名無しさん
NGNGselectも使えるし。
005755
NGNGそれが何故か返らないんです。。(--;)
スレッドで処理してるからでしょうか?
if( recv( client_socket, buffer_p, BUFSIZE - 1, 0 ) < 0 ){// 受信したかどうかチェック
MessageBox(NULL,"error.","error Message",MB_OK);
Rval.Error = true;
}
return;
005855
NGNG・何か受信した場合は0以上を返す。
・接続が切れた場合は0を返す。
・それ以外はマイナス(SOCKET_ERROR)を返す。
という事は0の場合接続が切れたという事でいいんでしょうか?
なんか0でいいみたいな感じですが・・。
0059デフォルトの名無しさん
NGNG>Return Values
> If no error occurs, recv returns the number of bytes received.
>If the connection has been gracefully closed, the return value is zero.
> Otherwise, a value of SOCKET_ERROR is returned, and a specific error code
>can be retrieved by calling WSAGetLastError.
006055
NGNG>If the connection has been gracefully closed, the return value is zero.
接続がしまってる場合は0を返す、ということは0でいいんですね。(^^;
どうもありがとうございました。m(__)m
0061デフォルトの名無しさん
NGNG「相手が落ちた(接続が落ちた)」の定義にもよる。
相手が単純にソケットをクローズしただけなら、TCP レベルで FIN を受信
するから、recv() が 0 return する。
相手が RST を飛ばしてきたら(強制切断) recv() が -1 return で
エラーコードは ECONNRESET (WinSock の場合表現が違うかもしれない)。
相手のマシン自体がホントに落ちた(panic とか) だったら、何も
おこらない。recv() でブロックしたまま。
質問する時は、どういう状況について質問するのか、できるだけ、
具体的にしよう。
とりあえず、ソケットプログラミングの一般論として
ttp://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.1
に目を通しとけ。
0062デフォルトの名無しさん
NGNG> 相手のマシン自体がホントに落ちた(panic とか) だったら、何も
> おこらない。recv() でブロックしたまま。
ある程度時間がたったらETIMEOUTで戻ってこない?
0063!1
NGNGこんなのどないしてつくるの?
0064プロ
NGNG006561
NGNG何が TIMEOUT するのさ?
何も送信してなければ、TIMEOUT も存在しえないよ。
もし、データを送信して、TCP レベルでまだ ACK を受信していない段階で
相手がオチた(無応答になった)のなら、TCP の再送タイムアウトが発生
するので、recv() が -1 return して ETIMEDOUT エラーになるけど。
もっとも、もし、相手がオチた後にリブートして来たケースを考えると、
TCP の再送を受信した段階で相手が RST 応答するから、そこでコネクション
が切れる。アプリケーションは recv() のエラーでそれを検出するから、
再送タイムアウトよりは、早いタイミングで検出できるだろう。
SO_KEEPAVLIE オプションを有効にしてれば、データを送信していなくても、
無通信状態が続いたら相手の生存確認をするから、そのうち TIMEOUT を
検出するけど、普通は 2 時間ぐらいかかるし(Windows の事情はよくわから
ないのでデフォルト値がどのぐらいか知らない)。
0066デフォルトの名無しさん
NGNGWeb制作
http://pc3.2ch.net/hp/
>>64
本屋にいって「はじめてのC言語」という本を買ってくる
>>65
Windowsでも似たようなモンですわ。
0067デフォルトの名無しさん
NGNGするとコネクション貼るだけ貼りまくってその後パケットを
一切送らなかったらDoS攻撃が成立しますか。
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNGそれが DoS 攻撃になるのかどうかは、アプリケーションによるでしょ。
それだと、コネクション張った側(クライアント側)もコネクションを
保持し続けないといけないわけだし。
つーか、どーゆーのが DoS 攻撃だと言ってます?
>>68
アプリレベルの TIMEOUT って、それは、アプリケーションが、
タイムアウトの仕掛け(alarm とか?)をやってた場合でしょ?
>>62 も「ETIMEDOUT」って書いてるから、プロトコルレベルの
タイムアウトの話だよ。
0070デフォルトの名無しさん
NGNG> 保持し続けないといけないわけだし。
単に沈黙すればいいような。
もっともありもののTCPスタックはRSTとか勝手に返しそうだから
自前でTCPのハンドリングをする必要はありそうだけど。
> つーか、どーゆーのが DoS 攻撃だと言ってます?
サーバのコネクション数には限界があるわけで、その数まで
接続しまくって放置すればサービス拒否攻撃が成立しますよね?
0071デフォルトの名無しさん
NGNG> もっともありもののTCPスタックはRSTとか勝手に返しそうだから
ごめん。意味が分かりません。TCP がどういう場合に RST を送信
するか、理解してます?
> サーバのコネクション数には限界があるわけで、
ありません。
0072デフォルトの名無しさん
NGNG> >>68
> アプリレベルの TIMEOUT って、それは、アプリケーションが、
> タイムアウトの仕掛け(alarm とか?)をやってた場合でしょ?
そーです。もしくはselectなんかのTIMEOUTね。
つか、>>68は>>67へのレスですわ。
>>70
サーバだって何もこないソケットをただ延々と待ってたりはしないよ。
繋いで切ってを繰り返した方が、負荷が高いと思うけど。
0073デフォルトの名無しさん
NGNGごめんなさい。
> それだと、コネクション張った側(クライアント側)もコネクションを
> 保持し続けないといけないわけだし。
が意味不明だったんで意味不明なレスしてしまいました。
> ありません。
listenの引数は飾りですか?
ApacheのMaxClientsはダミーですか?
カーネルの(以下略
つーかマジで言ってます?
>>72
> おこらない。recv() でブロックしたまま。
はただ延々と待ってるという意味ではないの?
007471
NGNG> listenの引数は飾りですか?
listen() の第 2 引数はバックログ値であって、コネクションの数と
関係しませんよ。accept() しない状態のコネクションをいくつまで保持
できるか、でしかありません。
普通、サーバアプリケーションが速やかに accept() でコネクション
を引き取っていくので、いくらでもコネクションは張れます。
コネクション数の話で、listen() の引数の話を出してくるところを見ると
バックログキューとかが、理解できてないように思います。
> ApacheのMaxClientsはダミーですか?
それは Apache がどのように扱うか、であって、TCP レベルのコネクション
の数と関係ありません。...と書いてて気付いた。>>73 さんは、アプリケー
ションレベルでの話をしてるんですね。そうすると、それはアプリケーショ
ンがどう振る舞うか、に依存しちゃうので、どうにでもなっちゃう。
でも、なぜここで、listen() の引数の話を出してきたのかが分からない…。
> カーネルの(以下略
カーネルとして、TCP コネクションの数に制限はありません。
0075デフォルトの名無しさん
NGNGポートは65535個しかありませんが。
> カーネルとして、TCP コネクションの数に制限はありません。
じゃあどうしてSYN floodのような攻撃が可能なのですか?
0076デフォルトの名無しさん
NGNG皆まで言わないとシラを切るつもりですか?
0077デフォルトの名無しさん
NGNG> を引き取っていくので、
fd_setの数にも同時起動可能なプロセス数にも上限があるし
0078デフォルトの名無しさん
NGNG抜けてきます?
漏れのとこだと、SIGALRM は recv() に割り込んで、シグナルハンドラは
実行されるんだけど、その後、勝手に recv() が再実行されてるみたいで、
recv() がエラーリターンしてくれないんですよ。
マニュアル見ると、EINTR するって書いてあるし。
Solaris とかだと抜けてくれるんですけどね。
なんでか知ってる人いたら、レスキボンヌ
0079デフォルトの名無しさん
NGNG>ポートは65535個しかありませんが。
それが問題になるのはクライアントだけ。
0080デフォルトの名無しさん
NGNG言い出すんだろうか、、、
0081デフォルトの名無しさん
NGNG一つでも違えば張れますよね。(だからといって、カーネルに制限
がないと言い切るのも問題ありだけど)
>> カーネルとして、TCP コネクションの数に制限はありません。
>じゃあどうしてSYN floodのような攻撃が可能なのですか?
ここで、ハーフコネクションの話を持ち出すのは筋違いでは?
>SOMAXCONN
これも筋違いでは?
listen() のバックログ最大値の話でしょ。
0082デフォルトの名無しさん
NGNG>fd_setの数にも同時起動可能なプロセス数にも上限があるし
カーネルが保持可能な最大コネクション数には限界があるって
話とは微妙にずれてるし...ナニが証明したいの?
なんか、低次元の話で熱くなってないか?
(...熱くなってるのは一人だけだったりして)
一休みして頭を冷やし、もちっとまともな証拠固めをすませてから、
反論したほうがいいと思う。
まあ、カーネルにコネクション数制限がないって話は、打ち砕く
ことはできるんじゃないかな。つーか、すべての資源で制限がない
ってものはないんだから...まあ、モノによっては、上限が2の64乗
とかになっちゃうんだけどさ...それでも、それが上限だとは言い
張れるわけで(笑)
Solaris9 の場合は 2^32、40億個だってさ。
さすが 64bit カーネル(つか 32bit では不可能)
http://jp.sun.com/solaris/wp/solaris9/better_by_design.pdf
(スケーラビリティへの取り組み参照)
0083デフォルトの名無しさん
NGNGsignal()を使わず、sigaction()でSA_RESTART flgをOFFにする。
FreeBSDは、signal()はBSDセマンティクス、sigaction()はPOSIXセマンティクスだとさ。
008471
NGNG> ポートは65535個しかありませんが。
はぁ? オマエが「サーバの」って限定したんだろーが?
サーバ側のポート番号は一緒だよ。
>>76
> カーネルのSOMAXCONNは(以下略
> 皆まで言わないとシラを切るつもりですか?
それも、バックログキューの上限値の話だろ?
>>77
> fd_setの数にも同時起動可能なプロセス数にも上限があるし
何が言いたいのかわからんけど、fd_set って select(2) の話だと
思うんだけど、それはファイルディスクリプタの話であって、
コネクション数とは一致しないよ。確かに、fd が open できなければ、
ソケットが生成できないから、アプリケーションがコネクションを保持
できなくなるけど、でも、コネクションは存在するからね。
>>82
> まあ、カーネルにコネクション数制限がないって話は、打ち砕く
> ことはできるんじゃないかな。つーか、すべての資源で制限がない
> てものはないんだから...まあ、モノによっては、上限が2の64乗
> とかになっちゃうんだけどさ...それでも、それが上限だとは言い
> 張れるわけで(笑)
もちろん、確かにそーゆー話をし始めると、無制限じゃないよ。
でも、「コネクション数」としての制限値はないよ。リソースの
制約は受けるだろうけど。
0086デフォルトの名無しさん
NGNG打ち砕く云々の部分は、与太で書いただけだから、気にしないようにね(笑)
基本的には、一人だけ御馬鹿さんがいると、みんな思ってるんじゃないかな。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG話のきっかけは、recv() で物理的な回線断、相手のクラッシュが検出できるか?
ってことに関しては、判断不可能ってのが正解だと思います。
そういう状態になったら、recv() は永久に戻ってきません。
そのために、わざわざアプリで定周期にパケットをやり取りして相手の生死の
確認をするんだと思います。
その後のやり取りについても、 >>61 , >>71 , >>81 , >>84 の説明のほうが
筋が通ってて、正しいように思います。
私は、TCPの内部のソースはまだ読めないので、一部の説明は理解不能ですが。
それと、
>じゃあどうしてSYN floodのような攻撃が可能なのですか?
についてですが、大抵のサーバは、コネクション毎にプロセスやスレッドを
作りますから、それらに割くリソースがシステムのリソースを食いつぶしていって、
最後にはサーバーが動けなくなる(メモリが足りなくてプロセス、スレッドがもう
作成できないとか)や、ものすごい勢いでコネクションの確立要求がくるとそれの
対応にカーネルが追われてしまって、本来のサーバーの仕事が出来ないくらいCPU
パワーを使ってしまい、結果、サーバーとしての機能停止って感じじゃないのかな?
よって、サーバー側のコネクション数に限界がなくても、SYN flood攻撃は成り立つ
と思います。
0091デフォルトの名無しさん
NGNGSYN flood の話で、プロセスやらスレッドやらを出してきちゃだめ。
SYN_RCVD 状態のコネクションは、まだアプリケーションに通知
されない(accept(2) できない状況)から、サーバアプリケーションが
fork() やら、スレッド生成やら、したりしないの。
で、カーネル内では、そのハーフオープンのコネクションのため
のテーブルがどんどん増えていくんだけど、消しようがないから、
そのうち、資源無しになっちゃうってのが SYN Flood 攻撃です。
アプリケーションが引き取ってるんなら、アプリケーションが close
すれば済むんだけど、ハーフオープン状態だとアプリケーションが介在
できず、カーネル内で TCP もそれを消すことができずに、ああ、困った
ね、って話。
SYN Flood の話を持ち出してきたのは、勘違いしている人でしょ?
0092デフォルトの名無しさん
NGNGSYN-SYN/ACK-ACK
0093デフォルトの名無しさん
NGNG代表ポート受付後自動で1000〜5000のポートに対して処理を引き継がせているが
それを食いつぶすとコネクション不能になった
この範囲内でしか自動で割り当ててくれないらしい
ところでどこを設定すればこのコネクションの限界数を無限に増やせるの?
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGNETはMSDNの嫌がらせCDに入ってたけど入れてないので試してない
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGhttp://tangentsoft.net/wskfaq/advanced.html#maxsockets
の話では無かろうな。
010090
NGNGな・る・ほ・ど
そういうことですか。
また、1つ賢くなりました。
なっとくしましたです。
0101デフォルトの名無しさん
NGNG素人の巣窟かここは...
>>91
後半は大嘘だな。
以下、「UNIXネットワークプログラミング 第2版 Vol.1」からの引用。
-確立待ちコネクションキューが満杯の場合、Posix.1gではSYNを無視、
-あるいはRSTで応答のどちらの挙動を示しても良いことになっている。
-Berkeley派生のインプリメンテーションでは、到着したSYNを無視する
-ことになっている。
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNGまあ、>>91はこうなっている実装が問題になったって話したんでしょ。
>>73,>>75はハゲシク無知なくせに謙虚さが足りないぞ。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG違います。
010691じゃ無いが
NGNGコネクションキューも資源の一つなんだが…
コネクションキューを割り当てることが出来ないから
-確立待ちコネクションキューが満杯の場合、Posix.1gではSYNを無視、
-あるいはRSTで応答のどちらの挙動を示しても良いことになっている。
-Berkeley派生のインプリメンテーションでは、到着したSYNを無視する
して、新規のコネクション要求が受け入れられない。
どのように大嘘なんだ?
0107デフォルトの名無しさん
NGNG>代表ポート受付後自動で1000〜5000のポートに対して処理を引き継がせているが
accept するとポート番号が変わる?
んなばかな。
0108デフォルトの名無しさん
NGNG受け付け用のポートと実際に通信するポートは異なるのだが
もしかして全部同じポートで通信していると思ってたのか?
同じポートでどうやってTCPが通信先を判別するのか小一時間問い詰めたい
0109デフォルトの名無しさん
NGNGもまえは小一週間勉強しなおせ
0110デフォルトの名無しさん
NGNG単に、socket記述子が別になることと勘違いしてない?
netstat とか使ったことある?
0111101
NGNGそれだと、「こうなっていない実装」(例えば典型的なBerkeleyの実装)に
対してはSYN floodingは無効であると主張しているのと同じ。
>>106
> コネクションキューを割り当てることが出来ないから
SYN floodingにより、あるポートに割り当てられた接続待ちキューの
エントリが満杯になったとしても、他のプロセスには何ら影響がなく、
新たにlisten()によりコネクションを待ち受け、
正常にサービスを行うことができるが、「キューを割り当てられない」
とは、一体何を云っているのか?
0112デフォルトの名無しさん
NGNG>同じポートでどうやってTCPが通信先を判別するのか
srcaddr : srcport : dstaddr : dstportの組で判別しまふ。
鯖のポートがおなじでも、クライアントのポートは(アドレスも)違うので大丈夫なのれす。
サーバポートとクライアントポートの違いが分からない香具師はアフォなのれす。
小一時間人を問いつめる前に、マスタリング TCP/IPを10遍読むのれす。
0113デフォルトの名無しさん
NGNGなんか、勝手に自分で問題設定してませんか?
あなたは、勝手に 91 が、接続待ちキューはシステム全体で共有、
といっているとみなし、ポート単位に割り当てられている実装がある
のだ、とわめいている。
でも、91 は、システム全体で共有だとか、ポート毎だ、なんて言及
していないと思うけれど?
0114デフォルトの名無しさん
NGNG現在はGETするだけのHTTPクライアントを作って結果をリダイレクトしてファイルに落してから後程ファイルを開いて先頭の方を見るという面倒な事をしています。
0115デフォルトの名無しさん
NGNGteraterm とかのまともな Telnet クライアントなら、ログ機能 (受信データを記録する機能) がついてるから、そう言うのを使えば ?
0116デフォルトの名無しさん
NGNGRFC2145を読んでないならまず読んどけ。
0117114
NGNG私の事を言っていますか?
すみませんこれから読みます...
2068はobsoleteなんですよね?
0118114
NGNGむしろそういう機能をもつHTTPクライアントを作りたいんです。
ならまずRFC読んでからですね。すみません。
0119デフォルトの名無しさん
NGNG% w3m -dump_both http://www.example.com/ | lv
w3m はクライアント, lv は more のようなもの
0121デフォルトの名無しさん
NGNG_beginthread等で起動するスレッドで
_beginthreadに渡すパラメータを参照する場合と、
グローバル変数を参照する場合とで違いはあるのでしょうか?
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNGグローバル変数しか方法が無い思うのですが。
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGグローバル変数とパラメータが指すオブジェクトは全然違うやん。
0127デフォルトの名無しさん
NGNG何を聞きたいのかわからん。
当然参照の仕方 (コードの書き方) は、違う。
しかし、これはマルチスレッドだろうが単なる関数呼び出しだろうが一緒だろ。
で、問題はこれが「ネットワークプログラミング」と何の関係があるのかと...。
>>123, >>126
はぁ ?
0128デフォルトの名無しさん
NGNG特定のIPアドレスのPCが起動したときに、メールで知らせがくる
プログラミングを教えていただけないでしょうか?環境はLinuxです。
おおよその流れは、
・10分おきぐらいに特定IPにPINGをかける。
・if(応答なし)
次の10分後に再びPINGをかける;
else(応答あり){
当方にメールで知らせる;
自動的に特定IPのPCにTELNETでログインする;
}
以上のような感じのプログラミングできるでしょうか?
よろしくお願いします。
0129デフォルトの名無しさん
NGNGint ret = system( "ping somehost -c 1 -q" );
メール:
FILE *fpmail = popen("mail some@anyhost -s title");
fprintf(fpmail, "somhost boots.\n");
fclose( fpmail );
あとは自分でやれ。
0130デフォルトの名無しさん
NGNGPerlかshellか何かでさくっと出来るだろ。
漏れの予想ではtelnetする部分がちょっと工夫が必要になるのではないかと
思うが。まずは自分で考えろ。
0131デフォルトの名無しさん
NGNG129,130さんありがとう。
でも言語にはかなり疎いんです。Linuxのネットワーク管理ぐらい
をすこしかじった程度なんで。
でも、この前のLinuxWorldを参考にしてshellを組んでみたいと
思います。
でもやっぱりできそうにないな。。。。
0133デフォルトの名無しさん
NGNG簡単にあきらめんなよ。
本当にtelnetをつかうなら、shellは無理じゃないか?Perlならやりようによる。
あとはExpectを調べてみろ。
ところで、相手のPCには、telnet server動いてるんだよな?ちょっと気になった。
ネットワークプログラミングとは微妙にちがうのでsage
0134133
NGNG0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGWinsockもそこそこ使えるようになって(これはもっと大したことない…)
ふと思ったのですが、簡単な遠隔操作プログラムならつくれるんじゃないかと…。
簡単なト○イも作れそうでちょっと怖くなりました。。
0137デフォルトの名無しさん
NGNGいや、正直なところお手上げです。
やってみたいのですが。。。
当方C言語を少々(目的:数値計算)なのでなんともできません。
Perlもshellもよくわかりません。
Linuxネットワークサーバを数十個つくれるぐらいです。
出来そうな人、どうかお願いします。
平日軍に大いに期待します。ホント申し訳ありません。
当方提供できるのは、MPIの数値計算プログラミングを少々
というところです(恥)。
0138デフォルトの名無しさん
NGNG131です。
Telnetserverはworkしています。
僕はちょっとPerlとかあまりわからなくて、
申し訳ないです。。。
0139デフォルトの名無しさん
NGNG作ってからいえよ。一番むずしいのはどうやって感染させるかなんだから。
WinMXで一度自作のトロイ流したけど感染は3人しか確認できなかった。
0140デフォルトの名無しさん
NGNG私、138です。。。。
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG感染したかどうかなんて確認できるの?
0143デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG全部読んだけど、凄い人って誰・・・・!?
ところで、128の仕事はshellでいいのかな?それとも
Perlなのかな?
0146デフォルトの名無しさん
NGNGウイルスをばら撒く勇気がある人<凄い人
0147デフォルトの名無しさん
NGNG今WEBのページを作っているんですが、
JAVASCRIPTで定義した変数の値をPerlの変数に渡してサーバに送りたいのですが、
そういったことって出来るんでしょうか?
CGIでサーバを介すと時間がかかるんでページの中ではJAVASCRIPTで処理して
その結果をPerlで出来たら早いと思って、やろうとしているんですが…。
誰か詳しい人や、やったことがある人がいたら教えてください。
よろしくお願いします
0148デフォルトの名無しさん
NGNG激しく板違い。
JavaScriptがクライアントで動いてることが理解できてりゃ
答えは簡単だろ。
0149デフォルトの名無しさん
NGNGで、どゆことですか?
出来ないということでしょうか?
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGいや、普通にできますよ
煽りに負けてるようじゃ先は長いけどな
0152デフォルトの名無しさん
NGNG「PCが起動したとき」はどう定義するんだ?
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG違っていれば落ちた/起動したの判定ができる。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGネットワークだから、たまーに ping が失敗することもあるから、失敗したら何回かリトライするようにね。
0159デフォルトの名無しさん
NGNGpingだけじゃなくて、複合テストをやった方がいいと思う。
例えば、rup、snmpを使ったり、起動したhostがsnmp trap出すようにする。
UNIXだったら、GNU fingerでfinger .clientもいい。
DHCP使ってるなら、dhcpdのlogやsnmp trapも有効だ。
# 調べられるのはserver上に限られるが。
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNGWinSockを使いSOCK_STREAMでADSL回線使用の場合
1秒間に送れるデーターは5KByte程度でしょうか?
たぶんプログラムが悪いんですが。
通常もっと早いですよね?‘
0162デフォルトの名無しさん
NGNGただし、相手がちゃんとrecvしていたらね。
0163161
NGNGHTTPプロトコルで GETを取ったら800Byte送るテストで
1秒間に7回程度しか送れません。双方ともスレッドで
単に送受信しているだけです。なにかコツというか
注意点がありますか?
0164デフォルトの名無しさん
NGNG自分が使っている環境や関連技術をよく調べる。
0165デフォルトの名無しさん
NGNG>162
ADSLなら、逆立ちしても、上り200Kでない筈だけど、、
0166デフォルトの名無しさん
NGNG0167161
NGNGWAKWAKですが5KByte(約64Kbps)で制限?
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGJavaでFTPライブラリを製作していますが、
サーバー上の特定のパスがファイルであるかディレクトリであるかを
判定する最も確実な方法は何でしょうか?
NLST -alLでカレントディレクトリと親ディレクトリを返したら
ディレクトリ、という風にやるつもりでしたが、
FTPサーバーによってそれが当てはまらないのがあり、
困っています。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG「ファイルである」以外の理由で失敗することも歩けど
0172デフォルトの名無しさん
NGNG単純にHTTPのハンドシェイク遅延に引っ張られてるだけじゃネーノ?
0173169
NGNGMLSDは対応してないサーバーが多くて・・・
もうちょっと一般的になればMLSD決め打ちでいけるのですが。
>>171
サーバーによって、パーミッションエラーが返ってきたりするので、
あまり実用にならないと判断してその手は見送りました。
FTPプロトコルって、中途半端に人が使うようにできているので
たちが悪いですね・・・
0174デフォルトの名無しさん
NGNGsockaddr_in
の各メンバに値をいれたのち
bindなどに引数として渡すときに
(struct sockaddr*)sockaddr_in
というふうにキャストする理由というのは
ポート番号IPアドレスなどを
アドレスデータとしてまとめて読み込んでしまうから
なんでしょうか?
ソース見てないのですが
そんなところであってますか
0175デフォルトの名無しさん
NGNGint bind(SOCKET s, const struct sockaddr* name, int namelen);
だから
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/bind_2.asp
0176デフォルトの名無しさん
NGNGちょっと補足しとくと、bind() なんかのソケットライブラリは IP 専用じゃなくて、他のプロトコルにも使うつもりだったから、そう言うプロトタイプになっている。
(でも、IP 以外で使ったことある奴はあんまりいないと思う...。)
0177デフォルトの名無しさん
NGNGそうか?AF_UNIXなんかはそれなりに使われてると思うが。
0178デフォルトの名無しさん
NGNG起動した側にパケット送らせるのはダメか?
監視鯖側が受信確認するまでリトライしてさ。
で、監視鯖はダウンするまで10分置きにPingで確認しつづけるの。
これなら、死んでるPCにまでPingしなくて良いだろ。
つって、いっぺんに100台からのPCが起動したら、DDOSになっちゃうか。
0179デフォルトの名無しさん
NGNG>>175を見れ。intじゃなくてSOCKETだ。
0180デフォルトの名無しさん
NGNGもともとの質問である>>174にはWinSockであることを匂わせる部分は
ひとつもないが
0181デフォルトの名無しさん
NGNGわかってるよ。
あんたが「>>175へレスを付けた>>176」へレスしたからだ。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGマターリいこーや。
0184176
NGNGごめんよ、あんまり意識なかった。
ソケットライブラリ一般と言う意味で書いていた。
だから AF_UNIX も意識にあったけど、まあ IP で使う香具師の方が俺の周りじゃ多かったんだよ。
よく見ると >>174 は、「(bind() の) ソース見てないのですが」と書いてるから、多分 WinSock ではないだろうね。
0185デフォルトの名無しさん
NGNG最初、WSAStartup 関数やって、socket 関数でソケットを取得すると思いますが、
既存のソケット(他のプログラムが作ったソケット)を取得したいんですがやりかたがよくわかりません。
開発環境は WinXP Prp. VC++6.0 です。よろしくお願いします。
API でそういうようのがあればいうことないです。(API なら VB で使える)
0186デフォルトの名無しさん
NGNGVB好きならVBでやれよ
0187デフォルトの名無しさん
NGNGこういう奴が一番厨っぽい
0188デフォルトの名無しさん
NGNGunix方面でもわりかしトリッキーだったと思う
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGapacheからはじまるマルチプロセス型
サーバの立場はどうなってしまうのだろうか。
0192!188
NGNG0193188
NGNGapacheは動的に生成されたsocketをプロセス間では渡してない。
listenするsocketをfork時に共有しているだけ。
fork時のfdの共有はunixでは一般的に使える(でないとpiped forkが...)。
最初はacceptしたのを渡してると思ってたんだけど、思い込みって恐いね。
0195185
NGNGWSADuplicateSocket() や DuplicateHandle() 聞いたことない関数ばかりで調べてみたのですが、
DuplicateHandle() 関数に関して、第二引数に複製対象のハンドルを書くみたいですが、
私がほしいのはその第二引数のハンドル(ソケットハンドル)そのものです。
なのでこの関数を使う時点では他プロセスが作ったソケットハンドルは分かっているのでは?
(この関数使ったことないので根本的に私の解釈が間違っていなければですが)
えと、やりたいことは・・・
あるプロセスが取り扱ってるソケットがあります。
そのソケットが送信および受信したデータをバイナリ単位で知りたいのですが・・・。
0196デフォルトの名無しさん
NGNG0197185
NGNG0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG>既存のソケット(他のプログラムが作ったソケット)を取得したいんですがやりかたがよくわかりません。
>195
>あるプロセスが取り扱ってるソケットがあります。
>そのソケットが送信および受信したデータをバイナリ単位で知りたいのですが・・・。
全然言うとること違うやないか、、、
0200デフォルトの名無しさん
NGNGここの作者に聞いてみたら?
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG参考になるwebページでいいんで教えてください。
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGfork()やスレッドを使うか自前でDNSのパケットを処理するしかありませんか?
0206デフォルトの名無しさん
NGNGfork()がポータブルかなあ・・・
スレッド使うときはreentrantバージョン(gethostbyname_rとか)
を使うよう気をつけようZE!
0207デフォルトの名無しさん
NGNGsquidが自前で実装してたような・・・?
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGif ((rn = recv(s, &recv_buf[i], 1, 0)) < 0)
break;
/* 改行単位で受信処理をする */
if (recv_buf[i] != '\n') {
i++;
if (i < BUFSIZE - 1)
goto receive;
}
ストリーム型のデータの受信というのは通常このようにやるもんでしょうか?
どういった理由からでしょうか?
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG家にはwindowsパソコン一台しかないので、ネットワークプログラミングの勉強ができません。
DOS窓を二つ開けば擬似的にコンピュータが二台あるように見せることができるらしいですが、各DOS窓を識別する名前などが存在しないようで、こまっています。
パソコン一台でもLAN環境が整っているように見せるにはどうしたらよいのでしょうか?
ちなみにJAVAのHORBというやつを勉強してます。
0213デフォルトの名無しさん
NGNGどうしても二台分かれた環境にしたいのであれば、
VMwareなどのエミュレータを使うという手もあるよ
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG各サーバーオブジェクトはORBを介して通信していて、その下が
LAN越しのホスト間通信をやっているのか、たんなるローカルの
プロセス間通信なのかはキニシナイ、というのがORBだとおもわれるが。
0216デフォルトの名無しさん
NGNGLANカード入れて、TCP/IP入れて、IPアドレスは適当にふって、
後は>>214の言う通りポートをわければ良い。
というか、プログラムするのにDOS窓は関係ない。
0217デフォルトの名無しさん
NGNGくそ
0218デフォルトの名無しさん
NGNGそのパケットってどこまでいきますか?
適当にプログラムつくって
127.0.0.1に向かって飛ばしても
windumpとかで反応してないんですね
でもISPから振ってもらってるIPアドレスに向かって飛ばしたら
windumpが見てるところまで落ちてから戻ってきます
だからLANカードささなくてもいいんじゃないですかね?
これって甚だ勘違い?
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGそういうときに指先に穴があいている手袋をどうぞ。
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGwindumpで、capture対象にloopback interfaceを指定すれば、
127.0.0.1のpackaetもcapture出来るんじゃないの?
// 今手元にwindowsないから確かめられないが。
>>212
(H)ORBに一台も二台も糞もない。
・127.0.0.1を指定する。
・ネットワークアダプタがあれば、IPアドレスを振って、そこ(自分)を指定する。
(192.168.0.1辺りを使えばいい; プライベートアドレス)
どちらかでOK。
>>209
breakて
0224デフォルトの名無しさん
NGNGbreakじゃ意味ないね(藁
つーか、コンパイル通らんだろ。
それに1バイト単位でrecv()って、・・・おぃ(^^;
0225デフォルトの名無しさん
NGNG$| = 1;
ってふつーにやるけど
なにかまずいことでもあるの?
つーか1バイトずつ読む以外の方法で
・改行まで読み込む
・ブロックも絶対しない
の両方を満たすことなんてできるの?
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGそれ以前を受信電文とし、それ以降は次の受信電文のためにバッファリングする。
というやり方に名前があったはずだけど忘れた。
でもまぁ、ストリーム型なら、電文ヘッダに電文長付けれ。
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGfgetsがバッファを満たすときにreadを一回しか呼ばないことは
保証されているのか?
> 1 byte ずつ読んだっていっしょだろ?
この場合はselectで回避できる。
0230224
NGNGCの場合は同じように1バイトずつ読む場合でも、
fdopen()してストリームからgetc()とかで読むのと、
ファイルディスクリプタからrecv()で読むのでは
バッファの関係で速度に雲泥の差がある。
移植性の問題もあるし、fdopen()しなくても
自前でバッファリングすれば問題ないが。
>>229
保証されてるかは知らんが、毎回FILE*のバッファが
一杯になるまで満たすような実装にはしないだろ。
0231デフォルトの名無しさん
NGNGwinsockを使っているのでしょうか?
0232デフォルトの名無しさん
NGNG使っているはずです。ゲーム機についてはシラネ。
0233デフォルトの名無しさん
NGNGゲーム機はps2sockなどを使っています。
0234デフォルトの名無しさん
NGNG>>230
どっちが性能いいの?
0235デフォルトの名無しさん
NGNG従って、blockingモードのソケット+select()+fgets()では、相手が
行の途中まで送信した後改行をいつまでも送らなければ、ブロックを
回避できない。よって、fgets()を利用する場合はselect()ではなく
alerm()などの手段でタイムアウト管理するのが普通だろう。
0236デフォルトの名無しさん
NGNGrecv関数は相手が送られてくるまでまちつづけてると思うのですが、受信スタートしたときの時間を取りたい場合どうすればいいのでしょうか?
待ち時間と受信にかかった時間をとりたいとおもってます。
0237デフォルトの名無しさん
NGNG最初のデータが到着するまでを「待ち時間」とし、そこから最後のデータが
到着するまでの時間を「受信にかかった時間」とすればいいと思う
0238236
NGNG今select関数を使わず以下のようにしてるのですが、select関数を使った場合どうなるのでしょう?
それぐらい自分でしろと思われるとおもいますが、時間がなくて・・・
intrecving(SOCKET *serversock,double *buf,intlen)
{
intrec=0;
intcur=0;
while(rec<len){
cur=recv(*serversock,(char *)buf+rec,len-rec,0);
if(cur==SOCKET_ERROR){
printf("\nRECVエラー(エラー番号=%d)\n",WSAGetLastError());
closesocket(*serversock);
return -1;
}
rec+=cur;
}
return 1;
}
0239デフォルトの名無しさん
NGNGネットワーク内ブロードキャストに投げたデータグラムは
すぐさま自分自身でも受け取ってしまうけど、
受け取ったデータグラムが自分自身が投げたものであるかどうかを
知る、いい方法はありますか?
UDPポートはひとつで、送受兼用です。
0240デフォルトの名無しさん
NGNG0241239
NGNGどうせLAN内で動くものだし、素直にインタフェイスのアドレスでも得るかのう。
0242デフォルトの名無しさん
NGNG>>If the from parameter is nonzero and the socket is not
>>connection oriented, (type SOCK_DGRAM for example)
>>the network address of the peer that sent the data is
>>copied to the corresponding SOCKADDR structure
0243230
NGNGネタか?・・・まぁいいや。まじめに答えてあげるよ。
FILE *関係の関数、特にgetc()はマクロで実装されてる事が多いから、
バッファが空でなければ、そのチェック自身と一回の配列アクセスだけで
関数呼び出しすらなしに1バイトのデータを取得できる可能性が高い。
recv()の場合は、システムコールの最低限のコストの数百クロックに加えて、
ファイルディスクリプタや引数の値やアドレス空間のチェック、
実装によってはCPUの再スケジュールやその他もろもろが発生するから、
バッファリングされたユーザ空間だけでの場合と比べて何桁かは遅い。
>>235
ブロックして困るようならfgets()なんか使わずに自前のバッファを使うべき。
毎回FILE*のバッファを一杯にしないってのは、一回read()してバッファにデータが
残ってるうちは、満杯にするために再度read()することはないって意味だよ。
複数回read()されると、一度改行を受信してもfgets()から復帰できなくなる。
この場合、条件によってはお互いに半デッドロックって最悪な状態もありうる。
0244デフォルトの名無しさん
NGNG最初に書いた条件だとselect()する必要ないと思うが。
複数のソケットを待機するか、タイムアウトさせたいのでなければ必要ない。
おそらく、最初のselect()が完了してからを「受信にかかった時間」としたいんだろうけど、
select()直後のrecv()が復帰するまでにかかる時間は無視できる範囲内になるし、
場合によったらオーバーヘッドによって生まれる誤差の方が大きいかもしれない。
0245235
NGNG「無限にブロックしても困らない」というケースの方が少ないと思われ。
ただし先にも書いたように、alarm()によりread()に割り込めば
無限にブロックすることは回避できるので、fgets()を使うのが
常にまずいとはいえないだろう。
だから、単純に「blockingソケット+select()+stdio」の相性は良くない、
とだけ云えば良い。select()は次回のread()がブロックしないことだけは
保証するが、1文字より多くの文字を読み取る可能性のある全ての
stdioの関数は、2度以上のread()を行う可能性があるからだ。
# まあ、SO_RCVLOWATを設定することでこの辺の事情は変わるが...
non-blockingソケットであれば、stdioを使うべきではないのは云うまでもない。
移植性を考えれば、最初から自前でバッファリングを行う方が良いのは同意。
0246デフォルトの名無しさん
NGNG結局>>226は>>225の条件(ブロックしない)への回答としては
イマイチってこと?
0247245
NGNG0248246=247!=245
NGNG0249デフォルトの名無しさん
NGNG0250230
NGNGそう?ブロックしても困らない状況は結構あると思うよ。
勉強目的とかでクライアントをお手軽に作る場合や、鯖だとしても、
タイムアウトが必須なほど資源的に程切羽詰まってない場合とか。
でも、alerm()は有効そうだね。
EINTRで再read()する実装あったら嫌だけど(w
>>246
究極的には、常にブロックを一切せずに一行読み込むのは不可能。
select()使ったとしても、タイムアウトするまではブロックするわけだし。
ただ、その待ち時間の間に他の事をできるかどうかの違いでしかない。
プログラムの関心がひとつのソケットにしかなく、
タイムアウトも無用であればブロックしようがどうでもいい。
0251236
NGNGレスありがとうございます。
select関数を使っていない場合どうすればブロッキングされている時間、送受信にかかった時間をとれるのでしょうか?
recv関数の前後で時間をとると、ブロッキングの時間と送受信の時間の合わさったものがでるとおもいます。
どうすればできるのでしょうか?
0252デフォルトの名無しさん
NGNGError: default constructor not found. HORB server can not create class MachineAmbient
というエラーがでます。
どなたかHORBをご存知の方いらっしゃいましたら、このエラーのでる理由を教えてください。
よろしくおねがいします。
0254デフォルトの名無しさん
NGNG何回かrecvするなら最初のrecvから最後のrecvまでの時間を
計るとかならまだよいと。そういうことだよね。
0255236
NGNGレスありがとうございます。
recv関数で1MBぐらいのデータを送受信してるのですが、ブロッキング時間と送受信にかかる時間をはかれと上からの命令でして・・・
やっぱりむりなのでしょうか?select関数をつかうプログラムでないとだめなのでしょうか?
0256244
NGNGごめん。実測したらselect()使うかどうかで結構差あった。
int result;
fd_set rdfds;
FD_ZERO(&rdfds);
FD_SET(*serversock, &rdfds);
// ここから待ち時間
result = select(*serversock + 1, &rdfds, NULL, NULL, NULL);
if (result > 0 && FD_ISSET(*serversock, &rdfds) {
// ここから受信にかかった時間
0257デフォルトの名無しさん
NGNGWinsockならWSAAsync系
>>250
> 究極的には、常にブロックを一切せずに一行読み込むのは不可能。
> select()使ったとしても、タイムアウトするまではブロックするわけだし。
タイムアウト0でビジーループをまわすとか。
> ただ、その待ち時間の間に他の事をできるかどうかの違いでしかない。
その違いこそが重要なんでしょ。ブロックしたら困る局面ってのは。
0258デフォルトの名無しさん
NGNGそれを、独自のプログラムで実現するにはどうすればいいのでしょうか?
ご教授ください。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG漏れはわからねぇ・・・
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNGマニュアルページぐらい読もうよ・・・
0265デフォルトの名無しさん
NGNGディスクリプタ集合に含まれているディスクリプタの数を返す
っていうのがわからなくて・・できたらおしえてほしいのですが・・
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNG1か0だ。>>266を読め
0269デフォルトの名無しさん
NGNGWindowsプラットフォームにおいて(開発/実行環境共)
SNMPトラップを発行するエージェントを開発する際、
1)市販ライブラリを使う。
2)Socketで作る。
3)Windows上のSNMP APIを使う。
どれがいいんですか?MIBは定義しなくてもいいです。
単にトラップをRISEすればよいという仕様で。
1)は再配布条件が厳しいです。
2)は面倒なんですが今一番現実的選択だと思います。
3)はどこにもドキュメントがありません。
拡張エージェントの雛形を作ってレジストリに
登録しました。で、どうやってトラップ発生させる
のよ?
0270デフォルトの名無しさん
NGNGあとエラーのときは-1(winsockならSOCKET_ERROR)になるね。
0271デフォルトの名無しさん
NGNG山のようにあるので参ってます・・。
このスレでIRCクライアント作ったかたいますか?
何か上手い方法ないですかね・・。
0272デフォルトの名無しさん
NGNGplum を参考にしてみては
ttp://plum.madoka.org/plum.html
0273デフォルトの名無しさん
NGNGマルチスレッドのサーバを書きたいと思っています。
http://x68000.startshop.co.jp/~68user/net/c-echo-2.html
手始めにこのページにのってる
echoサーバプログラムを走らせて見たのですが、
クライアントから
文字を入力すると
(クライアントの入力:)echo
(サーバからの文字返答:)echo
となって帰ってくるのが理想だと思うのですが、
実際には一文字入力した時点でサーバから返答されてしまい
eecchhoo
となってしまいます。
これを正常にどうさせるにはどうしたらよいでしょうか?
0274デフォルトの名無しさん
NGNGそれ、理想的な挙動のひとつ。
おまえの理想に適った動作にしたいのなら、
鯖側を行バッファリングするようにしないといけないだろう。
「プログラムは、プログラマが書いたとおりに動く」
この一言を差し上げよう。
0275デフォルトの名無しさん
NGNG0276273
NGNGクライアント側でメッセージを作ってから送信すればよいのですね。
0277デフォルトの名無しさん
NGNGWindows98/MEでRawソケットを使いたいのですが...
どうすればよろしいでしょうか?
Winpcapとかはあんまり使いたくないんですけど....
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNGWinSock2なら使えたんじゃなかったっけか?
0281デフォルトの名無しさん
NGNGWinSock2はWin9xでも使えたっけ?
0282デフォルトの名無しさん
NGNGhttp://homepage2.nifty.com/spw/hint/PacketDump.html
0283デフォルトの名無しさん
NGNGwinsock2は9x系でもつかえる。ちと特殊。
raw socketが使えるかどうかは知らない。
0284デフォルトの名無しさん
NGNGWindows 98 では動いたと思うけど。
0285デフォルトの名無しさん
NGNGhttp://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/default.asp
0286284
NGNG0287デフォルトの名無しさん
NGNGサーバ側はバークレーソケットで
サーバクライアント型のプログラムを書いています。
プロトコルは
長さ(2バイト) + メッセージタイプ(2バイト) +本文
という感じにしているのですが、
クライアントから
pCaOut = new CArchive(theApp.pcsf,CArchive::store);
.
.
pCaOut->Write(buf,strlen(data) + 4);
pCaOut->Flush();
このようにして送信して、
サーバで
read_size = read(sock,buf,length);
してメッセージを受信すると
このread関数が受信待ちで停止してします。
この後、無視してクライアントから続けてメッセージを送るか
クライアントを終了するかするとread関数から抜け出せるのです、
現象からいってクライアント側のflushの問題かと思うのですが、
Flush()メソッドは呼び出しています。
どのような原因が考えられますでしょうか?
なにとぞアドバイスを。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNGCArchiveなんか使ってるからだろ。
それじゃサーバ側がCArchiveのプロトコルを理解できないよ?
0290271
NGNGレスどうもです。
かなり苦労しましたが、完全オリジナルで一応IRCクライアント完成しました。^^;
#まだテストバージョンですが…。
こんなに大変なのがわかってたら作らなかったな…。とほほ。。
0291デフォルトの名無しさん
NGNG無理だよね?
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGhttp://www.iana.org/numbers.html#P
http://www.iana.org/assignments/port-numbers
0294デフォルトの名無しさん
NGNGバークレイソケット API だと 2 バイトだけど下層が IPv6 とか AppleTalk とか
他のプロトコルになると違うのかなと思って…
0295デフォルトの名無しさん
NGNGInternetGetLastResponseInfo関数の使い方を
教えていただけないでしょうか?
wininet関数用のGetLastErrorのようなものだと
思っていたのですが
BOOL InternetGetLastResponseInfo(
LPDWORD lpdwError,
LPTSTR lpszBuffer,
LPDWORD lpdwBufferLength
);
上記lpdwError,lpszBuffer,の意味がわからなくて。
どうかお願いします。
0296デフォルトの名無しさん
NGNGlpdwError:DWORDへのポインタ。エラー番号が返る。
lpszBuffer:バッファへのポインタ。文字列が返る。
lpdwBufferLength:用意したバッファサイズ。lpszBufferへセットされた文字列長が返る。
0297デフォルトの名無しさん
NGNGDWORDへのポインタ。用意したバッファサイズをセットし、lpszBufferへセットされた文字列長が返る。
へ訂正。
0298デフォルトの名無しさん
NGNG示すには 0.0.0.0 とバインドすれば良いのでしょうか?
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGC/C++ ならそうするのですが Java なので明示的な定数が定義されてません。
0.0.0.0 が INADDR_ANY と等価でないケースって何か考えられますか?
0302デフォルトの名無しさん
NGNGつかJavaでサーバーソケットなんかやるなよ。
0303デフォルトの名無しさん
NGNGこれを短くする事って可能でしょうか?
0304デフォルトの名無しさん
NGNG非ブロックモードにしてwritableになるのを待つ
タイムアウト時間はご自由に
0305草加市在住の初心者
NGNGちょっとスレ違いかもしれませんが、FTPに関しての質問です。(といってもコネクトの部分なんであまり関係ないですが)
最初のコネクトの後
以下のようなメッセージが帰ってきます。
220 xxxx FTP server (Version 4.144 Tue Dec 25 12:10:05 JST 2001) ready.
このとき正常にコネクトできたことを判断するのに
メッセージに
「220」という文字列があることでうまくいったと判断していいのか
「ready」も見るべきなのか、そもそもそういう方法で判断してはいけないのか
教えていただけないでしょうか?
0306デフォルトの名無しさん
NGNGRFC嫁
0307デフォルトの名無しさん
NGNG漏れはJava屋じゃないが....
ServerSocketのInetAddressを指定しない版のコンストラクタが、
INADDR_ANYの指定に相当するはずだが。
どうしてもInetAddressを使いたいのであれば、
InetAddress.anyLocalAddress(InetAddressのstaticなinstance)が
INADDR_ANYに相当するようだが、微妙にundocumentだったりする
みたいなんで、InetAddressを使わないのが正しいんだろうな。
0308デフォルトの名無しさん
NGNG送られてきたデータをどの処理に使うかというように振り分けたいんです。
例えばデータがチャット用のTXTなのか、
他の処理に使うためのデータなのかというような感じで判別したいのですが・・・
クライアント側で送るデータにヘッダーみたいなものを付けて
それをクライアント側でCASE文あたりで判別できればいいなと思うのですが・・・
色々調べてみたのですが、いまいちそれらしいものが見つかりませんでした。
どなたか良い方法を教えていただけないでしょうか?
おねがいします!
0309デフォルトの名無しさん
NGNGSMTP, HTTP, FTP なんぞのメジャーな TCP プロトコルは数値 3 桁だけで
意味を決定できるように出来ている。
0310デフォルトの名無しさん
NGNGデータの頭にヘッダつければいいだろ。
VBだったら&でつなぐのか?
ポート分けちゃうという方法もある罠。
0311デフォルトの名無しさん
NGNGM$は仕様公開してないよね?Microsoftネットワークってのは非公開なのか?
0312デフォルトの名無しさん
NGNGRFC1001、1002もそこまで書かれてないような気が...
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGでも、Microsoftネットワーク仕様公開してるとこあったら教えてね。
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGsambaはUNIX用だから、Socketプログラミングになってるんじゃないかなぁ?
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGデバッガで追いかけようにもLinux無いし...
0321デフォルトの名無しさん
NGNGSMBのlogin/offは、そのまんまcli_login.cがある。
SMBリクエストに対しては、process.c/switch_message()関数が応答で、実態はreply.cにある。
で、逆にSMBに要求はどこから出してるんだろう?
0322デフォルトの名無しさん
NGNGSMBに入出力があるわけだから、SMBクラスにしといた方が読みやすいと思うんだけどどうよ。
0323デフォルトの名無しさん
NGNGSambaのGUIからNTのマシンにファイルをコピーするとき、どの関数がコールされますか?
0324デフォルトの名無しさん
NGNGみれ。 smbclinet.cも参照な。
それと、Sambaは鯖ソフトだから、SambaのGUIと
言われても、設定用のSWATくらいしか思い浮かばん。
0325デフォルトの名無しさん
NGNGsmbclinet.cが見つからないけど、libsmbclient.cのこと?
Linux側にはSambaのGUI無いんだ。どうりでGUIソース無いわけだ。
0326デフォルトの名無しさん
NGNGLinux端末から、WinNTサーバにファイルをコピーすること出来ますか?
それが出来る場合、コールされる関数が知りたいです。
0327デフォルトの名無しさん
NGNGhttp://samba.org/doxygen/samba/head/libsmbclient_8h.html
の方がわかりやすいかもね。 このばあい、多分、
smbc_init, smbc_open/smbc_creat, smbc_write, smbc_close
だろうな。
0328デフォルトの名無しさん
NGNG有難うございます。>>327
そうかぁ、fileとcopyで全文検索かけてもひっかからないわけだー。
要らないreply.cはひっかかったけど。
0329デフォルトの名無しさん
NGNG関数とかは知らんが、smbclient(CUIのftp clientみたいなツール)の
ソース追えば実際にファイル転送してるところは分かるんじゃない?
0330デフォルトの名無しさん
NGNGSambaにはsmbclientっていう、CUIなftp clientっぽいツールも付属
してるから、それのソース追うのが手っ取り早いかも。
0331デフォルトの名無しさん
NGNG329はちとタイミング外したレスだったので無視してちょ。
0332デフォルトの名無しさん
NGNGlibsmbclient.cは今見てますが、openとかrenameとか関数名分かりやすいです。
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNGcli_stup_bcc/cli_send_smb/cli_recieve_smbがセットで呼ばれてるけど、
ここでパケット送信&受信?
0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNGcli_send_smb→write_socket→write_socket_data→write
という感じ。
fdはファイルディスクリプタだから、ソケットもファイルとして扱われるんだ。
0337デフォルトの名無しさん
NGNGMicrosoftが非公開だったネットワーク・プロトコルとAPIを公開
http://www.atmarkit.co.jp/fwin2k/insiderseye/20020927unveilapi/unveilapi.html
守秘義務契約に調印だってYO!
プロトコルに守秘ってのも、インターネットでクライアントの種類が無数になった時代に何だかな...
0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNGクライアントの種類が無数になったって守秘にするプロトコルと関係ないクライアントだろ。
「プロトコルに守秘」と「インターネットでクライアントの種類が無数になった時代」というのは関係ない。
0340デフォルトの名無しさん
NGNGこのまま、Samba for DOS作っちゃえ。
0341デフォルトの名無しさん
NGNG同じだけ勉強してたら弁護士にでもなれそうな気がするんですが・・
0342デフォルトの名無しさん
NGNGそれもまた人生。
目指してみては?
0343デフォルトの名無しさん
NGNGNDISやODIのサンプルコードが見つかりません。
M$もNDISを利用するサンプルコードを出してないようですが、どうなんでしょう?
0344デフォルトの名無しさん
NGNG楽しくないなら辞めた方がいいだろうねぇ。
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGそれもまた人生。
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGDOS時代にはThe Netが一般的じゃなかったから、
*socketのようにはいかないだろうとは思うけど
0349デフォルトの名無しさん
NGNGお勧めのサイトとかあります?
CONNECTメソッドとかを発行するとこまでは
辿り付いたのですが・・・
0350デフォルトの名無しさん
NGNGPROXYは無いも同然。
あとはSSL_connectとか発行するだけやん。
0351デフォルトの名無しさん
NGNGそうなんです。SSL_connect()でこけます。
やっぱり、CONNECTメソッドのハンドシェイクが
うまくいってないんでしょうね。
0352レッドバグ
NGNG「FreeBSD ネットワーク管理ガイド」
ピアソン エデュケーション /刊
にDOSのネットワークソフトの事も書かれてて.
フリーのソフトなどもいくつか書かれてた.
ただし,URLが切れているのもあるけど,フリーの(ソース付き?)プログラムなどは,以前私が,グーグルでサーチしなおしたら,出て来ました.
参考になるかどうかは分かりませんが.
0353デフォルトの名無しさん
NGNG参考になりますが、せめてDOSフリーソフトのお名前だけでも...
0354レッドバグ
NGNGすまぬ.
その本がどっか逝っているので調べられなかった....
おまけにDLしたはずのDOSプログラム(とアドレス)もどこにあるかわからん.
申し訳ないけど,書店に行って上記の本を当たってくださいませ.
0355デフォルトの名無しさん
NGNGで取得したいのですが、どなたがご存知な方がいらしたら教えてください。
よろしくお願いします。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGUNIXでは、自分で設定するしかないと思いますが、
SMBの場合は、ログインのあとに割り振られるのかな。
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG1つのIPとポートに接続可能なクライアントの数って
六万コネクト(?)くらいなのでしょうか(65535くらい?)
オンラインゲームとか、かなりの数がサーバに繋がると思うんだけど
どうやって処理してるのだろう
0360デフォルトの名無しさん
NGNG普通に負荷分散
質問:
Unix C でマルチキャストでパケット配信するにはどうやってグループに
JOIN するんだ?
0361デフォルトの名無しさん
NGNGえーと、フツーに負荷分散はいいんですが・・・前提かいてませんね。スマソ
グローバルアドレスが1個/ネット自体の負荷はキニシナイという仮定で。
クライアント ← net → PC1 ←→ PC2〜PCn
として、実際の処理はPC2〜nにさせます。
で、振り分けさせるPC1にクライアントがどれくらいコネクト可能か
知りたいな、と。
0362デフォルトの名無しさん
NGNGコネクションの識別には送信元IP、送信元PORTも使われるのです。
0363デフォルトの名無しさん
NGNGPC1 の役割がルーターかプロキシか (つまり OSI 参照モデルの何か) による。
0364デフォルトの名無しさん
NGNGということは、最大数自体は気にしなくていいとという感じなんですね
ありが�dございまス
0365デフォルトの名無しさん
NGNG>>361
ありゃ。
役割としてはPC1がPC2-nの接続数を覚えてて、てきとーに振り分けて PC2-nと接続
PC2-n は互いに通信して情報やりとり/データ処理
ルータではないとはおもうけど、プロキシと言っていいのだろうか・・・
0366デフォルトの名無しさん
NGNGだ・か・ら、
PC1は、TCP/IPでクライアントとコネクションを張って(レイヤ7で)
振り分ける必要は必ずしもない。
パケット毎に、送信元のアドレス&ポートをハッシュしてPC2〜PCnに
(レイヤ3または4で)振り分けたって良い。
いずれにせよ、L4スイッチとかL7スイッチ使った方がPC使うより速い
と思うけど。
0367デフォルトの名無しさん
NGNGUDPのパケットが落ちるときというのはどういう時ですか?
コリジョンは起きませんよね?
0368デフォルトの名無しさん
NGNGファイルディスクリプタの数は4096個まで。
0369デフォルトの名無しさん
NGNG>>366
おお、そんな便利な物があったんですか
そーゆースイッチって値段高いのかなぁ・・・
#ふつーのスイッチで付いてる機能なのだろうか
プログラム的にはPC2-nの通信のみでイケそうですねえ
ありがとうございました
0370デフォルトの名無しさん
NGNG最初のが送り終わらないうちに次を送ると、
最初のがなくなっちゃう事がある。
0371デフォルトの名無しさん
NGNGう、socketもファイルディスクプリタとして消費されてしまうのだろうか
テストプログラムつくらなきゃいかんな(泣)
0372デフォルトの名無しさん
NGNGUDPは運がよければ相手に届くというだけで、
ノイズが発生したり黒ヤギさんが配達したりとかでも消えるような。
0373デフォルトの名無しさん
NGNG無謀だな。そんなことすら知らないようなレベルで
10万単位の接続をさばけるのを作れるとは思えない
0374デフォルトの名無しさん
NGNG負荷分散(サーバロードバランシング)機能のついたL4スイッチなら、
300万円くらいからあるんじゃないか? まあこれ以上は板違い。
0375デフォルトの名無しさん
NGNG>>373
はい。自分でもそう思います。
趣味で作るサーバ&クライアントで、多くても100人前後と目測しています
作ったあとで10万コネクトサーバにプログラムを変更するのは辛いので
得た知識はとてもためになりました。
>>374
なるほど。その値段ならPC1を作る時間+値段とL4スイッチという物の
性能とを考えればいいわけですね。どうもですー
0376デフォルトの名無しさん
NGNG本当はここ。こんにちは。よろしければ教えてください。
現在、VC++のサンプルプログラムのチャット
プログラムをサーバ側とクライアント側のプログラム
を同一マシンで動かそうとしているのですが、
クライアントが接続するときに接続拒否をされているようです。
私のOSはWIN98ですが、やっぱりこれが原因でしょうか?
サーバー機能がないOSだからでしょうか? よろしくお願いします。
0377デフォルトの名無しさん
NGNGTCPやソケットはIP必須で、SMBのクライアントはIPが表面に出ないので、無理でしょうかね?
SMBでは、DHCPでIPアドレス自動設定してますが、いつやってるんでしょうか?ログイン時?
0378デフォルトの名無しさん
NGNGWIN98でも動くはずです。
接続拒否されているという判断は、どうなってるから拒否されてると
思ったんですか?
エラーは出てますか?また、出ていたらどんなエラーですか?
サーバのポート設定とクライアントのソレとは同一ですか?
クライアントの接続IPは正しいですか?
ファイヤーウォール等のソフトは動かしてますか?
0379デフォルトの名無しさん
NGNGDHCPで設定やってるのなら、PCに名前がついてるのでは
その名前でやりとりすれば、IPは知らなくても繋がるのでは
0380デフォルトの名無しさん
NGNGえっと、CSocketクラスのConnect()時です。
GetLastError()を使ってエラーコードを取得しました。
ポートもIPアドレスも同じ設定です。
んー、でも動くのならやはりこちらの設定なのかなあ?
0381デフォルトの名無しさん
NGNGPC名をSMBに追加するときにIPアドレス決まって、
他のサーバに問い合わせるときにサーバのPC名からIP取れる、
という考え方であってますか?
0382デフォルトの名無しさん
NGNGエラーコードを取得したのなら、どんなエラーかわかるのでは
どんなエラーか当方はわからないので、これ以上はなんとも。
0383デフォルトの名無しさん
NGNG<たとえば>
わたしは www.2ch.netのIPを知りません。
でも、プラウザにwww.2ch.netと入れてエンター押すと、IP知らなくても
サーバに繋がりデータを読み書きすることができます
</たとえば>
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGエラーコードは 10016 で、WSAECONNREFUSEDだと、"接続
試みたがリジェクトされた"と、いうエラーだったはずでしたが、
ヘッダファイルで確認したところそんなコードは定義されておらず、
なぜ、接続拒否だと決め付けたのか自分でも理解できません。で、
もう一度エラーコード確認しようと動かすと、正常に動いてしまいました。
良く分からないまま、OKとしちゃいます。いっしょに考えてくれて
ありがとう。(エラー出てた頃は、インターネットに接続しませんでした。
でも、同一マシンだしなぁ? まあ、いいや、貴重な時間すみませんでした。)
0386デフォルトの名無しさん
NGNGプロトコルだから、NBTがどうこうしよう、って時には
すでにIPアドレスは設定済みな筈だが、、、
まさか、NetBEUIが通ってたりする話じゃねーだろ。
0387デフォルトの名無しさん
NGNGNetBEUIは関係ないけど、
NBTクライアントのネットワークの設定にIPアドレスは設定しないよね。
じゃあ、いつ決まるの?ってのが知りたいです。
ログインのときに、コンピュータ名をSMBサーバに登録すんだよね?
0388デフォルトの名無しさん
NGNGSMBが動き出す前に、DHCPがTCP/IPの設定を
ひと揃い終わらせるの。 IPアドレスの決まったあとで、
SMBは動き出して、自分の初期化をするわけ。
0389デフォルトの名無しさん
NGNGすっきりと疑問を解決したいのであれば、本屋さんや会社の資料室や図書館へ行って
DNSとかTCP/IPとかの本を読んだほうがすっきりするかと。
387さんの疑問はどうやって不定なIPのPC名だけで繋がるかという事でしょうか?
0390デフォルトの名無しさん
NGNG・田中さんのところへ電話したい
・電話帳をもってくる
・田中さんの苗字と名前で電話番号を轢く
・電話番号GET
・184の後に電話番号をプッシュ
・非通知拒否でギャフン
</たとえば>
0391デフォルトの名無しさん
NGNG定義されてますが
0392デフォルトの名無しさん
NGNGそれはSMBのサーバ側?クライアント側?
>>389
アンドキュメンテッドMicrosoftネットワークは読んだが。
とりあえず、M$はパケット内容どころか仕様を公開してないが。というかDNSとSMBは別なんだけど。
0393デフォルトの名無しさん
NGNGなぜSMBという事にこだわってるのだろう
TCP/IPを使った通信の仕組がわかれば疑問も解決するのでは
>>390 さんが解説してますし。
0394デフォルトの名無しさん
NGNGSMBのクライアントをこれから自作するから。
>TCP/IPを使った通信の仕組がわかれば疑問も解決するのでは
SMBのパケットがTCP/IPの形式になっただけ。だから解決しない。
0395デフォルトの名無しさん
NGNGSMBクライアントが、たとえば\\host\nameにアクセスしたとき、
サーバーhostのIPアドレスを、どうやって求めるか、って話なら
・グローバルキャストで訊く
・WINS鯖に訊く
・DNS鯖に訊く
・*hosts
という手段がある。というか、gethostbynameを発行するわけだな。
0396デフォルトの名無しさん
NGNG申し訳ないんですが、394さんの疑問点がよくわからないのです。
IPのかわりにPC名(というものアレだが)を入れるということが疑問なのでしょうか
IPとPC名がどうやってイコールになることが疑問なのでしょうか
0397デフォルトの名無しさん
NGNGSMBクライアントをDOSに実装するのに、DOS用TCPやSocketが使えるか、を検討してるんです。
TCPとか使うにはIPが必須になるわけで、SMBクライアントのIPはいつ決まるんだ、みたいな。
0398デフォルトの名無しさん
NGNGDOS用ソケットで無料のものなんかないし、
Packetドライバプログラミングかなー、と。
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGIPは決めないといけない。DHCPなり、固定IPなり。
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNG外部スペックは決まってて、
製品をLANに接続してDOSクライアントの設定はある程度可能。
で、製品からLAN上の指定したフォルダにファイルをコピー。
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNGソケットプログラミングの範疇と言えないこともない。
0406デフォルトの名無しさん
NGNGどうやんだ?
SAMBAのソースん中にある?
0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG0409SMB
NGNGでも、すみませんが今日は適当な時間で消えます。ログは明日読ませて頂きますが。
0410デフォルトの名無しさん
NGNGDHCPはDHCP。SAMBAとは無関係。
http://www.google.com/search?q=dhcpclient
0412SMB
NGNGなんか、わかって貰えてうれしい。
でも、SMBのまんまだと、実装大変なんで、ファイルのコピーに絞ります。
んで、それを扱うCかなんかのライブラリとして提供されてないと
一般人には手も足もでないよね。とりあえず、おいらには手も足もでません。
0414SMB
NGNGPacketドライバはGetしました。Socketは良いのが無いです...
0416SMB
NGNG機能的には、NDISドライバやODIドライバと同じ。
でも関数が少ない分、Socketに近い気がする(だけかも)。
0417デフォルトの名無しさん
NGNGとftpだけで作れたりして
ってことはTCP/IP自体を自分で実装するってこと?
そんなことできたら神じゃん。
有料でもどこかにあるだろうTCP/IPを買ったほうがいいよ。
0419SMB
NGNG鯖側をいじることは許されてません。
確かにWin2000/IISなら、フォルダのプロパティで鯖にFTPサーバ起動出来て簡単なんだけどね。
でも、環境はそういう固定じゃないので。
0421SMB
NGNG買えばすむ問題かなー、って不安がある。
どういうことかというと、最初に書いた、
TCPソフトが環境設定ファイルとかでIPとかネットマスクとか要求してそう。
インターネット用TCPソフトはあっても、SMB用TCPソフトはあるのかなー?
0422デフォルトの名無しさん
NGNGRFC嫁よ。
それと、
>インターネット用TCPソフト
>SMB用TCPソフト
意味不明すぎ。
そりゃ、TCP/IPで通信する以上、そういう設定は必要じゃないの?
その設定はDHCPで取得することもあるだろうけど。
0424SMB
NGNGだから、UNIXライクなTCPソフトならIP初期値を要求しそうって心配。>>422
0426SMB
NGNGレスがループしてるよ。
やりたいのは、IPは設定せずにLANに接続出来るクライアント。
クライアントの設定で許されるのは、ユーザ名とワークグループであって、
空きIP調べて使うなんてユーザインターフェースは不可。
0428SMB
NGNGユーザインターフェースが決まってて、どう実装するかを検討してるの。
0429デフォルトの名無しさん
NGNGDHCPを実装しても、IP設定が自動化されるだけ。
0430SMB
NGNGSAMBAはTCP/IP。もっと言うと、NetBIOS over TCP/IP。
0432SMB
NGNGいや、Windowsのような動作をすれば良いわけ。
Winサーバの設定されてるLANに素直に入れるDOSクライアント。
0433デフォルトの名無しさん
NGNGてきとーにIP振るのか?
0434SMB
NGNG0436SMB
NGNGあの、そういう競争する気は無いわけ。
製品が完成すれば。
0437デフォルトの名無しさん
NGNGそれにWindowsにはWINS鯖を指定するフィールドがあるし。
あー、なんかだんだん分かってきた気がする。
つまり、WINS鯖かなんかに、「foohost : 192.168.0.4」と登録しといて、
そのクライアントは、foohostを探して、192.168.0.4を自分のIPとして
設定する〜とかそういうことか?
0438SMB
NGNGWINSが空きIPを動的にふってくれるようだよ。
0439デフォルトの名無しさん
NGNGに使えそうなものが色々あるから、検証されてはいかが?
[5]DOS 上でnfs をmountするfnfs
なんて使えそうなモノですのに。
0440デフォルトの名無しさん
NGNGWINSがIPを振るなんてはつみみです
0441デフォルトの名無しさん
NGNG0442SMB
NGNGただ、UNIXベース(nfs、ftp、telnet)のものはやめておいて、SMBベースにしようと思います。
UNIXベースだと、Win鯖側でサービス起動ということが必要になるので。
0443デフォルトの名無しさん
NGNGhttp://www.samba.gr.jp/project/translation/using_samba/using_samba/ch01_01.html
へどうぞ
0444デフォルトの名無しさん
NGNGソースもあるわけだし。
あとは納期と金額というのは余計なお世話な部類でしょうけど、、、
0445デフォルトの名無しさん
NGNGわからない奴だなぁ・・・
お前がIPアドレスがどうのって書いてるから、必然的にNetBIOS over TCP/IPになんの。
それを使わないとすると、NetBEUIって、TCP/IPと何の関係もないプロトコル使う意味になるんだよ。
少なくとも、お前の今のレベルじゃ自作は無理。DOSで使える製品探して、無かったらあきらめろ。
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNGDOSで作るよりも安定度や信頼性や手間や時間が(烏賊略)
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGLAN <-> 専用ハードウェア <-> RS-232C <-> DOS
にして、専用ハードウェアを外注。
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGそのサーバにクライアントを接続させればどんなプロトコルだろうと文句は
#言われるのだろうか
0453デフォルトの名無しさん
NGNGDOSで使えるLANボード/カードがいつまで手に入るかわからんし、
アリといえば蟻鴨しれヌ
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGこないだ「マルチスレッドプログラミング相談室」にも楽しい奴いたよ(藁
0457デフォルトの名無しさん
NGNG増減さしてたら、って香具師だな
0458デフォルトの名無しさん
NGNGSMB氏はsambaクライアントを作りたいのではなく
Windowsネットワークにログインしたいんだな。
0459デフォルトの名無しさん
NGNGやることはファイルの入出力だろうけど。
そして同時書き込みされてファイルがあぼーん
0460デフォルトの名無しさん
NGNGでも設定はしたくない。で、DHCPじゃだめなの?
DHCPじゃ、いや。WINSがイイ。WINSが空きのIPアドレスを振ってくれる。
あれっ!DHCPでいいじゃん。
ってこと?
0461デフォルトの名無しさん
NGNG・DOSで
・SMBを使って
つながりゃ目的達成というように詠んでるんだけどニャー
0462デフォルトの名無しさん
NGNGをー読むと〜
MS製品のサーバに〜SMBで接続するならMSが正式に出したドライバ経由以外には〜
不可能なわけで〜〜
MSがDOS用SMBドライバを出していないかぎり〜〜
接続は不可能〜〜ラララー♪
上の文章を読んでも自作ドライバ等で接続するのなら〜
何がおきてもヘンじゃないということ〜〜
わたしが上司なら止めます。部下なら辞めます。
0463デフォルトの名無しさん
NGNGhttp://www.tagiya.co.jp/~toshi/lanman/v486e.htm#net_start
0465デフォルトの名無しさん
NGNGおすすめの本をおしえてください。
0466デフォルトの名無しさん
NGNG0467ゆうき
NGNG使っているのはbasicです。
連立一次方程式を解く。
初期値(x=0)を与えて、蜘蛛の巣のようにして連立一次方程式を解いてみる。
1)y=2x+4 y=4x
2)y=x−1 y=−2x+2
3)y=5x+4 y=−3x+1
4)y=−x−2 y=1/2x+3
問題
1)方程式を入力する順番によっては解けない。
・・これを解決するには?
プログラムの観点から、どういうプログラムにするか?
・・なぜ解けなくなるか?
数学的に説明せよ。
こんな感じなんですが、よろしくお願いします。
0468デフォルトの名無しさん
NGNGプロトコルはもうおきまりになりましたか?
0469ゆうき
NGNG0470>>466
NGNGそれを監視します。
よろしくお願いします。
0471デフォルトの名無しさん
NGNG・VBでサーバを作り、クライアントはそのサーバに接続するのでしょうか
・パケットを盗み見して監視するのでしょうか
前者なら(うちはVB6ですが)ちゃんとマニュアルに出てました。
後者ならその手のソフトのソースがころがってたらソレを見てVBにするとか。
0473>>471
NGNG前者です。
そもそも、WinSockを使うのが定番なのでしょうか?
そのあたりもまだわかりません。
マニュアルというのは、なんのマニュアルでしょうか?
VBの?
よろしくお願いします。
0474ゆうき
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1036154952/
0475デフォルトの名無しさん
NGNG規模にもよるけど。
マニュアルというか、MSDNライブラリですねぇ
0476>>475
NGNGMSDNライブラリですね。
あとは調べてみるとhttp://www.emurasoft.com/winsock2.htm
この本がよさそうですね。VCみたいですが。
0477デフォルトの名無しさん
NGNGVBで作るなら、この本はちょっと違うような。
ネットでVBのネットのプログラムのソース見るくらいで十分事足りるかと。
買うならネットワーク系の本をどうぞ。
0478>>477
NGNGネットワークの本というのは、やはりTCP/IP関係ですかね?
そのあたりをイチから勉強する時間はなさそうですが、
概念は大切だと思うので、本を勝ってみます!
0479デフォルトの名無しさん
NGNG気の向いたときに読むと、だんだんわかってきますし。
VBでWinsockコントロール使うだけならさほどむずかしくはないと思いますが、
しっかりとあいまいではない情報/知識をもっておかないと、何かと不便です。たぶん。
0480デフォルトの名無しさん
NGNGあんたの言うDOSって、windows付属のDOS窓上とかじゃないよね?
だったらwinsockとか調べるの完全に無駄だと思うけど。
0481デフォルトの名無しさん
NGNGならないと思うデスが。
0482デフォルトの名無しさん
NGNGマルチクライアントとかじゃなければ簡単だった印象があるよ。
なんとかっていうモジュール組みこんで使ってた。
0483デフォルトの名無しさん
NGNGDHCPによる決定を試みた後、Windowsが適当にIPを決定する。
この決定方法はどこかに資料があった気がするが(RFC投げてたかも知れん)
0484デフォルトの名無しさん
NGNGこのへんか?
http://support.microsoft.com/default.aspx?scid=KB;en-us;q220874
169.254.0.0/16のプライベートアドレスから、今のセグメントで他に
使ってるやつがいなさそうなアドレスをてきとーに選ぶらしい。
0485SMB
NGNGLan Managerはだめです。
というより、Lan Managerで動作してるものを置き換えるものを作成します。
MSが売る気なくてライセンスしてくれないんで。
0486SMB
NGNGパケットドライバ(send/recieve)の繋ぎのプログラムはどうなるかです。
パケットドライバにアクセスしてるコードを手に入れましたが、
sendをwhileでリトライしているだけ、みたいです。
つまり、sendの成功失敗はドライバが教えてくれるので、
リトライするだけでTCPみたく通信を保証できるかな、と。
で、送る内容はSambaのコードが作ったパケットだけで良いかな。
0487SMB
NGNGint pkt_send( char *buffer, int length )
{
struct REGPACK regs;
int retries;
retries = 5;
while (retries--) {
regs.r_ax = PD_SEND;
regs.r_ds = FP_SEG( buffer );
regs.r_si = FP_OFF( buffer );
regs.r_cx = length;
intr( pkt_interrupt, ®s );
if ( regs.r_flags & CARRY )
continue;
return( 0 );
}
return( 1 );
}
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNG書き方は茶化してるような感じだけど、 >>462 は的を射てると思われ。
冷静に現状を把握しないと、会社の信用すら揺るがしかねない
他に手がないわけでもないのに。
>intrって何だ?
って、intr( pkt_interrupt, ®s );
にinterruptって書いてるやん、、、
0490デフォルトの名無しさん
NGNGNT側のレジストリいじったりしなくちゃいけなかったよねぇ
Samba for DOSはかなりヘビーな代物になりそうですね。
ファイル名の8.3問題も浮上?
0491デフォルトの名無しさん
NGNGSambaもMSのライセンスを受けてないし
Sambaをパッケージに含めて販売してる会社もあるわけだが
>>490
パスワードの暗号化問題?
0492デフォルトの名無しさん
NGNGhttp://www.samba.gr.jp/project/translation/using_samba/using_samba/index.html
を読んで、どんな歴史なのか見るといいかも
SMBに入るのが良い悪いじゃなく、
MSが独自仕様をほどこして仕様も公開していないSMBに入れないというのが難点かと。
0493デフォルトの名無しさん
NGNG入れるようになってるんでないの?
0494デフォルトの名無しさん
NGNGはい。
ふつーにUNIXなどでSambaサーバたてて、
ふつーにWindowsで共有したりして、
ふつーにMACなどで共有したりして
やれば、問題ないかと。
0495デフォルトの名無しさん
NGNG>冷静に現状を把握しないと、会社の信用すら揺るがしかねない
>他に手がないわけでもないのに。
だから、こういう書き方やめてやれよ。
Lanmanのライセンスに問題があるから、別もの作ってると書いてあるじゃないか。
邪魔するレスが多いな。
0496デフォルトの名無しさん
NGNGいちいち邪魔するレスに気をたてても。
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500SMB
NGNGstatic int tcp_read( tcp_Socket *s, byte *datap, int maxlen )
static int tcp_write( tcp_Socket *s, byte *dp, int len )
これ使えば、Sambaのread/writeと等価かな?
これでDOSコンパイル可能???(いや、全機能可能とは言わんが)
0501SMB
NGNGint sock_write( sock_type *s, byte *dp, int len )
やっぱ、こっちかな?
0502デフォルトの名無しさん
NGNG上記コマンドでやるならば、Sambaプロトコルを自作しなければいけません
確かに煽ってるような発言もあるかもしれませんが、
有益な情報まですべて無視してるように思いうけます。
0503デフォルトの名無しさん
NGNGプロトコルは何を使う予定なのでしょうか>SMBさん
0504SMB
NGNGSambaプロトコルを自作するんじゃなくてSambaのソースの一部をDOS上でコンパイルするんだが。
0505SMB
NGNGま、Sambaのコードの通り。
0506SMB
NGNG一応SambaはTCP/IP経由でSMBにログインしまふ。
0507デフォルトの名無しさん
NGNGそんな説明一言もありません。それで分かれと言うほうが無理
お前の頭の中ではすべての解説がそろってるんだろうけど
0509デフォルトの名無しさん
NGNG例えばですけど、そのDOS上でGETするだけのHTTPクライアントなら作れますか?
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG>でも、sambaってNetBEUIだよね。パケットは同じ?
とか
>SMBの場合は、ログインのあとに(IPが)割り振られるのかな。
とか
>TCPとか使うにはIPが必須になるわけで、SMBクライアントのIPはいつ決まるんだ、みたいな。
とか
逝ってた人の発言とは思えませんね。笑い。
0512デフォルトの名無しさん
NGNGhttp://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1001.html
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1002.html
これを実装するためにsambaのソースをパクろうとしてるんだよね。
そしたらまずDOS上でTCP/IPアプリケーションが作れる環境がなきゃだめだよね。
その環境としてパケットドライバ上に実装した
static int tcp_read( tcp_Socket *s, byte *datap, int maxlen )
static int tcp_write( tcp_Socket *s, byte *dp, int len )
か
int sock_read( sock_type *s, byte *dp, int len )
int sock_write( sock_type *s, byte *dp, int len )
が使えるかも?っていってるんだよね。
もし、使えるならこれらの関数を使ってHTTPクライアントが作れるわけだ。
まずは、簡単なHTTPクライアントから始めてみてはどうだろう。
なんか違うかな。もー、よくわからんけどがんばるぜ。
0513デフォルトの名無しさん
NGNGSMB/CIFS <--ここを作るの?
-------
NetBIOS <--ここはどうするの?
-------
TCP/IP <--ここはどうするの?
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGそれを使うと。
で、何が困るの?
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518SMB
NGNGで、libsmbclient.cのsmbc_open/smbc_creat, smbc_write, smbc_closeを移植しようかな、と。
その関数の前後に、nt_logon/logoffすれば完成?
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG要る要らないの問題じゃない。
お前の言うパケットドライバで簡易HTTPクライアントくらい
ソケットの場合と同じように作れなければ、sambaの移植は無理。
そのくらい文章から読み取れよ。
テストもせずにパケットドライバでソケットをエミュレートする
コードを書けるんなら止めはしないが。
0521デフォルトの名無しさん
NGNGとても思えないが漏れが困るわけでもないしどうでもいいや
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGつながりゃいいみたいだし。
今までにあがった問題点も、さほど気にとめてないようだし。
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGstatic int tcp_read( tcp_Socket *s, byte *datap, int maxlen )
static int tcp_write( tcp_Socket *s, byte *dp, int len )
int sock_read( sock_type *s, byte *dp, int len )
int sock_write( sock_type *s, byte *dp, int len )
これってsambaのソースかー
0526SMB
NGNG0527デフォルトの名無しさん
NGNG合掌。
0528デフォルトの名無しさん
NGNGにすると、今のサーバはSMBで繋がるし、SMBクライアントも移植しなくてすむし。
スペルが間違ってるのは愛嬌だ。
0529デフォルトの名無しさん
NGNGあれ?
じゃあ、前のであってたか。
そっかー
wattcpってのがあればDOSでもTCP/IP通信ができるんだね。
最初のころパケットドライバってのはデータリンク層の通信を
するって書いてあったからTCP/IPはいったい誰がやるんだー
って、思ってたけどすべて謎は解けた。
0530デフォルトの名無しさん
NGNGNT3.5の頃はオマケでCD付けてたり、Niftyからダウンロードできたり
したんだけどねぇ。
しかしパケットドライバベースでいきなりSMBか。若いってすばらしい。
0531デフォルトの名無しさん
NGNGもちろんTCP/IPは含んでないけど…
0532SMB
NGNGnt_login/off、open/write/closeだけにしようかと。>>531
ところで、libsmbclient.cのsmbc_open(てのが、Winにファイル書き込むんだよね?)を
呼んでる小さなツールがあるそうですが、そのmain関数があるソースはどれになるのでしょう?
Linuxの環境作らないといけないけど、今週は無理そう...
0533SMB
NGNGその部分のソースはどこになるんだろう?
0534SMB
NGNGWinやDOSでは見ない型だけど何に置き換えれば良いんだ?
0535デフォルトの名無しさん
NGNGhttp://www02.so-net.ne.jp/~suzuden/inet/lan2.htm
0536デフォルトの名無しさん
NGNG0537SMB
NGNGDHCPC便利そうだね。どう組み込むかはまだ分かってないけど。
0539SMB
NGNGnamequery.cの
BOOL name_register_wins(const char *name, int name_type)
で、良いのでしょうか?詳しい方教えて頂きたいです。
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGその前にこれまでの経過をまとめろや。
0542SMB
NGNGどうも、smbclientのDOS版のサブセットが出来れば良いみたい。
多分、そこから、smbc_open/write/close(libsmbclient.c)が呼ばれてる。
次に、cli_open(clifile.c)/write(clireadwrite.c)。
その次に、cli_stup_bcc/cli_send_smb/cli_recieve_smb→write/send、
という感じ。write/sendから、wattcpのsocketを呼ぼうかな、と。
wattcpがパケットドライバを操作してくれる。
0543デフォルトの名無しさん
NGNGなのに何故歯を食いしばり
君は逝くのかそんなにしてまで
0544SMB
NGNGホスト一覧とかは、これだけ。
static int do_host_query(char *query_host)
{
cli = do_connect(query_host, "IPC$");
if (!cli)
return 1;
browse_host(True);
list_servers(workgroup);
cli_shutdown(cli);
return(0);
}
0545SMB
NGNGstatic void cmd_put(void)
{
pstring lname;
pstring rname;
fstring buf;
char *p=buf;
pstrcpy(rname,cur_dir);
pstrcat(rname,"\\");
if (!next_token(NULL,p,NULL,sizeof(buf))) {
DEBUG(0,("put <filename>\n"));
return;
}
pstrcpy(lname,p);
if (!next_token(NULL,p,NULL,sizeof(buf))) {
p = strrchr(lname, '/');
if (p) p++;
else p = lname;
}
pstrcat(rname, p);
dos_clean_name(rname);
do_put(rname,lname);
}
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGそもそも君は、Cでデバドラを書いたことがあるのかね?
生暖かい目で見守っております。
0549デフォルトの名無しさん
NGNG悪いカードではないですが。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGだから、WINSかIPはもらえないって。
0552デフォルトの名無しさん
NGNG昔仕事で作ったアプリが動かんもの。
で、サービス名知ってたら教えてください。
0553デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/net/vbtransitionguide/chapter5/chapter5_7.asp
廃止方向なのかな、だれかしりません?
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGでも、DdeConnectで落ちるし・・・うーむ。
所で、なにやったらDDEスパイに乗りました?
0556SMB
NGNG了解。WINSからIPは貰えないのね。
IP無しで、WATTCPのSOCKET動作するかな...
0557553-554
NGNG0558デフォルトの名無しさん
NGNGキタ━━━( ´∀`)・ω・) ゜Д゜)・∀・) ̄ー ̄)´_ゝ`)∀ ̄)▽’)´Д`)━━━!!
0559デフォルトの名無しさん
NGNGそんな状態で作ったプログラムなんて、誰も使いたくないだろうし。
0560557
NGNG0561デフォルトの名無しさん
NGNGDDE廃止といわれても困りますよ。> MS
DDEはサービス名だけの差で全アプリ互換性のある制御ができるのに。
(本当は完全にはできないんだけどぉ)
ActiveXコンポーネントでやれってか!> MS
Netscape7のバイナリ見ると、"WW_GetWindowInfo"とか "WWW_OpenURL"
とかのお約束トピックが見つかります。
なので、サポートしてないってことはさそう。
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG今あるソフトはDDEちゃんと使えるとおもうけれど、これから出る
ソフトは他のに移行するのかもネ
0564デフォルトの名無しさん
NGNG今までのアドバイスを全然聞いてないのが丸分かりだよね
どうせ話を聞く気がないんだったら質問するだけ無駄なんだから
ここでゴミを垂れ流すのやめてほしい。他の人の邪魔。
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG>>559に対してですか?>>556に対してですか?
0567デフォルトの名無しさん
NGNG無知の怖さ。> 562
エクスプローラからドキュメント開く時とかに使ってんの知らないんだね。
0568デフォルトの名無しさん
NGNG何が疑問かわからないが
今までの〜が559に
それ以外の行が556に対してじゃないの?
0569デフォルトの名無しさん
NGNGSMBって入ってるパケットが飛び交ってるね。
0570デフォルトの名無しさん
NGNGアフォか ? 今ごろそんなことを自慢げに書く奴がいるとは...。
俺の周りでも、DDE は使わない方向。
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGネットワーク(でつかうソフトの)プログラミングと・・・いうことでは・・・
はい。苦しい解釈でした。
0574デフォルトの名無しさん
NGNG真面目にやる気無さそうだし。
マジレスです。
0575デフォルトの名無しさん
NGNG成功したか否かの結果報告はSMBの義務じゃないかなあ
真面目に答えていた人も多々いるわけだし
0576デフォルトの名無しさん
NGNG0577SMB
NGNGこういうのそのまま使って大丈夫かな。
#if (SIZEOF_INT == 4)
#define uint32 unsigned int
#elif (SIZEOF_LONG == 4)
#define uint32 unsigned long
#elif (SIZEOF_SHORT == 4)
#define uint32 unsigned short
Sambaのコードは16bitも対象か?
0578SMB
NGNGそんなわけないけど...
0579SMB
NGNGproto.h 1173: void make_nmb_name __P((struct nmb_name *n, const char *name, int type));
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG大丈夫。SMBの案がいいと思ってる香具師はいない。
0582デフォルトの名無しさん
NGNGお前の日記など誰も読みたくないのでよそでやれ
0583デフォルトの名無しさん
NGNG0584SMB
NGNG0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588SMB
NGNGラージモデルは知ってます、ありがとうございます。>>585-586
ミディアムで、farポインタ、nearポインタ使い分けるのは苦手だけど。
0589SMB
NGNGコード上に出ないことがわかりました。
0590デフォルトの名無しさん
NGNGネットワークプログラミング相談室どこにあるんでしょう?
0591デフォルトの名無しさん
NGNGまじかよ?
0592デフォルトの名無しさん
NGNG>584は偽者です。
ワラタ
0593デフォルトの名無しさん
NGNGポート番号とアドレスとごっちゃになってねえ?
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG放置だね。かわいそうだね。
0596594
NGNG0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599SMB
NGNGsambaのソースはおかしいみたいでそのままではコンパイルできないところがたくさんあります。
>>597
ネタじゃないです。
0600デフォルトの名無しさん
NGNG…これはどうみてもネタだろう。
0601デフォルトの名無しさん
NGNGWinを、入れる、他に、無いじゃないですか?
0602デフォルトの名無しさん
NGNGちゃんとした環境でちゃんとしたコンパイラでちゃんとした動作するのに。
バグみつけたとかならまだしも!!
0603デフォルトの名無しさん
NGNGあんたの言ってる事は
「MAC で Winsock をつかうにはどうしたらいいのだろう?」
と同じぐらい変ですな
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG探してきてやったぞ。
DOS用TCP/IPプロトコルスタック。Winsockではないが。
http://www.pc88.gr.jp/~teen/
探せば結構あるもんだな。
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNGTCP/IP通信を非同期で行うルーチンのループと、Xeventを取得するループがどうも上手くいきません。
2つをいい感じにかみ合わせるにはどうしたらいいのでしょうか?
0608デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNGXeventの取得を、
1回ずつ交互に行うようにすれば?
0613デフォルトの名無しさん
NGNG(selectが即座に帰ってくるようにしているか?)
0614デフォルトの名無しさん
NGNGすみません…マルチスレッドプログラミングはよくわからないのです(。´Д⊂)゚
0615607
NGNGwhile(1) {
FD_ZERO(&mask);
FD_SET(nsofd, &mask);
FD_SET(0, &mask);
retval = select(nsofd+1, &mask, NULL, NULL, &tm);
if(retval < 0) Err("select");
if(FD_ISSET(0, &mask)) {
/* 処理 */
}
if(FD_ISSET(nsofd, &mask)) {
/* 処理 */
}
}
みたいな感じですが…これじゃ駄目でしょうか。
0616デフォルトの名無しさん
NGNGだいたいよいけど…まずtmは毎回初期化したほうがよい。
で、そのループの中に(whileの本体の一番最後とかに)
XPeekEventとか入れれば良いんじゃないの?
0618デフォルトの名無しさん
NGNG0619618
NGNGConnectionNumber(Display*)
がそうらしい。(「接続数を返す」は誤りだそうだ)
これの戻り値のfdをselectの仲間に加えてやって、
if (FD_ISSET(x11_display_fd)) {
XPeekEvent();
}
とかやればいいんじゃないかな。
>>610 安直にスレッド立てるな馬鹿野郎(5,7,5)
0620デフォルトの名無しさん
NGNG季語がはいっとらん!
0621デフォルトの名無しさん
NGNGでどう?
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNGそんなレスを書いててもネタじゃないというのなら,
まじめに1から勉強し直した方がいいと思われる。
0625デフォルトの名無しさん
NGNGwinsock, ブロッキングモードでプログラムを組んでいます。
いわゆるサーバープログラムを組んでいるのですが、send命令というのは
ブロッキングモードでも即座に制御が返ってくるものなのでしょうか。
それともsend専門のスレッドを作り、メインではメモリーに送りたいものを保存。
sendスレッドが順次送りだすとすべきなのでしょうか
昔1回のsendで大量のデータを送ろうとしたらしばらく止まったことがあります。
これは単純に、送信バッファより多くのデータを送ろうとしたから、仕方なく止まったのでしょうか?
それともSOCKET_ERRORを返すからには通信しおわるまで待ってるのでしょうか
0626デフォルトの名無しさん
NGNG・送信バッファに空きがあるとき
ブロックしない。一度に全部送れるとは限らない。
・送信バッファに空きがないとき
必ずブロックする。戻るのは、空きができてからか、エラーになったとき。
0627デフォルトの名無しさん
NGNG"送信バッファに1byte以上の空きができるまで待つ"+"送信バッファにデータを置く"
だね。ノンブロッキングなら待たない。
メインメモリに一旦バッファするという方法は、
ソケット自身も送信バッファを持ってるんだから、一見無駄に思える。
でもソケットのバッファサイズを変更できないシステムもあるだろうし、
仕方ないのかもしれない。あ、winsockか。
0628デフォルトの名無しさん
NGNG過去スレめくって検索かけたら、関係のないのまで沢山ひっかかって(;´Д⊂)すいません
バッファの空き == 0
バッファが1Byte以上空くまで待つ
バッファの空き < 送りたいデータ量
空きの分だけ中途半端にデータを送信バッファに保存
バッファの空き > 送りたいデータ
送りたいデータを送信バッファに保存(memcpyと同等の速度?)
つまり送信バッファに十分な空きがあるのなら、ちゃんとさらりとsendが終了する
という解釈でよろしいでしょうか。
逆に言えば、中途半端な量送られるなら送信バッファがパンパンだと。
バッファの大きさ変えられるようですね。デフォルト値は64KBくらいはあるかなぁ…
0630デフォルトの名無しさん
NGNGsetsockopt()で変えられる奴はデフォルト8KBくらいだと思ったけど。
MAXもWin32だと64KBくらいじゃなかったっけ?
とりあえずgetsockopt()して調べてみ。
0631デフォルトの名無しさん
NGNG0632619
NGNGいや、あれは仕方ない。かなりX11に依存した話だし、
もしかしたらスレッド立てたほうが結果的に楽かもしれない。
selectの使い方としてはわりかし知られたパターンなので
覚えておくと後々役に立つとは思う。
0634デフォルトの名無しさん
NGNGその時sendをブロッキングモードで使用していると、どんどん送信バッファにデータがたまって
そのうち「空きがないから空くまで待とう」となってsendの部分で止まってしまうのでしょうか
0635デフォルトの名無しさん
NGNG止まるよ/止まらないよ、と答えるのはできるのかもしれませんが、
ちがったじゃん、と言われても責任もてませんし・・・
0636634
NGNG0637デフォルトの名無しさん
NGNGチェックだけなら複数のPCである必要はないと思うんですけど?
0638デフォルトの名無しさん
NGNG0639607
NGNGスレ違い覚悟でこれだけ聞かせてください…
if (FD_ISSET(ConnectionNumber(d), &mask)) {
XNextEvent(d, &event) ;
switch(event.type) {
/* 処理 */
Xイベント取得はselectにこうやってif文書いてあげればいいんでしょうか…
今日一日いろいろ書いてみましたが、Xwindowが立ち上がってくれません…
0640デフォルトの名無しさん
NGNG「X11のイベントキューには入ってるけどsocketのバッファは空」
という状態もあるので不完全。
if (XEventsQueued(d,QueuedAfterReading) || FD_ISSET(ConnectionNumber(d),&mask))
にすればいけるかな。
0642デフォルトの名無しさん
NGNGまー誰も今更XLibからやるやつはいないだろうし。
宿題スレに投げても誰も答え無さそうだし。
次に質問があるならC言語スレぐらいが適当か?よく分からんけど。
0643デフォルトの名無しさん
NGNGで取得したいのですが、どなたがご存知な方がいらしたら教えてください。
よろしくお願いします。
0644デフォルトの名無しさん
NGNG知らない。
0645デフォルトの名無しさん
NGNGクライアントソケット作成してyahooの該当サーバに接続して、
yahooオークションの該当URLをHTTPリクエストして、
戻ってきたHTMLを解析する。簡単。
これ以上は自分で調べろよ。
0646デフォルトの名無しさん
NGNG直接みたほうが簡単そうだね
0647デフォルトの名無しさん
NGNG永久ブロッキングは困るのですが
0648デフォルトの名無しさん
NGNGというかそんなことして良いのでしょうか?
0649デフォルトの名無しさん
NGNGじゃあノンブロックにすりゃあいいじゃん。
>>648
select()が-1(SOCKET_ERROR)で返るはず。普通やらないが、
強制終了みたいな場合やらざるを得ない場合もあるかもね。
0650デフォルトの名無しさん
NGNG何が起こるか分からないことになってる
0651デフォルトの名無しさん
NGNG1.1にはselect無かったような気がするけど
0652デフォルトの名無しさん
NGNGint n;
URL url = new URL("対象オークションのページのURL");
byte buffer[] = new byte[16384];
DataInputStream htmlStream = new DataInputStream(url.openStream());
while( (n = htmlStream.read(buffer) ) > 0 )
{
bufferを調べて終了時刻をピックアップする処理
終了時刻をSystem.out.println()で表示
}
0653デフォルトの名無しさん
NGNGあったよ
適当なことほざくな
なかったのはWSAEventSelect
0654デフォルトの名無しさん
NGNG(古い)Winsockってこういう非健全性が多いね。
ノンブロッキングのタイムアウト時にsocketのデータが失われるかも知れない、
ってのもあったな…
0655デフォルトの名無しさん
NGNGselectで書き込みフラグ見ている場合って、
sendバッファが満杯でない限り「書き込みOK」が帰ってきてしまうのでしょうか。
「お前最近データ送れてないんだから、書き込みOKは出すなよ」
という設定はできるのでしょうか
LANケーブルが抜けているのだから、sendバッファのデータは向こうにまったく送れていない。
当然ACKも受け取れてないわけなので、winsockの内部的には相手が応答してないのがわかるはず
0656デフォルトの名無しさん
NGNG問題ないんでないの?
0657デフォルトの名無しさん
NGNG例えばMMORPGの鯖とか。人が回りで動いてればすぐ一杯になるだろうけど、
ぽつんと荒野にひとりじゃ送信するデータが少ない
やっぱりノンブロックsendで送って、
recvで生存メッセージ(一定間隔でクライアントが送信してくる)が来なくなるか、
sendで失敗した場合に落ちるべきでは?
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNGバッファに空きがある間は返さない(送信バッファにデータをコピーするだけだから)なのでしょうか
バッファに空きが無い
空くまで待とう(ブロッキング発動!)
その時に追加send命令が! って時だけでしょうかね、WSAEWOULDBLOCKがでるのは
0661デフォルトの名無しさん
NGNG例
256KBのデータを送ろうと、全部sendしようとする。
→ sendはエラーを返さないが、8KBしか送れない。
→ 次に続きの248KBをsendしようとする。
→ WSAEWOULDBLOCKが返る。
→ (しばらくしてからFD_SENDが来る)
0662デフォルトの名無しさん
NGNG作るしかないんですか?
送受信はWSAEventSelectでできるのに。
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGすっかり頭から抜け落ちてますた
>>664
WindowsだとNetBIOS名の解決とかいろいろ面倒そうなので
できれば遠慮したいです
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG現在DOS用のTCP/IPスタックから自作してます
0668デフォルトの名無しさん
NGNG0669SMB
NGNGソースいじらなくても。includes.hはいじったけど。
<arpa/inet.h>とか<netinet/in.h>の実態はgccにも無いようだし、
ネットでstructやtypedef宣言手に入れましたが、
本物が欲しいので、どこから手に入るのか教えて欲しいです。
0670bloom
NGNGhttp://www.agemasukudasai.com/bloom/
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGTCP/IPスタックを作る人が作成するものです。
0673SMB
NGNGこれ以上自分がレスをつける意味というか目的がわかりません。
正直言ってROMしてたほうが楽です。でもいつでも出来ることなので
今は一生懸命レスしようと考えていました。今日までは。
しかし誰からもろくなレスをつけられず、自分が誰にも
必要とされてないことが、わかったとたん前向きに考えることが
出来なくなりました。
もう自分という醜くてどこにいるのかわからないような存在を
2chから消すことだけが最後のレスをつける目的かもしれません。
そしてこの「書き込む」ボタンをクリックすることによりその目的が
遂行されるわけです。
さようなら。これからはROMに徹します。
0674デフォルトの名無しさん
NGNG0675SMB
NGNG”WinSock使う”とか、キティなことを炒ってるのは無視してやって下さい。
なんか気持ち悪い粘着ですね。
0676デフォルトの名無しさん
NGNGまったく信じてませんから。
0677SMB ◆SDXB/5gbcI
NGNG0678SMB ◆a7SMBwKXrU
NGNG”トリップツカテミマスタ”とか、キティなことを炒ってるのは無視してやって下さい。
なんか気持ち悪い粘着ですね。
0679SMB ◆SDXB/5gbcI
NGNGトリップ使うのが恥ずかしくて、2ちゃん語使ったら足もとスクワレタ感じ...
0680SMB
NGNG0681デフォルトの名無しさん
NGNG0682SMB
NGNGキティばっか。
ちなみに漏れも偽物。
0683デフォルトの名無しさん
NGNG>config.h.inをconfig.hに変えてdefineするとコンパイルは通りますね、
はああああああああああああ!?
0684デフォルトの名無しさん
NGNGほっときなよ。autoconfも知らない白痴なんだから…
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG15年前、patchを知らずにdiffの結果を手で適用していた
自分を思い出す。
0687デフォルトの名無しさん
NGNGDOS用のautoconfってあるのですか。
0688デフォルトの名無しさん
NGNGどのみちunix likeな環境を作っておかないとconfigureが実行できない罠。
0689デフォルトの名無しさん
NGNG> どのみちunix likeな環境を作っておかないとconfigureが実行できない罠。
御意
0690デフォルトの名無しさん
NGNGところで藻れも、SMBなんかは死ぬほどどうでもいいが
http://www.simtel.com/pub/msdos/pktdrvr/
くらいは、この際出しておこうか。
simtel.comには大昔お世話になりました。archieな頃の話。
0691デフォルトの名無しさん
NGNGCygwinも結局はWin32コンソールアプリだからねぇ。
djgppもMingWみたいなもんで、同梱されてるのはせいぜいgcc、gas
ld、makeくらいじゃなかったかな。
DOS用B-shell互換シェルはあったけど、configureなんて実行しようと
思うとB-shellもエクステンダで動かさないと厳しそうだ。
関係ないが、djgpp作ってたDJ氏ってCygnus(今はRedHat)に居たん
だね。CygwinのChangelogに名前出てて(´・∀・`)へーと思った。
0692SMB ◆SDXB/5gbcI
NGNGはつみみですた。
0693SMB ◆a7SMBwKXrU
NGNG>>690
ありがとうございます、参考にさせて頂きます。
ネットワークプログラミング以前の知識が不足していたようで
そのことで皆様に御迷惑をお掛けしていました。すみません。
今後は、プログラムの原型が出来てから質問します。
0694SMB ◆SDXB/5gbcI
NGNG表面の本物らしさと、貶める内容で、まさに偽の内容。
てゆうか、これから名前もトリップもやめまして、単発質問します。
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGすくなくともconfig.h.inをconfig.hにリネームして
手で編集するためのものではないだろう。
0697デフォルトの名無しさん
NGNGudp_open(&log, 0, logip, LOGPORT, 0) == 0)
NSPORTとかLOGPORTってのは何か教えて下さい。
0698697
NGNG#defineSMBPORT139/* TCP */
#defineLOGPORT514/* UDP */
一部分かりました。ポート137はSMB名前解決、139はストリームデータ転送。
で、514は分かりません。
0699デフォルトの名無しさん
NGNGudp514=syslog
0700697
NGNGhttp://www.hero-island.ne.jp/hacker/syslog.html
自分で自分にログ書けよってのが、
udp_open(&log, 0, logip, LOGPORT, 0) == 0)
ですかね?
0701697
NGNGif (loghost == 0 || (logip = resolve(loghost)) == (longword)0 || udp_open(&log, 0, logip, LOGPORT, 0) == 0)
{
loghost = 0;
return;
}
(void)sprintf(logbuf, LOG_TAG PROGRAM " " VERSION %d \n", nv);
(void)sock_fastwrite(&log, logbuf, strlen(logbuf));
0702デフォルトの名無しさん
NGNGSMBさんはスレの流れがわからないのでしょうか
無知だからといって無責任な発言が多すぎますよ!!
スレ住人の人権はどうでも良いというのでしょうか?
ニュースステーションの筑紫さんが、SMBのことを、
便所のトイレって言っているのを知ってます?SMBは
どうせニュースも見ないから知らないと存じますが。
とうとう、本気で呆れています。おばあちゃんが、どれどれ?と
画面を覗きにきました。それから、おとうさんも来ました。
その6分後、妹も来ました。SMBは、我が家に笑われています。
とてもいい具合です。家族みんなが、この人おかしいね
おかしいねって、互いに罵り合っています。おかあさんは、
もう3年家に帰ってきてませんが、必ずおかあさんもおかしいね、
って云うと思いますよ。どうです?私に謝るなら、今のうちですよ。
私はこれでも気が遠いほうなんです。また3日後、ここに来ます。
0703デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/unix/1038175909/l50
0704デフォルトの名無しさん
NGNGC++でソケットプログラミングをしています。
クライアントをWindowsサーバをLINUXで
動作させたく、サーバの方はバークリーソケットを使って
書いているのですが、
通信を終了させる手順がわかりません。
ウインドウズ側だとCSocketを使用して
cs->ShutDown(CAsyncSocket::sends);
//保留中のデータを受け取る
int nRet;
char szBuf[256];
while (1){
nRet = cs->Receive(szBuf,sizeof(szBuf));
if (nRet == 0 || nRet == SOCKET_ERROR)
break;
}
cs->ShutDown(CAsyncSocket::both);
cs->Close();
以上のようにしています。
サーバ側ではどのようにすべきでしょうか?
0705デフォルトの名無しさん
NGNGclose();
0706デフォルトの名無しさん
NGNGリクエストヘッダを送った後に、
while(<SOCKET>) {
$http_res .= $_;
}
として受信してるのですが、
リクエストヘッダ部をhttp/1.0とすると、ボディを受け取り終わった直後にwhile文を抜けますが、
http/1.1とすると多くのサーバーでボディを受け取った後でもタイムアウトになるまでwhile文を抜けてくれません。
1.1でスムーズにするにはどうしたらいいでしょう?
0707デフォルトの名無しさん
NGNG・Connection: closeを送る
下だとHTTP/1.1のメリット半減だけどな。
perlでどうやるかは知らん。
0708名無しさん@Emacs
NGNGRFCさんはスレの流れがわからないのでしょうか
無知だからといって無責任な発言が多すぎますよ!!
スレ住人の人権はどうでも良いというのでしょうか?
ニュースステーションの筑紫さんが、RFCのことを、
良いリファレンスって言っているのを知ってます?RFCは
どうせ RFC も見ないから知らないと存じますが。
とうとう、本気で呆れています。おばあちゃんが、どれどれ?と
RFCを覗きにきました。それから、おとうさんも来ました。
その6分後、妹も来ました。RFCは、我が家に重宝されています。
とてもいい具合です。家族みんなが、この RFC いいね
いいねって、互いに罵り合っています。おかあさんは、
もう3年家に帰ってきてませんが、必ずおかあさんもいいね、
って云うと思いますよ。どうです?私に謝るなら、今のうちですよ。
私はこれでも気が遠いほうなんです。また3日後、RFC 書きます。
0709デフォルトの名無しさん
NGNG>また3日後、RFC 書きます。
【2ちゃん発】RFC作成計画
http://pc.2ch.net/test/read.cgi/unix/1038175909/
ここ行って書いて来い。
0710デフォルトの名無しさん
NGNG> 下だとHTTP/1.1のメリット半減だけどな。
つーかこの場合HTTP/1.0使うのが正解だな。
どうせTransfer-Encoding: chunkedな応答返されたら
困り果てる設計になってるのを棚に上げて「バイナリに数字が混じって
壊れるんですけどバグですか?」とか言い出すこと目に見えてるから
0711デフォルトの名無しさん
NGNGなぜ他のと全く違うエンコードにするかな。
0712デフォルトの名無しさん
NGNGそれとも他ににに方法があるとでも言うのか
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.18
read() は recv() の flags パラメータ に 0 を与えたものと同一です。
flags パラメータに他の値を与えると recv() の振る舞いが変わります。
同様に、write() は flags == 0 のときの send() と同一です。
0717デフォルトの名無しさん
NGNGどういう場合に値をセットするのでしょうか。
0718デフォルトの名無しさん
NGNG基本的にはそう思って問題ないんだけど、実は recv() の flag == 0
と read() では微妙に動作が違うような実装もあったりする。
その辺はターゲット OS のカーネルのソース読むのが早い。
>>717
通常は 0 でいい。
他に MSG_OOB とか MSG_PEEK とかのフラグが使える。
MSG_OOB は緊急データ(Out Of Band データ)を受信するためのもの。
MSG_PEEK はその名の通り、到着しているデータを引き取らずに覗き見るもの。
けど、いまんとこ >>717 は気にしなくて良い。
0720デフォルトの名無しさん
NGNG「他」ってのはなんのことを指してる?
0721デフォルトの名無しさん
NGNGタイムアウトを設けなかった(NULLに設定)場合にはブロックされるかわりにちゃんと受信しています。
一体何を疑うべきでしょうか?
0722721
NGNG…あれ?最後の引数にNULLや0を与えるとブロックなのに、
メンバを0,0にしたtimevalだとブロックしないでタイムアウトするぞ…なんでやん。
0723デフォルトの名無しさん
NGNGヘッダ。ヘッダはname : value<CR><LF>なのに・・・
0724デフォルトの名無しさん
NGNG0秒でタイムアウトするでしょ
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGnull pointerを渡すと無限に待つ
それ以外だとpointerの示す秒数だけ待つ。
pointerの示す秒数が0ならば当然すぐに帰ってくる。
0728721
NGNG問題は待ち時間の長さかなぁ?いくつか試したけど…。
select()しながら標準入力待つとかしたいときは、
fork()でも併用するのがスジなのでしょうかねぇ?
タイムアウトを数秒単位でやってたら標準入力のほうが使いにくすぎる…。
0729デフォルトの名無しさん
NGNG>select()しながら標準入力待つとかしたいときは、
とは?
while(){
FD_SET(STDIN)
FD_SET(ソケット)
select(fds)
if (FD_ISSET(STDIN)) {
ほにゃらら
}
if (FD_ISSET(ソケット)) {
ほにゃらら2
}
}
じゃいかんのかえ?
0730デフォルトの名無しさん
NGNG> fork()でも併用するのがスジなのでしょうかねぇ?
select系で頑張るの止めるとすれば、pthreadだろ。(まともなOSならば)
selectがbottle neckになりそうな局面では、
poll, /dev/poll, kqueueも検討してね。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGそれじゃ余りに冗長だからだろう。
サイズをバイナリにしなかったのはバイトオーダーの問題とか
32ビットにして後で困るとかを避けるためだな
だいたい一行目はname : valueじゃないし
0733デフォルトの名無しさん
NGNG思い込んでたけど違うんだね。何で勘違いしてたんだろ...
ブロードキャストアドレスを求めるC/C++のサンプルコード教えて下さい。
0734デフォルトの名無しさん
NGNGTCPやUDPの相手先のIPアドレスに0(文字列タイプじゃなくて、typedef struct in_addr)を
指定するとブロードキャストになるということかな?
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGたとえば、端末A、Bがあり、AからBへのtelnetのsyn packet をファイルに取り込む。
次に、端末Bで、そのファイルを読み込んで、宛先マックアドレスを、端末B、
送信元マックを端末A にして送信すると、
端末Bで実行したtcpdumpでは、たしかにSYNパケットが送信されたログがあります。
しかし、端末AへのACKが検出できないのです。
これはどういった理由なのでしょうか?
0739738
NGNGIPのチェックサムは確認していませんが、どこも変更していないので
問題ないと思います。。
0740八王子市立みなみ野中
NGNGハッキングなんてこわくねーんだよ!!
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死死死死死ね死ね死ね死ねね死ね死ね死ね死死ね死ね死ね死ねね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ねね死ね死ね死ねね死ね死ね死ね死ね死ね死ね死ね死死ね死ね死ね死ね死ね死ね死ね死ねね死ね死ね死ねね死ね
0741↑
NGNG糞やろうって言うくらいなら、はじめから入ってくるなボケ!!
0742デフォルトの名無しさん
NGNG#include<windows.h>
#include<winsock.h>
int main( int argc, char *argv[] )
{
int sd;
sd = socket( AF_INET, SOCK_STREAM, 0 );
return 0;
}
をメイクすると
test.obj : error LNK2001: 外部シンボル "_socket@12" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
となります。なにかプロジェクトの設定をしないといけないと思うんですが、なにをしていいのか分かりません。
ご教授ください。
0743742
NGNG0744742
NGNG0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG残念ですが、ハズレですた。
0747デフォルトの名無しさん
NGNGそいつは制御命令を送ると、応答として現在のステータスが返ってきます。
socket.send( send_packet );
socket.receive( recv_packet );
で、(エラーや例外を考えないと)こう書くわけなんですが、ふと疑問が出ました。
1) receiveするときは待機状態に入り、何も来ないとそこから先に進まないのか?
2) receiveが実行される前に応答が到着したらどうなってしまうのか?バッファに溜まるのか?
3) バッファがあれば(゚д゚)ウマーだけど、もし溢れたら何がreceiveされるのか?
・・・(´・ω・`)
0748デフォルトの名無しさん
NGNG帰ってこなければリトライしたり、諦めたりする。まあ、相手次第。
2.基本的にはたまる。貯まりすぎるとだいたい取りこぼす。
3.あふれて消えたり、取りこぼしたデータは、それっきり。
connectしてたら、場合によってはICMPがどっかから飛んでくる
可能性もないわけではないけど。
0749デフォルトの名無しさん
NGNG単に一般論として情報価値のないレスを延々と連ねて
スレを汚すなと言ってるんだが
あ、>>742-745が非常に役に立つくらいレベルが低いってだけか
0750デフォルトの名無しさん
NGNGありがとうです。
基本的にデータ飛ばしを実現するだけ、あとは自分でコード書いてねってことですね。
(´ー`).oO(TCP/IPのバッファってそんなに大きくないのかな・・・もしかしてOSごとに違うとか・・・。)
0751742-745
NGNGレベル低くてごめんなさい。
よかったら、なんでそれらのライブラリをリンクしないとダメだったのか、
なんでそれらのライブラリはデフォルトでリンクされてなかったのか、
どこを見ればそれらのライブラリをリンクするべきだというのが分かったのか、
教えていただけませんか?
0752≠749
NGNG2.アプリの全部が全部Socketを必要としているわけではない。
必要になった時に、必要なライブラリをリンクするのが筋。
それを認めないなら、全てのライブラリをリンクしないといけない。
3.MSDN。具体的には、MSDNのsocketの項には
>Library: Use Ws2_32.lib.
とある。
0754デフォルトの名無しさん
NGNGいまいち状況がよくわからないが、自分宛のパケットが
ループバックインタフェースの方にルーティングされてるってことはない?
0755デフォルトの名無しさん
NGNGブロードキャストアドレスは、255.255.255.255 でも良い場合があるみたいだが…
(DHCPとかが使う)。
で、サブネットブロードキャストアドレスは Interface の情報を取得する
必要がある。ioctl の SIOCGIFCONF あたり。
Unix なら Stevens に書いてある。Winsock なら、こんなのがあった。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/getifaces.html
0756デフォルトの名無しさん
NGNG192.168.0.0/255.255.255.0
だったら
ネットワークアドレス:192.168.0.0
ブロードキャストアドレス:192.168.0.255
だし,
192.168.0.0/255.255.0.0
だったら
ネットワークアドレス:192.168.0.0
ブロードキャストアドレス:192.168.255.255
でしょ?
0757デフォルトの名無しさん
NGNGおいおい、自分のネットワークアドレスやネットマスクを知らないときには
どうするんだ? ブート時のDHCPクライアントとか。
0758デフォルトの名無しさん
NGNG上記では、
192.168.0.0/255.255.255.0
192.168.0.0/255.255.0.0
と、自分のネットワークアドレスが決まっているので、
ブロードキャストアドレスは、あのようになる。
0759デフォルトの名無しさん
NGNGクラスの規則に従ってるんなら平気じゃない?
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGLimited Broadcast: {-1, -1}
Directed Broadcast: {<Network-number>,-1}
Subnet Directed Broadcast: {<Network-number>,<Subnet-number>,-1}
All-Subnets Directed Broadcast: {<Network-number>,-1,-1}
ちなみに
{network, subnet, host}
0762デフォルトの名無しさん
NGNGAll-Subnets Directed Broadcast
この説明が欲しいよー。
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG主に何に使われるのでしょうか。UDPの場合、使われ方はユーザ次第かもしれませんが。
あるサービスでは、XXX.XXX.255.255というのが入ってましたが、
ブロードキャストで応答せよ、という命令でしょうか。
0765764
NGNG翻訳サイトしたら終点アドレスになって混乱させられちゃった。
送信先という用語からいくと、受けたマシンが自分宛かチェックするということですか?
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNGありがとう。出来れば、ソースコードで教えれ。
0768デフォルトの名無しさん
NGNGこれらのうち、ブロードキャストアドレスとしては Limited Broadcast を用いるべき (SHOULD) と書かれています。
Limited Broadcast: {-1, -1}
とあるから、何も考えずに、{-1, -1}とすれば良いんだろうか。
サブネットが255.255.255.0だと変な動作になるのかな?
0769デフォルトの名無しさん
NGNGfflushみたいな関数ってないですか?
なければどうやれば実現できるでしょうか?
よろしくお願いします。
0770デフォルトの名無しさん
NGNGどの言語の話ですか?
0771769
NGNG言語はPOSIXのCで環境はLinuxです。
0772デフォルトの名無しさん
NGNG送信バッファの低位水準を1バイトにすればいいんでないの?
0773デフォルトの名無しさん
NGNGTCPならとりあえずTCP_NODELAY、と云ってみる。
0774デフォルトの名無しさん
NGNGそれだと、nagleアルゴリズムを禁止するだけじゃないの?
たしかに、改善されるだろうけど、フラッシュまではいかないのかな?
0775デフォルトの名無しさん
NGNGどうあがいたってバッファには残るでしょうに。
0776769
NGNGsetsockopt( sd, SOL_SOCKET, SO_SNDBUF, (char *)&buf_size, sizeof(buf_size) );
でもあまり改善されなかったので
buf_size = 1;
setsockopt( sd, IPPROTO_TCP, TCP_NODELAY, (char*)&buf_size, sizeof(buf_size) );
とやったら劇的に良くなりました。
>>774さんが言ってるnagleアルゴリズムってヤシですね。なんでこんな仕様なんだ、クソTCP。
0777デフォルトの名無しさん
NGNGSO_SNDBUF だと送信バッファサイズだね。低位水準じゃない。
0778デフォルトの名無しさん
NGNG残るか残らないかではなくて、書き出すか、書き出さないかではないの?
0779デフォルトの名無しさん
NGNG信号が赤から青に変わった瞬間、全員がアクセル全開で突っ走る
世の中が良いのか?
0780デフォルトの名無しさん
NGNG僕はMTなのでアクセル全開にしてもスピードは調節できまふ。
UDPのdestaddrって、それはIPヘッダの方に入ってるヤツのことではなく?
destaddrがなければ、データグラムをどこに送り出すかわかんねーべ?
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGネスペって何?
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNGネスレだろ?
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGNagleのアルゴリズムがなかったら…
データをなるべくまとめて送り出す替わりに、手元に
少しでも集まったぶんからぽつぽつと送り出すことに
なるんだよ。スループットががた落ちになる。
0788デフォルトの名無しさん
NGNGあれは一種のお節介。
0789デフォルトの名無しさん
NGNG場合もある、だろ。
0790デフォルトの名無しさん
NGNG多分このような経験をしたことのある方も多いと思います。
これは何が原因なのでしょうか?
0791デフォルトの名無しさん
NGNGアフォか。
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNGオンラインじゃ駄目か ?
0796デフォルトの名無しさん
NGNGだからTCP_NODELAYがデフォルトでなくオプションになっている。
0797デフォルトの名無しさん
NGNGんなこたぁない。
HTTP、SMTP、IIOP、RPC、他多数でTCP_NODELAYが邪魔。
当然ながら実装がヘタレだったら別だよ。
つーか、リクエスト/レスポンス型のプロトコルで
TCP_NODELAYが役に立つのってあるんか?
0798デフォルトの名無しさん
NGNGんなこたぁない。
レーテンシーしか気にしないならともかく、
スループットが重要ならHTTPでもSMTPでも
Nagleアルゴリズムは役立つ。
まあ藻前は1パケット一行ずつ送ってろ。
0799デフォルトの名無しさん
NGNGなぜどのTCP/IP実装でも(IPv6でさえ)
デフォルトでNagleのアルゴリズムがenableされてるんだ?
LAN環境で、クライアントが1つの時のレスポンス時間くらいしか
考えたことのない厨房はこれだから困る…
0800デフォルトの名無しさん
NGNGTCP_NODELAYをわかってなので文が変になってる。
0801デフォルトの名無しさん
NGNGよく見ろ。>>797は「TCP_NODELAYが邪魔」と書いている。
つまり、Nagleマンセーということだ。
0802デフォルトの名無しさん
NGNGむしろWAN環境のほうがTCP_NODELAYを設定することが多いね。
0803デフォルトの名無しさん
NGNGまた知ったかが…
問題はLANかWANかじゃないだろ。
0804デフォルトの名無しさん
NGNG要は、>>797 の最初の一文が誤解の元だ。
0805デフォルトの名無しさん
NGNG関係アルよ。
LAN環境だと、小さなパケットに対するACKがはやいので、
Nagleのアルゴリズムが働かないことが多い。
WANではレスポンスが遅いので、Nagleが働く。
NAGLEわかってるの?
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNG無関係とはいっていない。
TCP_NODELAYを使うかどうかの基準は「レスポンス」か「スループット」か
であって、LANかWANかじゃないという意味。
LANでもWANでも、TCP_NODELAYを設定したほうが良いときも悪いときもある。
0809デフォルトの名無しさん
NGNG>LAN環境だと、小さなパケットに対するACKがはやいので、
>Nagleのアルゴリズムが働かないことが多い。
ヲイヲイ。Nagleのアルゴリズムが働くかどうかは「送り手側が」決める。
ACKが速いかどうかは関係ないだろう。
それとも「有効かどうか」という意味?
0810デフォルトの名無しさん
NGNGどうも勘違いされているようですが、
TCP_NODELAYを使うかどうかの基準は、通信の内容じゃないの?
レスポンスが上がったとか、スループットが向上したとか言う話は、
Nagleのアルゴリズムを適用したとか、向こうにしたとかの後の話であって、
レスポンスを上げるために、もしくはスループットを上げるために設定するものではない
ということ。
0811デフォルトの名無しさん
NGNGnagleのアルゴリズムはACKが返ってない未承認の小さなパケットを
減らすことを目的としています。
0812デフォルトの名無しさん
NGNGいずれにせよ「LAN」「WAN」とは無関係だろ。
John NagleのRFC 896は読んだのか?
throughputを改善するためと書いてあるだろ?
0813デフォルトの名無しさん
NGNGでも、あんたも、なんでもかんでもnagle使えばいいわけじゃないっていってるジャン?
スループットが改善するかどうかと言うのはクライアントサーバ間の電文の種類
などの通信の内容によって変わってくる。
0814デフォルトの名無しさん
NGNGもちろんその通りだが。
そもそも何の話だったかというと、ええと…
要するに、Nagleのアルゴリズムが不要と書いた
香具師は、無知でマヌケで恥さらしということだ。
0815デフォルトの名無しさん
NGNGあと、ここプログラミングスレだぞw
0816デフォルトの名無しさん
NGNGでも、なんでもかんでもnagleは不要っていうのはマヌケだな。
0817デフォルトの名無しさん
NGNGって誰?
0819デフォルトの名無しさん
NGNG0820名無しさん@接続しっぱなし
NGNGたぶん>>797は、>>796を「Nagle否定」と誤読したんだと思うよ…
>>804が言うように、>>796へのACKである一行目を除けば正しいから。
0821名無しさん@接続しっぱなし
NGNG>>788が「お節介な時もある」なら同じだと思うけど…
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG簡単なポートスキャナ(といっても知り合いのサーバの特定の複数のポートが開いているかどうか確認するだけですが)
を作り、それは確認にConnectが成功したか否かという方法をとっています。
この場合、成功するときは数秒でConnectが返ってくるのですが、
失敗するときはConnectが返ってくるまで20秒近くかかってしまいます。
成功も失敗も数秒でわかるようにしたいのですが、どのようにすればよいでしょうか?
Connect以外でポートが開いているかどうかを確認する方法はあるでしょうか?
よろしくおねがいします。
0824デフォルトの名無しさん
NGNGつかそれくらいもできないヴァカは氏ね。
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNGRST送って、返ってきたら「閉じてる」とか。
rawソケット使うか、データリンクに直接アクセスすれば?
connectだけじゃ芸がないだろう。
0827デフォルトの名無しさん
NGNG>>824さんの言う通りまったく同じ質問が以前このスレあったのに申し訳ありませんでした。
ただ、タイムアウト方法の他に>>826さんの方法も知ることができ、
WEB検索すると役に立ちそうなページがヒットしたので、結果的に許してにゃんまげ。
0828デフォルトの名無しさん
NGNGbpfみたいなものないんかな。
cygwinだったら可能かな?
0829デフォルトの名無しさん
NGNGWinPcap じゃ駄目かい?
http://winpcap.polito.it/
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGそういう質問をするヤシにはできない。
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGpush eax
call [imp_WSASocket]
とかか(ワラ
0835デフォルトの名無しさん
NGNGFD_READとかFD_WRITEでイベントを処理するんですが、FD_WRITEがFD_CONNECT直後の1回しか来ません。
FD_READは常に発生しているようなんですが、なぜFD_WRITEは定期的に発生しないのでしょうか?
0836デフォルトの名無しさん
NGNG0837チューボー
NGNGFD_WRITEってソケットに書き込めるようになったときに送られてくるんだったと思います。
だから任意のタイミングでデータ送信したい時は、
PostMessage()で強制的にFD_WRITE発行するといいんじゃないでしょうか。
半端な知識なんで変なこと言ってたらすみません。
0838デフォルトの名無しさん
NGNG要約すると、connect直後のFD_WRITE以外は、
sendしてWSAEWOULDBLOCKが返ってきた後の、IO-pendingからの復帰時にしか来ない。
だから、sendは(connectしたら)いつでもやっていいの。
だけど、続けてsendするといずれ失敗する。
そうなったら、「もうsendしても大丈夫だよ」とFD_WRITEが来る。
0839デフォルトの名無しさん
NGNGむちゃくちゃ変ですあほ
0840835
NGNGみなさん、ありがとう。
もう少しがんばってみます。
0841デフォルトの名無しさん
NGNGUI が固まるから、止めた方がいいよ。
0842デフォルトの名無しさん
NGNGいつでも書き込んで良さそうなんですが。
0843デフォルトの名無しさん
NGNG0844843
NGNG0845デフォルトの名無しさん
NGNG無茶苦茶速くなると聞いたんですが
そのあたりの資料ってないですか?
0846デフォルトの名無しさん
NGNGことなど決してない
0847デフォルトの名無しさん
NGNGhttp://ghost.math.sci.hokudai.ac.jp/esehttpd/
の関連リンクをあたれ。
それと、kqueueはsocketを待つ方法の一種。
socketのかわりに使うわけではない。
0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNG自分宛のパケットを取り込むことってできるんでしょうか?
ipアドレスを自分宛、MACアドレスも自分宛にして、送信してみましたが
取り込めません。
ためしに自分宛のIPアドレスとしてループバックアドレスを指定してみましたが
取り込まないです。。。
0850デフォルトの名無しさん
NGNGノンブロッキングでシングルスレッドI/Oマルチプレクシングってどういう意味ですか?
0851名無し@沢村
NGNG0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNG0854名無し@沢村
NGNG//ネットワークに流れるデータを受信する
recive(data);
//データがATMのときは
if(data==ATM)
//あ億円を引き出す
popmoney(100000000);
0855名無し@沢村
NGNG//ネットワークに流れるデータを受信する
recive(data);
//データがATMのときは
if(data==ATM)
//1億円を自分の口座に振り替える。
sendmoney(100000000)from(anybank)to(mybank);
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGまったくもってプログラミング以前の話じゃないぞ。
ソケットをノンブロッキングにしてselectでイベントを待ち、
イベントドリブンっぽく記述するプログラムのモデルのことだろう。
たとえば、サーバープログラムが、複数のクライアントとの処理を
"forkせずに"おこなう場合なんかに使える。
まあ、unixならfork、win32/javaならthreadにしたほうが
楽だと思うけどね。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNGすこーし言葉がおかしいと思う。
0861857
NGNGwin32ならwinsock2とWindowMessageを使えばイベントドリブンになるね・・・
でもその格好で書いたことないや・・・
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGウィンドウメッセージを使うのはWinsock2.0でなくてもできるぞ。
Winsock2.0で追加されたのはイベントオブジェクトを使った非同期処理とか
重複I/Oだとか。
0864デフォルトの名無しさん
NGNGthreadのないWin16のために出来たと思っていたが
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNGノンブロッキングでシングルスレッドI/Oマルチプレクシング
これはzeusという有料webサーバーの特徴なんですが、ググっても要領を得なかったのです。
apache2.0の性能向上はマルチスレッド対応によるところが大きいと聞きますし
世間はマルチスレッドマンセーであると思われますが、シングルスレッドであるメリットはどこにあるのでしょうか?
またI/Oマルチプレクシングについての資料やサンプルコード(perlやC)はないでしょうか?
0867デフォルトの名無しさん
NGNGマルチプレクシングを多重に読みかえて検索してみなされ
ttp://www.soi.wide.ad.jp/class/20000011/slides/08/index_3.html
コードは見当たらんな
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGマルチプロセスだとプロセスが10000とかできたりして、
そのタスクスイッチだけで相当の時間が費やされてしまうし、
保存すべきコンテキストも膨大な量になるから。
0870デフォルトの名無しさん
NGNG理屈からいえばシングルスレッド/非ブロッキングが一番効率的になる
(スレッド切り替えだとかの問題で)が、いかんせん、余りにも処理の
流れが掴みにくくなるので一般的に保守が面倒になる、といわれている。
apacheの場合はマルチプロセスだったものがマルチスレッドも可能になった
って話でこの場合関係ない。
0871デフォルトの名無しさん
NGNGCPU1個ならね。
CPU複数なら、マルチスレッド、ノンブロッキングマルチプレクシングが良い。
のか?教えて、偉い人。
0872デフォルトの名無しさん
NGNGマルチプロセス・ノンブロック・マルチプレキシング、
ということになったりもするが。
0873デフォルトの名無しさん
NGNG以前読んだ解説記事には、例えばWebサーバみたいにI/Oリクエストを
多数処理するプログラムの場合、
(1)シングルスレッド。selectでマルチプレクシング。
(2)I/Oリクエストごとにスレッドを生成。
(3)CPU数程度のワーカ・スレッド。ノンブロッキングI/Oでマルチプレクシング。
と、下になるほどスケーラブルとあった。
0874デフォルトの名無しさん
NGNG初期のApacheとかだと、cgiを呼ばなきゃなんない関係で、
別プロセスにしてるんじゃなかったかなあ。
>>873
ソースキボン
0875デフォルトの名無しさん
NGNGスレッドだけじゃ駄目な場合もあるだろうが
>>874
違う。1プロセスで扱える接続数には制限があるほか、
メモリリークを回避する意味合いや、>>872の効果もある。
0876デフォルトの名無しさん
NGNG不特定多数が参加するMMO(というわりには規模がちいさいけど、イメージ的にはそれ)を作っています
マルチスレッドを使おうと思ったのですが、色々訳あって現在はシングル+非同期winsockでやっております
そこで質問なのですが、winsockでconnectを同期せず(connectで止まらず)に行うには
AASyncを使うしかないのでしょうか
recv, sendはソケットのオプション変更で非同期にできたのですが…
プレイヤーがログインしたとき、データベースサーバーにコネクションを張らせたいのです
マルチスレッドにするしかないでしょうか?
0877デフォルトの名無しさん
NGNGプレイヤー毎にDBに接続? 。。。正気の沙汰とは思えんな。
それじゃ同時接続数は30〜100くらいしかさばけんぞ。
0878デフォルトの名無しさん
NGNG1回のsock_fastreadで処理したいのですが、
パケットってどれくらい小さく分断されるされる可能性があるものなのでしょうか?
0879デフォルトの名無しさん
NGNG>MTU の大きさに関わらず 576 バイトの最小 IP データグラムを
>サポートしなければなりません。IP ヘッダが 20 バイトで UDP ヘッダが
> 8 バイトと仮定すると、UDP メッセージの安全な最大サイズとしては
>548 バイトが残ります
0880デフォルトの名無しさん
NGNGじゃ、sock_fastread1回で、500byte位まで逝けるね!
0881デフォルトの名無しさん
NGNGWSAEventSelect
connectよりgethostbynameのEvent版がないことのほうが
納得いかん
0882876
NGNGありがとうございます。
WSAEventSelect確認しておきます
今ひとつのサーバーにコネクションいくつ張れるかテストしてみました
43本……。
いや、Win98をサーバーにしようとは微塵も思わないけど、44本目で
「Error10055 バッファスペースに空きがない」
2kなら大丈夫かな…だといいな
クライアントとサーバーが同じPCだったからかな…
何にせよプレイヤーの数だけDBにコネクションを張るのは無謀、了解しました。
[プレイヤー] ←プレイ→ [ゲー鯖] ←セーブロード→ [DB鯖]
ゲー鯖とDB鯖には一本張って、それでやりとりするのがいいですかね
何にせよゲー鯖はプレイヤー人数分コネクト張らなきゃいけないのに、43本…
0883デフォルトの名無しさん
NGNGめちゃくちゃ納得
というか既存のネットゲーどうやってるのか?知りたいです。
ノンブロッキングIOプレクシングとやらも関係あるのかも
0884デフォルトの名無しさん
NGNGでも一斉に大量がセーブロードを行う場合にsendバッファ超えそう
一回セーブ内容をプールしたりする必要があるかもな
0885デフォルトの名無しさん
NGNGconnectって非同期にできない?
リファレンス見ると、できそうに書いてあるけど。
> With a nonblocking socket, the connection attempt cannot be completed immediately. In this case, connect will return SOCKET_ERROR, and WSAGetLastError will return WSAEWOULDBLOCK.
0886デフォルトの名無しさん
NGNGどう読んだらそうなるんだ?
「connect要求は直ちに完了できない(ノンブロッキングにできない)ので
エラーになる」と書いてあるが。
0887デフォルトの名無しさん
NGNGWindows の設計はよくわかんなくて、エラーは返るんだけど、正常に
ノンブロッキング処理は行われる。
だから、メッセージをそのまま解釈すると、connect から SOCKET_ERROR
が返ってきて、かつ WSAGetLastError から WSAWOULDBLOCK
が返ってきたときは、正常に非同期接続が行われている(途中)ってことになる。
0888885
NGNGえ。だって、ノンブロッキングソケットって、いつもエラーリターンでそ? recv とか send とかも。
EWOULDBLOCK は、本来ならブロッキングしてたはずのところを、ノンブロッキングだからすぐリターンしたよって意味ではなかった?
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNGそういう仕様だと思って納得するしかないな。
ところで、>>876は
> recv, sendはソケットのオプション変更で非同期にできたのですが…
というところから、ノンブロッキングモードではなく非同期モードを使おうとしているようだが。
ちなみに俺は知らんし調べる気もない。
0891デフォルトの名無しさん
NGNG知ったかクンがよく間違えてるが。
0892デフォルトの名無しさん
NGNGって宣言の仕方おかしいですか?
Eclipseをつかっていまして
トークン"ds"に構文エラーがあります。正しくは";","."です。と表示されますが、
どういうことでしょうか。
0893デフォルトの名無しさん
NGNG結構違うと思うよ。
EINTRはそのままリトライに入って問題ないけど、
EWOULDBLOCKはそのままだとBusy Loopに陥る。
0894デフォルトの名無しさん
NGNGネットワークプログラミング以前の問題
初心者スレへ逝け
0895892
NGNGスマソ
0896デフォルトの名無しさん
NGNG「いつも」ではない。その場で処理されてすぐに戻ってくるかもしれない。
いつもWSAEWOULDBLOCKが返ってくることを前提にした
コードを書いてはならない。
0897876
NGNGすいません、しったか君が間違えました
ノンブロッキングモードです。
cnnnectにもノンブロッキングモードはあるのかな
ちょっと調べてみます
>>881さん
WSAEventSelect調べてみました
ははーん…。
イベントとやらも便利そうですね。winsockのみなのが残念なところ
linuxでも試してみたいので、connectのノンブロッキングを探してみます
だめそうならイベントを
0898デフォルトの名無しさん
NGNG上のドキュメント見ろ。「いつも」だ。
0899デフォルトの名無しさん
NGNGノンブロッキングソケットでは、コネクションの試みは即座には完了できない。
この場合、connectはSOCKET_ERRORを返す。WSAGetLastErrorはWSAEOULDBLOCKを返す。
0900デフォルトの名無しさん
NGNG> え。だって、ノンブロッキングソケットって、いつもエラーリターンでそ? recv とか send とかも。
>>896より
> 「いつも」ではない。その場で処理されてすぐに戻ってくるかもしれない。
>>899より
> the connection attempt cannot ...
後は自分で判断しような>他の人
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG「cannot」だからね。必ずSOCKET_ERRORが返る。
0904900
NGNGsend()が成功するのは当てはまらないと言われるかな。
0905デフォルトの名無しさん
NGNG0906900
NGNG0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG1. connect()は必ずWSAEWOULDBLOCK.が返ってくる。
2. recv()やsend()とかはいきなり正常終了する可能性がある。
connect()する時は相手からの応答を待つから、即座の復帰はありえない。
recv()やsend()ではバッファの関係で正常/WSAEWOULDBLOCK.両方の可能性がある。
ごっちゃにしたのが混乱の原因(w
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNGrecv()もconnect後にFD_READが来る前でも成功する可能性がある。
そうなると、次にFD_READが来てからrecv()しても、WSAEWOULDBLOCKになる可能性がある。
また、FD_READの処理部で複数回recv()することも出来る。
そして、2回目以降が成功する場合もある。
この場合も次のFD_READで何も受信できない場合が多い。
これは、1回目のrecv()後にバッファにデータが残っていたら、
recv()からの復帰前にFD_READが送られるから。
だったはず。
確か、FD_CLOSEの後にFD_READが来る可能性もあったはず。
0912デフォルトの名無しさん
NGNG普通はおきないけど、FD_CLOSE 前のFD_READ が届いたときに
(ソケットバッファ未満の?)小さな recv() しかしない場合に、
発生する可能性ありなんだっけ?
winsock 側としては、
FD_READ
FD_CLOSE
をポストして、お役御免と思っていたら、FD_READ 時に全部 recv()
してくれないものだから、そこで、あわてて FD_READ を再発行って
印象。
それ以外のシチュエーションでも、FD_CLOSE後のFD_READなどが
ポストされる場合って、あるのかな?
0913デフォルトの名無しさん
NGNGソースとかのありかおしえてくれませんか?
0914デフォルトの名無しさん
NGNG前スレで同じ話があったと思う。
0915デフォルトの名無しさん
NGNG888は「WSAEWOULDBLOCKを知らせる時には(sendやrecvも)いつもSOCKET_ERRORを返す」
ということを言いたかったんじゃないかと思う。
とすると、888も896も898以降も、みんなわかってるのに言葉のあやでひっかかってただけかも。
日本語勉強しないとね>俺も
0916名無しさん@接続しっぱなし
NGNGhttp://www.cs.rice.edu/~gaurav/papers/usenix99.ps
これ読むと、select(2)のkernel内bottle neckは、
bit操作であることが分かるよ。
だからkqueue/keventとまではいかずに、poll(2)や/dev/pollでも、
selectよりもかなり改善が期待できる。(C10Kな状況では)
http://www.kegel.com/dkftpbench/Poller_bench.html
にベンチマークがある。
0917デフォルトの名無しさん
NGNGもちろんダウンロードしたときに
こっちのパソコンが感染しないように
してほしいです。
ダウンロードさせてくれるサイトの紹介でも
いいです。
0918デフォルトの名無しさん
NGNG何に使うの?
0919888
NGNG>>891 非同期と聞いてノンブロッキングと短絡的に考えてました。本で読んだばっかりなのに・・・鬱。
>>915 ふぉろーさんくす・・・言葉足らずだったばっかりに。許して>896,900,903,905,908
>>909 localhostの場合はすぐconnect完了するかもしれんので、必ずじゃないかも(UNIXの本にはそう書いてありました)。
あと、UNIXではEWOULDBLOCKじゃなくてEINPROGRESSだと知りました・・・いろいろ勉強不足。ごめ。もっと修行します。
0920デフォルトの名無しさん
NGNGって?非同期=ノンブロッキングではないってこと?
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=%E9%9D%9E%E5%90%8C%E6%9C%9F+%E3%83%8E%E3%83%B3%E3%83%96%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0+%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
とか見ると「非同期(ノンブロッキング)」とか書いてあるけど…。
0921919
NGNG>って?非同期=ノンブロッキングではないってこと?
ないです。891さんの言うとおり、やっぱりよく間違えられるんでしょう。
「UNIXネットワークプログラミング第2版Vol1」によると、入出力を扱う手法はブロッキング、ノンブロッキング、多重化(select と poll のこと)、シグナル駆動I/O、非同期I/O という5つの方法があって、
非同期I/O は aio_read、aio_write とかいうものを使う方法だそうです。Windows ではたぶん WriteFileEx と ReadFileEx で OVERLAPPED を指定した状態が、それに相当するのではないかと。
0922デフォルトの名無しさん
NGNGあ、そうなんですか。
うーん。何やら難しいですね。。。
0923909
NGNG俺はMSDNに書いてある記述の要約をしただけで、
Unix系の実装について触れた覚えはないんだが。
大抵の場合はlocalhostに関してもエラーが帰ってくる可能性が高いだろ。
connect(2)が完了するためには相手がaccept(2)するためにコンテキストスイッチが
発生するから、それを待たずに即座に復帰するよう実装するんじゃないか?
それでも、nonblockingでもconnect(2)が常に失敗することを仮定して
実装すべきではないと思う。つーか、エラーチェックくらいしろ、と。
あと、Unix系ではEAGAIN、EWOULDBLOCK、EINPROGRESSの三種類がある。
Linuxでは、manページによるとconnect(2)はEINPROGRESS、recv(2), send(2)は
EAGAINまたはEWOULDBLOCK(実際は同じ値)を返すらしい。
0924909
NGNG使い分けだと3種類だな。
同期: ブロッキング
多重化: ノンブロッキング + (select or poll)
非同期: シグナル駆動I/O or 非同期I/O
Windowsの場合も同様。
ブロッキング、ノンブロッキング、select()、Windowメッセージ、イベント、重複I/Oに分かれる。
WSAEventSelect()ではWindowメッセージかイベントに対して通知をし、
OVERLAPPED渡すやつではイベントか、コールバックに通知をする。
同期: ブロッキング
多重化: ノンブロッキング + (select or event)
非同期: 重複I/O(イベント使わずコールバック)
MsgWaitForMultipleObjectsEx()使えば、スレッドの終了イベントを待機しながら、
Windowsメッセージを処理し、さらにI/Oを完全な非同期で処理することを1スレッドで
実装することも不可能ではない。
0925名無しさん@接続しっぱなし
NGNG非同期メッセージ通信というと、requestとacknowledgementが分かれていて、
acknowledgmentを別途取得するタイプのメッセージ通信のことです。
例えばDNSを引く時に、gethostbyname(3)を使うと、
関数呼び出しと値返しが同時に起きるので、同期メッセージ通信になります。
WSAAsyncGetHostByName(win32)だと非同期メッセージ通信です。
非同期I/Oは、kernelとのやり取りにおいて、
I/Oの結果をAPI呼び出し時に即座に返えさないタイプのI/Oです。
どのレベルのinteractionについて、同期/非同期を言っているのか、
混同している人は意外に多いようです。
0926デフォルトの名無しさん
NGNG0927名無しさん@接続しっぱなし
NGNGStevens本はpthreadを視野に入れてないので、
(というかStevensの使っているUNIXにはまともなthreadがなかった)
> 多重化(select と poll のこと)
でもいいのですが、Windowsの場合は、
> 多重化: ノンブロッキング + (select or event)
だけじゃなくて、多重化を実現する方法に、
マルチスレッドも入るんじゃないでしょうか?
(それからノンブロッキングは必須でない。多重化をより稼げるけど)
0928名無しさん@接続しっぱなし
NGNGgethostbyname(3)もsend(2)もどっちもAPIじゃん?
0929名無しさん@接続しっぱなし
NGNGん?
「send/recv(write/read)レベルの話なんでねえの?」
「UNIXでいうところのsystem callレベルの話なんでねえの?」
と言っているのかな?
そこに限ってしまうと同期/非同期と
ブロッキング/ノンブロッキングの区別がなくなるから、
同期/非同期はもう少し大きい枠組みで理解しよう、
というのが、分かりにくかったかも知れないけど>>925の主旨でした。
0930デフォルトの名無しさん
NGNG「指示した動作の、完了を知る方法の違い」
でしかないと思った。
TCP/socketはネットワークアクセスのためのAPIだけど、
APIになった瞬間にネットワークの存在は関知しなくてもいいでしょ。
というか、知りえないでしょう。
925の言う「どのレベルでのinteractionか」というくだりの、
レベルの違いっていうのが、プログラムから見て意味あんのか疑問。
0931コロ助
NGNGサーバーにHTTP接続を試みているのですが、うまく接続できません。
ソース
sock[n]=socket(AF_INET,SOCK_STREAM,0);
WSAAsyncSelect(sock[n],hW,SM_ASYNC,FD_CONNECT|FD_CLOSE|FD_READ|FD_WRITE)
lpServEnt = getservbyname("http", "tcp");
if(lpServEnt==NULL)
{
ser.sin_port=htons(80);
}
else
{
ser.sin_port=lpServEnt->s_port;
}
lpHostEntry=(LPHOSTENT)bufHostEnt;
ser.sin_family=AF_INET;
ser.sin_addr=*((LPIN_ADDR)*lpHostEntry->h_addr_list);
if(SOCKET_ERROR!=connect(sock[n],(LPSOCKADDR)&ser,sizeof(SOCKADDR_IN)))
HTTPだと駄目なのですが、SMTPやFTPならうまく接続できて、データも転送できます。
なぜ、HTTPだけ接続できないのでしょうか?
0932デフォルトの名無しさん
NGNG> HTTPだと駄目
どこでどんなエラーが出てるのか、
またはエラーが出てないが応答がこないのか、
明示しないお前にコロ助を名乗る資格はない。
0933コロ助
NGNG唯一、エラーが出ているのは、サーバーと接続(connect)したときで、
エラー
if(SOCKET_ERROR!=connect(sock[n],(LPSOCKADDR)&ser,sizeof(SOCKADDR_IN)))
{
MessageBox(hW,"connect","成功",0);
}
else
{
if(WSAGetLastError()!=WSAEWOULDBLOCK)
{
MessageBox(hW,"connect","失敗",0);
}
}
connect関数はSOCKET_ERRORを返しエラーとなりますが、その後の、if(WSAGetLastError()!=WSAEWOULDBLOCK)には引っかかりません。
そのほかはエラーは全く出ていません。
0934コロ助
NGNGでhttpを指定すると接続されないのですが、ftp、smtpだとうまく接続されます。
WinSockはhttp接続の際なにか特別な処理をしないといけないのでしょうか?
0935デフォルトの名無しさん
NGNGWSAGetLastError() ぐらい知らんのかよ...。
0936デフォルトの名無しさん
NGNGgethostbyname()
0937935
NGNG0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGその時は、80 をセットするようにしてるみたいだけど ?
ちゃんと見てないけど、ロジックがおかしいのか ?
0941デフォルトの名無しさん
NGNGそれと、相手はちゃんと存在するのか?
0942デフォルトの名無しさん
NGNGパケットダンピングくらいしろよ。
0943デフォルトの名無しさん
NGNG取りあえず、WSAEWOULDBLOCK じゃねーのか ?
WSAAsyncSelect() で Non-Blocking-Mode にしちゃってるから、当たり前だと思う。
ftp/smtp がちゃんと動いている方が不思議だ。
0944rubyist@カラアゲうまうま
NGNG俺が下手に出て教えてくれっていってんだから
すぐ書けばいいだろボケ
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGinet_ntoa_r()無いので結局内部バッファ使わないのを自作してしまったんだけど
これ程度でmutexなどで排他かけるのもモタイナーイ気がして・・
0947デフォルトの名無しさん
NGNG環境は ? マルチスレッドサポートしてるシステムなら、普通 inet_ntoa() もスレッドセーフになってると思うが。
0948デフォルトの名無しさん
NGNGSolaris2.5/8,AIX4.3です
0949デフォルトの名無しさん
NGNG5年も前の環境じゃしょうがないかも知れないな。
素直に、排他制御しとくべし。
0950948
NGNG0951デフォルトの名無しさん
NGNG5年前の段階でTLSもないのがまともなOS面してたとも思えないんだが。
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNGhttp://www-6.ibm.com/jp/developerworks/linux/020208/j_l-rt6.html#1
たしかに ab(ApacheBench) で windows上の apache と Linux上の apacheで
速度を計測してみると、ハードウェアは Windowsの方が上なのに3倍近く差が
でたしなぁ。。。 こんなの変ですよ!ゲイツさん!
0955デフォルトの名無しさん
NGNGsocketよりむしろApacheがタコだから
0956デフォルトの名無しさん
NGNG>>947
『スレッドセーフ』は各スレッドで排他制御無しで使えるって意味ではないという罠。
0957デフォルトの名無しさん
NGNGだれかテンプレまとめて。
なんならスレを立ててもいいから。
0958デフォルトの名無しさん
NGNGinet_ntop()を使うべし
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGあるいはその可能性があるとか。
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGパケット盗み見から始まって、IP / MAC アドレス詐称など何でもありありだからだよーん。
0965デフォルトの名無しさん
NGNG>This macro has been deprecated in Dynamic C version 7.20.
>このマクロは動的なCバージョン7.20で大いに非難されました。
質問です。これは使わない方が良いということでしょうか。
たしかにsock_err ラベルにgotoされると構造化し難いですが。
代替関数は何になりますか?
0966デフォルトの名無しさん
NGNGbpfは /dev/bpf* がopenさえできればrootじゃなくても使えるよ。
raw socketは要rootだが。
0967デフォルトの名無しさん
NGNGふつーrootしか開けないようなPermissionになってない?
0968真面目な開発者
NGNGたぶん、WINSOCKに関してだと思います。
今日WINDOWSを起動したら、IEでインターネットが見れなくなりました。
ネットスケープやOPERAでは普通に見れるのに、IEだと見れなくなりました。
今WINSOCKの勉強と開発をしています。
もしかしてWINSOCKの開発中に、不適切なプログラムを組んだために、IEにエラーが起こってしまったのでしょうか?
0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNGPC初心者板へどうぞ(藁
0971デフォルトの名無しさん
NGNG> もしかしてWINSOCKの開発中に、
結構すごい香具師だな。
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG特定のクライアントからのコネクションを拒否する方法ってある?
Raw ソケットは使わない前提で。
ちなみに今は accept() にてリモートホストの IP アドレスをチェックして
弾くようにしてるんだけど、それだと一瞬クラアイントとコネクション張ってしまう
状態になっちゃうから、あまりよろしくないので。
0979デフォルトの名無しさん
NGNGWSAAcceptで出来たような気がする
0980デフォルトの名無しさん
NGNGありがとう。
今 Winsock 1.1 使ってるので、そうなると WSAAccept は使えないからダメみたい。
(一応 Win95 もサポートしたいので。)
後に Linux バージョンも作る予定だけど、自アプリでやるのは邪道なのかな?
TCPWrapper や tcpserver とかにフィルタリングさせる方が一般的なんだよね?
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGまだ調べてないからわかんない。詳しい人教えて〜。
やるなら Raw ソケットで直にIPパケット使うことになるかも。
でもそこまでするのは面倒になりそうだから自前でやるのやめようかなと思ってる。
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG>95でもwinsock2は使える。
ホント?
IE とか何らかのソフトインストールすればってこと? 教えて。
その手順が簡単なら考えてみたい。(PC に不慣れな人が出来るレベルなら)
可能なら自アプリのインストーラに組み込めればベストかな。
0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNGありがとう。よく見てないけど後で調査してみます。
0989デフォルトの名無しさん
NGNG重ね重ねお世話さまです。ここからダウロードできるね。
ライセンス等も考慮して検討してみます。
0990デフォルトの名無しさん
NGNGリンクが見つからない…
ところで次スレは?
0991デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
0992デフォルトの名無しさん
NGNG乙〜
0993ヘッケルリンク
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997次スレ案内
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
0998次スレ案内
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
0999次スレ案内
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
1000次スレ案内
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。