トップページ⇒tech
1001コメント305KB

ネットワークプログラミング相談室 Port4

レス数が1000を超えています。これ以上書き込みはできません。
0001UnassignedNGNG
主にソケットに関しての質疑応答スレです。

Programming 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デフォルトの名無しさんNGNG
3
0003デフォルトの名無しさんNGNG
use Socket;
0004デフォルトの名無しさんNGNG
>1
乙彼〜
0005デフォルトの名無しさんNGNG
OTUKARE-
0006255.255.255.255NGNG
図書コーナー!

UNIXネットワークプログラミング〈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デフォルトの名無しさんNGNG
エラーコードは何だった?
0009デフォルトの名無しさんNGNG
う、すいません。みてなかった;;;ほんともうしわけないです。時間がなかったもので、でなおしてきます
0010デフォルトの名無しさんNGNG
どこでエラーが出たの?
受信側のバッファ不足っぽいけど。
0011デフォルトの名無しさんNGNG
送信でエラーがでてしまいました。確か送信側と受信側の両方とも同じ量だけ用意したつもりだったのですが、エラーコードを取るのを忘れていまして、
後日エラーコードをとってもういちど質問させていただきます;;
0012デフォルトの名無しさんNGNG
>>7
前スレの最後の方で似たようなの見たような・・・
ちゃんと過去ログ参照しようね。
0013デフォルトの名無しさんNGNG
結局ソケットに限定したら、ほとんど定石みたいなコードしか書かないよね。
問題が出るとすれば、パケットに流すバイト列の中身の方。
0014デフォルトの名無しさんNGNG
前スレの最後で、TCP/IP が並列動作しているのを見たことあるか?
という話題が出ていたが、マルチプロセッサでの race condition
が原因のバグを何度も見たことあるぞ。

シロートは引っ込んでなさいってんだ。
0015デフォルトの名無しさんNGNG
IRCクライアントって簡単に作れますか?
意外とできそうなんですが・・。
0016デフォルトの名無しさんNGNG
10分じゃつくれない。
1日あれば作れる。
簡単と言うかどうかは知らん。
0017デフォルトの名無しさんNGNG
>>14
で、それが並行動作している証拠と言うわけ ?
似非玄人も、引っ込んだ方がいいよ。
001815NGNG
TCP/IPクライアント作ってIRCのサーバに接続してみたんですが、以外にあっさり繋がってびっくりしました。(^^;
#文字コードってJISなんですね。
文字コード変換して、あと文字列やりくりしたら何とかなりそうな感じです。
まあ、作ってみないとどうかはわかりませんが・・。
0019デフォルトの名無しさんNGNG
>>17
並列動作してない証拠にもなってないし…
>>14ってミジンコ?
0020デフォルトの名無しさんNGNG
旧すれより下がってるから、アゲ
0021デフォルトの名無しさんNGNG
http://cocoa.2ch.net/test/read.cgi/phs/1032671125/l50
のためにプログラム組んでくだされ
0022デフォルトの名無しさんNGNG
>>21
携帯捨てれば?
0023 ◆Rc2D5d6xf. NGNG
c
0024 ◆Rc2D5d6xf. NGNG
◆nNRv8vDd2o
0025デフォルトの名無しさんNGNG
delphiでファイル送受信をする方法を探し、
ttp://www.users.gr.jp/ml/archive/delphi/48638.asp
このようなものを見つました。
テキストの場合、上手く受信したファイルを保存出来るのですが、
他の形式の場合の受信方法がわかりません。
TStringsに入れてSavetofileで保存できますか?
002614NGNG
>>17
早い話、仕事柄、カーネルを覗いて並列動作を確認したり、
バグを潰したりしなければならない立場にいるってことだよ。
0027デフォルトの名無しさんNGNG
>>26
別にあんたの業務内容なんか聞いてないんですけど、自慢ですか ?

どうやって並列動作確認してるのかを聞きたいだけだよ。
0028デフォルトの名無しさんNGNG
カーネルデバッガ。
0029デフォルトの名無しさんNGNG
>>25
delphiは良く分からんが、"TStrings"なるインスタンスにバイナリを突っ込む理由がわからん。
バイナリに\0が入ってたらどーすんの?
ていうか、サンプルのままやればいいじゃん。
Memo1.lines.add(IntToStr(b));
の代わりに1バイトづつファイル保存すればいいんでないの?
003025NGNG
>>29
それの具体的なやり方がわからないです。
TFileStream使えば良いのかな。
0031デフォルトの名無しさんNGNG
>>26
この人前スレの本題は無視して、
俺はカーネルにバグがあるのを知っているぞ─、偉いだろう、だけだね…
0032デフォルトの名無しさんNGNG
お前もスレと無関係の内容のない煽りだけだな
0033デフォルトの名無しさんNGNG
>>30
delphiスレ行った方が良さげ。

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
>>28
具体的には ?
0035デフォルトの名無しさんNGNG
>>34特定のカーネルに依存する話だから、商用 UNIX の話であれば、こんなとこで詳細に説明できないと思うが…。
0036デフォルトの名無しさんNGNG
>>35
結局「示せない」と言うことですね。
0037デフォルトの名無しさんNGNG
煽るのおもしれえ。やっぱ2ちゃん最高。
0038デフォルトの名無しさんNGNG
>>37
ヴァカは、放置で。> >>37 を除く 各位
0039デフォルトの名無しさんNGNG
煽りキター!!!
放置なんていう言葉をナチュラルに使うなんて
さすが2ちゃんねらーは違いますね。
0040デフォルトの名無しさんNGNG
windowsでTCPを使うにはwinsock.hをインクルードしないとだめだとおもうんですが
C言語ではむりなのでしょうか?C++でないとだめなんですか?
0041デフォルトの名無しさんNGNG
C言語でふつーにインクルードできるが。
socketってそもそもC言語用のインターフェースだし
0042デフォルトの名無しさんNGNG
>>39
むしろお前が放置してくれよ
0043デフォルトの名無しさんNGNG
いや、俺が放置される!!
0044デフォルトの名無しさんNGNG
メールヘッダのReceiveが複数なのは中継を経ているってことですよね。
その中継はSMTPでどんなコマンド(?)でやり取りしているのでしょうか?
誰かわかる人いますか?
0045デフォルトの名無しさんNGNG
はい、います。
0046デフォルトの名無しさんNGNG
>>45
だけじゃああんまりなんで、
ftp://ftp.iij.ad.jp/pub/RFC/rfc821.txt
の6ページに例があります。他にもたくさん載ってる。
0047デフォルトの名無しさんNGNG
WinSockのリファレンス的な解説をしてる良いサイトはないですかねぇ・・。
開発はVisual C++6です。
0048デフォルトの名無しさんNGNG
MSDN
0049デフォルトの名無しさんNGNG
良スレage ちゃった♪
0050デフォルトの名無しさんNGNG
Win32APIでHTTPクライアント作ろうと思ってるんですが、
参考になりそうな本・サイトってありますか?
(できれば日本語で)
0051デフォルトの名無しさんNGNG
MSDN
キーワードは wininet
005250NGNG
あ、使用コンパイラはBorlandC++5.5.1です。
0053デフォルトの名無しさんNGNG
MSDNでいいと思うけど・・・
005450NGNG
>>51,53
ありが�dございます。勘違いしてますた。
0055デフォルトの名無しさんNGNG
WSAStartup( MAKEWORD(1,1),&wsadata );
client_socket = socket( AF_INET, SOCK_STREAM, 0 );
 ・
 ・
とsocketのプログラム書いてるんですが、
connect()でサーバと繋がった状態で、サーバ側が落ちた(接続が切れた)時の判断って
どうやればいいんでしょうか?
try catchとかで例外を拾えるのかと思ったのですがそれも駄目でして・・。
(selectはつかえないですよね・・)
使用開発ツールはVisual C++です。
0056デフォルトの名無しさんNGNG
recvが-1とか返すだろ。
selectも使えるし。
005755NGNG
>recvが-1とか返すだろ。

それが何故か返らないんです。。(--;)
スレッドで処理してるからでしょうか?

if( recv( client_socket, buffer_p, BUFSIZE - 1, 0 ) < 0 ){// 受信したかどうかチェック
 MessageBox(NULL,"error.","error Message",MB_OK);
 Rval.Error = true;
}
return;
005855NGNG
recvの戻り値ですが、デバックしてみると・・

・何か受信した場合は0以上を返す。
・接続が切れた場合は0を返す。
・それ以外はマイナス(SOCKET_ERROR)を返す。

という事は0の場合接続が切れたという事でいいんでしょうか?
なんか0でいいみたいな感じですが・・。
0059デフォルトの名無しさんNGNG
つか、そういう問題かよ、、MSDN嫁
>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.
006055NGNG
レスどうもです。

>If the connection has been gracefully closed, the return value is zero.

接続がしまってる場合は0を返す、ということは0でいいんですね。(^^;
どうもありがとうございました。m(__)m
0061デフォルトの名無しさんNGNG
>>55
「相手が落ちた(接続が落ちた)」の定義にもよる。
相手が単純にソケットをクローズしただけなら、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
>>61
> 相手のマシン自体がホントに落ちた(panic とか) だったら、何も
> おこらない。recv() でブロックしたまま。
ある程度時間がたったらETIMEOUTで戻ってこない?
0063!1NGNG
http://tetsuro.alpha-sv.com/net/counter/analyze.cgi?siki&1024x768&16&
こんなのどないしてつくるの?
0064プロNGNG
何もプログラム分からないけど、どのように勉強していけばよろしいですか?
006561NGNG
>>62
何が TIMEOUT するのさ?
何も送信してなければ、TIMEOUT も存在しえないよ。

もし、データを送信して、TCP レベルでまだ ACK を受信していない段階で
相手がオチた(無応答になった)のなら、TCP の再送タイムアウトが発生
するので、recv() が -1 return して ETIMEDOUT エラーになるけど。

もっとも、もし、相手がオチた後にリブートして来たケースを考えると、
TCP の再送を受信した段階で相手が RST 応答するから、そこでコネクション
が切れる。アプリケーションは recv() のエラーでそれを検出するから、
再送タイムアウトよりは、早いタイミングで検出できるだろう。

SO_KEEPAVLIE オプションを有効にしてれば、データを送信していなくても、
無通信状態が続いたら相手の生存確認をするから、そのうち TIMEOUT を
検出するけど、普通は 2 時間ぐらいかかるし(Windows の事情はよくわから
ないのでデフォルト値がどのぐらいか知らない)。

0066デフォルトの名無しさんNGNG
>>63
Web制作
http://pc3.2ch.net/hp/
>>64
本屋にいって「はじめてのC言語」という本を買ってくる
>>65
Windowsでも似たようなモンですわ。
0067デフォルトの名無しさんNGNG
>>65
するとコネクション貼るだけ貼りまくってその後パケットを
一切送らなかったらDoS攻撃が成立しますか。
0068デフォルトの名無しさんNGNG
プロトコルレベルのTIMEOUTとアプリレベルのTIMEOUT、ごっちゃにしてないかい?
0069デフォルトの名無しさんNGNG
>>67
それが DoS 攻撃になるのかどうかは、アプリケーションによるでしょ。
それだと、コネクション張った側(クライアント側)もコネクションを
保持し続けないといけないわけだし。

つーか、どーゆーのが DoS 攻撃だと言ってます?

>>68
アプリレベルの TIMEOUT って、それは、アプリケーションが、
タイムアウトの仕掛け(alarm とか?)をやってた場合でしょ?
>>62 も「ETIMEDOUT」って書いてるから、プロトコルレベルの
タイムアウトの話だよ。
0070デフォルトの名無しさんNGNG
> それだと、コネクション張った側(クライアント側)もコネクションを
> 保持し続けないといけないわけだし。
単に沈黙すればいいような。
もっともありもののTCPスタックはRSTとか勝手に返しそうだから
自前でTCPのハンドリングをする必要はありそうだけど。

> つーか、どーゆーのが DoS 攻撃だと言ってます?
サーバのコネクション数には限界があるわけで、その数まで
接続しまくって放置すればサービス拒否攻撃が成立しますよね?
0071デフォルトの名無しさんNGNG
>>70
> もっともありもののTCPスタックはRSTとか勝手に返しそうだから
ごめん。意味が分かりません。TCP がどういう場合に RST を送信
するか、理解してます?

> サーバのコネクション数には限界があるわけで、
ありません。
0072デフォルトの名無しさんNGNG
>>69
> >>68
> アプリレベルの TIMEOUT って、それは、アプリケーションが、
> タイムアウトの仕掛け(alarm とか?)をやってた場合でしょ?
そーです。もしくはselectなんかのTIMEOUTね。
つか、>>68は>>67へのレスですわ。

>>70
サーバだって何もこないソケットをただ延々と待ってたりはしないよ。
繋いで切ってを繰り返した方が、負荷が高いと思うけど。
0073デフォルトの名無しさんNGNG
>>71
ごめんなさい。
> それだと、コネクション張った側(クライアント側)もコネクションを
> 保持し続けないといけないわけだし。
が意味不明だったんで意味不明なレスしてしまいました。

> ありません。
listenの引数は飾りですか?
ApacheのMaxClientsはダミーですか?
カーネルの(以下略
つーかマジで言ってます?

>>72
> おこらない。recv() でブロックしたまま。
はただ延々と待ってるという意味ではないの?
007471NGNG
>>73
> listenの引数は飾りですか?
listen() の第 2 引数はバックログ値であって、コネクションの数と
関係しませんよ。accept() しない状態のコネクションをいくつまで保持
できるか、でしかありません。
普通、サーバアプリケーションが速やかに accept() でコネクション
を引き取っていくので、いくらでもコネクションは張れます。

コネクション数の話で、listen() の引数の話を出してくるところを見ると
バックログキューとかが、理解できてないように思います。

> ApacheのMaxClientsはダミーですか?
それは Apache がどのように扱うか、であって、TCP レベルのコネクション
の数と関係ありません。...と書いてて気付いた。>>73 さんは、アプリケー
ションレベルでの話をしてるんですね。そうすると、それはアプリケーショ
ンがどう振る舞うか、に依存しちゃうので、どうにでもなっちゃう。

でも、なぜここで、listen() の引数の話を出してきたのかが分からない…。

> カーネルの(以下略
カーネルとして、TCP コネクションの数に制限はありません。
0075デフォルトの名無しさんNGNG
>>74
ポートは65535個しかありませんが。

> カーネルとして、TCP コネクションの数に制限はありません。
じゃあどうしてSYN floodのような攻撃が可能なのですか?
0076デフォルトの名無しさんNGNG
カーネルのSOMAXCONNは(以下略
皆まで言わないとシラを切るつもりですか?
0077デフォルトの名無しさんNGNG
> 普通、サーバアプリケーションが速やかに accept() でコネクション
> を引き取っていくので、
fd_setの数にも同時起動可能なプロセス数にも上限があるし
0078デフォルトの名無しさんNGNG
FreeBSD 4.6RELEASE なんですが、こいつの recv() って SIGALRM で
抜けてきます?
漏れのとこだと、SIGALRM は recv() に割り込んで、シグナルハンドラは
実行されるんだけど、その後、勝手に recv() が再実行されてるみたいで、
recv() がエラーリターンしてくれないんですよ。
マニュアル見ると、EINTR するって書いてあるし。
Solaris とかだと抜けてくれるんですけどね。
なんでか知ってる人いたら、レスキボンヌ

0079デフォルトの名無しさんNGNG
>75
>ポートは65535個しかありませんが。
それが問題になるのはクライアントだけ。
0080デフォルトの名無しさんNGNG
そのうち、「32bitマシンで積めるメモリは4GBだけ、とか
言い出すんだろうか、、、
0081デフォルトの名無しさんNGNG
コネクションは、src/dest それぞれの IPaddr/portの4つのうち、
一つでも違えば張れますよね。(だからといって、カーネルに制限
がないと言い切るのも問題ありだけど)

>> カーネルとして、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デフォルトの名無しさんNGNG
>>78

signal()を使わず、sigaction()でSA_RESTART flgをOFFにする。
FreeBSDは、signal()はBSDセマンティクス、sigaction()はPOSIXセマンティクスだとさ。
008471NGNG
>>75
> ポートは65535個しかありませんが。
はぁ? オマエが「サーバの」って限定したんだろーが?
サーバ側のポート番号は一緒だよ。

>>76
> カーネルのSOMAXCONNは(以下略
> 皆まで言わないとシラを切るつもりですか?
それも、バックログキューの上限値の話だろ?

>>77
> fd_setの数にも同時起動可能なプロセス数にも上限があるし
何が言いたいのかわからんけど、fd_set って select(2) の話だと
思うんだけど、それはファイルディスクリプタの話であって、
コネクション数とは一致しないよ。確かに、fd が open できなければ、
ソケットが生成できないから、アプリケーションがコネクションを保持
できなくなるけど、でも、コネクションは存在するからね。

>>82
> まあ、カーネルにコネクション数制限がないって話は、打ち砕く
> ことはできるんじゃないかな。つーか、すべての資源で制限がない
> てものはないんだから...まあ、モノによっては、上限が2の64乗
> とかになっちゃうんだけどさ...それでも、それが上限だとは言い
> 張れるわけで(笑)
もちろん、確かにそーゆー話をし始めると、無制限じゃないよ。
でも、「コネクション数」としての制限値はないよ。リソースの
制約は受けるだろうけど。
008578NGNG
>>83
ども、ありがと。
recv のマニュアルばっか見てました。
signal(3) に書いてありますね。
お馬鹿な質問にレスくれて、THXです。
0086デフォルトの名無しさんNGNG
>>84

打ち砕く云々の部分は、与太で書いただけだから、気にしないようにね(笑)
基本的には、一人だけ御馬鹿さんがいると、みんな思ってるんじゃないかな。
0087デフォルトの名無しさんNGNG
いや、思ってないよ。
0088デフォルトの名無しさんNGNG
思ってるよ。
0089デフォルトの名無しさんNGNG
おまいら、レイヤをごっちゃにして話すのやめろです。
0090デフォルトの名無しさんNGNG
なんか、盛り上がってますね。
話のきっかけは、recv() で物理的な回線断、相手のクラッシュが検出できるか?
ってことに関しては、判断不可能ってのが正解だと思います。
そういう状態になったら、recv() は永久に戻ってきません。
そのために、わざわざアプリで定周期にパケットをやり取りして相手の生死の
確認をするんだと思います。

その後のやり取りについても、 >>61 , >>71 , >>81 , >>84 の説明のほうが
筋が通ってて、正しいように思います。
私は、TCPの内部のソースはまだ読めないので、一部の説明は理解不能ですが。

それと、
>じゃあどうしてSYN floodのような攻撃が可能なのですか?
についてですが、大抵のサーバは、コネクション毎にプロセスやスレッドを
作りますから、それらに割くリソースがシステムのリソースを食いつぶしていって、
最後にはサーバーが動けなくなる(メモリが足りなくてプロセス、スレッドがもう
作成できないとか)や、ものすごい勢いでコネクションの確立要求がくるとそれの
対応にカーネルが追われてしまって、本来のサーバーの仕事が出来ないくらいCPU
パワーを使ってしまい、結果、サーバーとしての機能停止って感じじゃないのかな?

よって、サーバー側のコネクション数に限界がなくても、SYN flood攻撃は成り立つ
と思います。




0091デフォルトの名無しさんNGNG
>>90
SYN flood の話で、プロセスやらスレッドやらを出してきちゃだめ。

SYN_RCVD 状態のコネクションは、まだアプリケーションに通知
されない(accept(2) できない状況)から、サーバアプリケーションが
fork() やら、スレッド生成やら、したりしないの。

で、カーネル内では、そのハーフオープンのコネクションのため
のテーブルがどんどん増えていくんだけど、消しようがないから、
そのうち、資源無しになっちゃうってのが SYN Flood 攻撃です。

アプリケーションが引き取ってるんなら、アプリケーションが close
すれば済むんだけど、ハーフオープン状態だとアプリケーションが介在
できず、カーネル内で TCP もそれを消すことができずに、ああ、困った
ね、って話。

SYN Flood の話を持ち出してきたのは、勘違いしている人でしょ?
0092デフォルトの名無しさんNGNG
SYN Flood
SYN-SYN/ACK-ACK
0093デフォルトの名無しさんNGNG
WindowsXPの場合は受付側のTCPのコネクションは4000で打ち止め
代表ポート受付後自動で1000〜5000のポートに対して処理を引き継がせているが
それを食いつぶすとコネクション不能になった
この範囲内でしか自動で割り当ててくれないらしい

ところでどこを設定すればこのコネクションの限界数を無限に増やせるの?
0094デフォルトの名無しさんNGNG
XP HomeとXP Proと.NET Serverで値が違うんだろうなあ・・・
0095デフォルトの名無しさんNGNG
HomeとProは同じ結果
NETはMSDNの嫌がらせCDに入ってたけど入れてないので試してない
0096デフォルトの名無しさんNGNG
.NET Serverなら無制限だと思われ
0097デフォルトの名無しさんNGNG
試しもしないで無責任なことをほざくのはヤメレ
0098デフォルトの名無しさんNGNG
だってインストールするのめんどいんだもん・・・
0099デフォルトの名無しさんNGNG
>93
http://tangentsoft.net/wskfaq/advanced.html#maxsockets
の話では無かろうな。
010090NGNG
>>91
な・る・ほ・ど
そういうことですか。
また、1つ賢くなりました。
なっとくしましたです。
0101デフォルトの名無しさんNGNG
とりあえずネットワークプログラミングをやるんなら、Stevens本ぐらいは嫁。
素人の巣窟かここは...
>>91
後半は大嘘だな。
以下、「UNIXネットワークプログラミング 第2版 Vol.1」からの引用。
-確立待ちコネクションキューが満杯の場合、Posix.1gではSYNを無視、
-あるいはRSTで応答のどちらの挙動を示しても良いことになっている。
-Berkeley派生のインプリメンテーションでは、到着したSYNを無視する
-ことになっている。
0102デフォルトの名無しさんNGNG
UNIX依存の知識を披露していい気になってる奴発見
0103デフォルトの名無しさんNGNG
>>101
まあ、>>91はこうなっている実装が問題になったって話したんでしょ。

>>73,>>75はハゲシク無知なくせに謙虚さが足りないぞ。
0104デフォルトの名無しさんNGNG
apatchのインストールの話題はここでいいですか?
0105デフォルトの名無しさんNGNG
>>104
違います。
010691じゃ無いがNGNG
>>101
コネクションキューも資源の一つなんだが…

コネクションキューを割り当てることが出来ないから
-確立待ちコネクションキューが満杯の場合、Posix.1gではSYNを無視、
-あるいはRSTで応答のどちらの挙動を示しても良いことになっている。
-Berkeley派生のインプリメンテーションでは、到着したSYNを無視する
して、新規のコネクション要求が受け入れられない。
どのように大嘘なんだ?
0107デフォルトの名無しさんNGNG
>WindowsXPの場合は受付側のTCPのコネクションは4000で打ち止め
>代表ポート受付後自動で1000〜5000のポートに対して処理を引き継がせているが

accept するとポート番号が変わる?
んなばかな。
0108デフォルトの名無しさんNGNG
>>107
受け付け用のポートと実際に通信するポートは異なるのだが
もしかして全部同じポートで通信していると思ってたのか?
同じポートでどうやってTCPが通信先を判別するのか小一時間問い詰めたい
0109デフォルトの名無しさんNGNG
>>108
もまえは小一週間勉強しなおせ
0110デフォルトの名無しさんNGNG
>>108

単に、socket記述子が別になることと勘違いしてない?
netstat とか使ったことある?
0111101NGNG
>>103
それだと、「こうなっていない実装」(例えば典型的なBerkeleyの実装)に
対してはSYN floodingは無効であると主張しているのと同じ。

>>106
> コネクションキューを割り当てることが出来ないから
SYN floodingにより、あるポートに割り当てられた接続待ちキューの
エントリが満杯になったとしても、他のプロセスには何ら影響がなく、
新たにlisten()によりコネクションを待ち受け、
正常にサービスを行うことができるが、「キューを割り当てられない」
とは、一体何を云っているのか?
0112デフォルトの名無しさんNGNG
>108
>同じポートでどうやってTCPが通信先を判別するのか

srcaddr : srcport : dstaddr : dstportの組で判別しまふ。
鯖のポートがおなじでも、クライアントのポートは(アドレスも)違うので大丈夫なのれす。
サーバポートとクライアントポートの違いが分からない香具師はアフォなのれす。
小一時間人を問いつめる前に、マスタリング TCP/IPを10遍読むのれす。
0113デフォルトの名無しさんNGNG
>>111

なんか、勝手に自分で問題設定してませんか?

あなたは、勝手に 91 が、接続待ちキューはシステム全体で共有、
といっているとみなし、ポート単位に割り当てられている実装がある
のだ、とわめいている。

でも、91 は、システム全体で共有だとか、ポート毎だ、なんて言及
していないと思うけれど?
0114デフォルトの名無しさんNGNG
telnetでhttp://hostname/index.htmlをHTTP/1.1でGETして標準出力に出す場合、画面に収まり切らない部分って皆さんどうやって見ていますか?
現在はGETするだけのHTTPクライアントを作って結果をリダイレクトしてファイルに落してから後程ファイルを開いて先頭の方を見るという面倒な事をしています。
0115デフォルトの名無しさんNGNG
>>114
teraterm とかのまともな Telnet クライアントなら、ログ機能 (受信データを記録する機能) がついてるから、そう言うのを使えば ?
0116デフォルトの名無しさんNGNG
本当にHTTP/1.1を話したいのか問いたい。Connectionの面倒を見る気があるのかと。
RFC2145を読んでないならまず読んどけ。
0117114NGNG
>>116
私の事を言っていますか?
すみませんこれから読みます...
2068はobsoleteなんですよね?
0118114NGNG
>>115
むしろそういう機能をもつHTTPクライアントを作りたいんです。
ならまずRFC読んでからですね。すみません。
0119デフォルトの名無しさんNGNG
>>114
% w3m -dump_both http://www.example.com/ | lv
w3m はクライアント, lv は more のようなもの
0120114NGNG
>>119
できますた。これらのソースみて勉強します。有難うございました!
0121デフォルトの名無しさんNGNG
Cのマルチスレッドなのですが,
_beginthread等で起動するスレッドで
_beginthreadに渡すパラメータを参照する場合と、
グローバル変数を参照する場合とで違いはあるのでしょうか?
0122デフォルトの名無しさんNGNG
Don't use global scoped variable!!!
0123デフォルトの名無しさんNGNG
スレッド間でデータ共有するのだから
グローバル変数しか方法が無い思うのですが。
0124デフォルトの名無しさんNGNG
mutex すれ。
0125デフォルトの名無しさんNGNG
MFC使わないと無理ということでしょうか?
0126デフォルトの名無しさんNGNG
>>121
グローバル変数とパラメータが指すオブジェクトは全然違うやん。
0127デフォルトの名無しさんNGNG
>>121
何を聞きたいのかわからん。
当然参照の仕方 (コードの書き方) は、違う。
しかし、これはマルチスレッドだろうが単なる関数呼び出しだろうが一緒だろ。

で、問題はこれが「ネットワークプログラミング」と何の関係があるのかと...。

>>123, >>126
はぁ ?
0128デフォルトの名無しさんNGNG
すみません、質問いいですか?

特定のIPアドレスのPCが起動したときに、メールで知らせがくる
プログラミングを教えていただけないでしょうか?環境はLinuxです。

おおよその流れは、

・10分おきぐらいに特定IPにPINGをかける。
・if(応答なし)
   次の10分後に再びPINGをかける;
  else(応答あり){
    当方にメールで知らせる;
    自動的に特定IPのPCにTELNETでログインする;
  }

以上のような感じのプログラミングできるでしょうか?
よろしくお願いします。
0129デフォルトの名無しさんNGNG
ping:
 int ret = system( "ping somehost -c 1 -q" );
メール:
 FILE *fpmail = popen("mail some@anyhost -s title");
  fprintf(fpmail, "somhost boots.\n");
  fclose( fpmail );
あとは自分でやれ。
0130デフォルトの名無しさんNGNG
>>128

Perlかshellか何かでさくっと出来るだろ。

漏れの予想ではtelnetする部分がちょっと工夫が必要になるのではないかと
思うが。まずは自分で考えろ。


0131デフォルトの名無しさんNGNG
128です。
129,130さんありがとう。

でも言語にはかなり疎いんです。Linuxのネットワーク管理ぐらい
をすこしかじった程度なんで。
でも、この前のLinuxWorldを参考にしてshellを組んでみたいと
思います。

でもやっぱりできそうにないな。。。。
0132121NGNG
>>127

スレ違いスマソ
「マルチスレッドプログラミング相談室」
逝ってきます

0133デフォルトの名無しさんNGNG
>>131

簡単にあきらめんなよ。

本当にtelnetをつかうなら、shellは無理じゃないか?Perlならやりようによる。
あとはExpectを調べてみろ。

ところで、相手のPCには、telnet server動いてるんだよな?ちょっと気になった。

ネットワークプログラミングとは微妙にちがうのでsage
0134133NGNG
下がってない・・・鬱死
0135デフォルトの名無しさんNGNG
むしろtelnetでloginすることが要求仕様なのかどうかの方が気になる。
0136デフォルトの名無しさんNGNG
Win32APIがそこそこ使いこなせるようになり(大したことはない…)
Winsockもそこそこ使えるようになって(これはもっと大したことない…)
ふと思ったのですが、簡単な遠隔操作プログラムならつくれるんじゃないかと…。
簡単なト○イも作れそうでちょっと怖くなりました。。
0137デフォルトの名無しさんNGNG
131です。
いや、正直なところお手上げです。
やってみたいのですが。。。
当方C言語を少々(目的:数値計算)なのでなんともできません。

Perlもshellもよくわかりません。
Linuxネットワークサーバを数十個つくれるぐらいです。

出来そうな人、どうかお願いします。
平日軍に大いに期待します。ホント申し訳ありません。

当方提供できるのは、MPIの数値計算プログラミングを少々
というところです(恥)。
0138デフォルトの名無しさんNGNG
133さん
131です。
Telnetserverはworkしています。
僕はちょっとPerlとかあまりわからなくて、
申し訳ないです。。。
0139デフォルトの名無しさんNGNG
>>136
作ってからいえよ。一番むずしいのはどうやって感染させるかなんだから。
WinMXで一度自作のトロイ流したけど感染は3人しか確認できなかった。
0140デフォルトの名無しさんNGNG
↑すごい人が居るな・・・・、ここ。
私、138です。。。。
0141デフォルトの名無しさんNGNG
本当に流すところが凄い。。。
0142デフォルトの名無しさんNGNG
>>139
感染したかどうかなんて確認できるの?
0143デフォルトの名無しさんNGNG
実行したら、どっかのCGIでも叩くようにすればええんとちゃうの。
0144136NGNG
>>139
3人も居れば凄いのでは・・
作ったとしても漏れは怖いので流せません。(汗
>>140
もっと凄い人はスレの上の方に・・
0145デフォルトの名無しさんNGNG
>>144

全部読んだけど、凄い人って誰・・・・!?

ところで、128の仕事はshellでいいのかな?それとも
Perlなのかな?
0146デフォルトの名無しさんNGNG
>>145
ウイルスをばら撒く勇気がある人<凄い人
0147デフォルトの名無しさんNGNG
ここに書いていい質問かわからないんですが…

今WEBのページを作っているんですが、
JAVASCRIPTで定義した変数の値をPerlの変数に渡してサーバに送りたいのですが、
そういったことって出来るんでしょうか?

CGIでサーバを介すと時間がかかるんでページの中ではJAVASCRIPTで処理して
その結果をPerlで出来たら早いと思って、やろうとしているんですが…。

誰か詳しい人や、やったことがある人がいたら教えてください。

よろしくお願いします
0148デフォルトの名無しさんNGNG
>>147
激しく板違い。

JavaScriptがクライアントで動いてることが理解できてりゃ
答えは簡単だろ。
0149デフォルトの名無しさんNGNG
申し訳ないです。やはり板違いでしたね^^;。

で、どゆことですか?
出来ないということでしょうか?
0150デフォルトの名無しさんNGNG
板のトップの注意書きを読んで適切な板で質問しなおしてくれ。
0151デフォルトの名無しさんNGNG
>>147
いや、普通にできますよ


煽りに負けてるようじゃ先は長いけどな
0152デフォルトの名無しさんNGNG
>>128
「PCが起動したとき」はどう定義するんだ?
0153デフォルトの名無しさんNGNG
>>15210 分おきぐらいの ping に応答したタイミングでいい、ってことだろ。
0154デフォルトの名無しさんNGNG
ずーと起動してたら、10分ごとに「起動した起動した」とメールが。。。
0155デフォルトの名無しさんNGNG
当然、前の状態を保持しとくんだろ。
違っていれば落ちた/起動したの判定ができる。
0156デフォルトの名無しさんNGNG
pingの代わりにUDPパケットじゃだめ?
0157デフォルトの名無しさんNGNG
>>156UDP パケットを投げて ICMP Port unreach が返ってきたら、その相手が起動した、って判断するってこと?OS によるけど、UDP ソケットで connect() しとかないとICMP Port unreach エラーは検出できないから、注意。
0158デフォルトの名無しさんNGNG
>>155
ネットワークだから、たまーに ping が失敗することもあるから、失敗したら何回かリトライするようにね。
0159デフォルトの名無しさんNGNG
外部から「起動した」を判定するのは結構難しいので、
pingだけじゃなくて、複合テストをやった方がいいと思う。

例えば、rup、snmpを使ったり、起動したhostがsnmp trap出すようにする。
UNIXだったら、GNU fingerでfinger .clientもいい。
DHCP使ってるなら、dhcpdのlogやsnmp trapも有効だ。
# 調べられるのはserver上に限られるが。
0160デフォルトの名無しさんNGNG
netgameにも使えそうだな。
0161デフォルトの名無しさんNGNG
教えてください
WinSockを使いSOCK_STREAMでADSL回線使用の場合
1秒間に送れるデーターは5KByte程度でしょうか?
たぶんプログラムが悪いんですが。
通常もっと早いですよね?‘
0162デフォルトの名無しさんNGNG
5Kbyteはちと少ない気がする。通常20K-200K程度だと思う。
ただし、相手がちゃんとrecvしていたらね。
0163161NGNG
>>162 ありがとうございます。書き忘れの条件ですが
HTTPプロトコルで GETを取ったら800Byte送るテストで
1秒間に7回程度しか送れません。双方ともスレッドで
単に送受信しているだけです。なにかコツというか
注意点がありますか?
0164デフォルトの名無しさんNGNG
>>163
自分が使っている環境や関連技術をよく調べる。
0165デフォルトの名無しさんNGNG
まずftpかで、上り速度を測ってみたらどうだ?

>162
ADSLなら、逆立ちしても、上り200Kでない筈だけど、、
0166デフォルトの名無しさんNGNG
1Mbps=128KByte/sが最高?
0167161NGNG
たとえばこういうのって速度制限てあります?
WAKWAKですが5KByte(約64Kbps)で制限?
0168デフォルトの名無しさんNGNG
>>161何 byte ずつ write してますか?一方向だけのデータの流れだったら、遅延 ACK が発生して、Nagle アルゴリズムの影響で性能劣化してるってことはない?
0169デフォルトの名無しさんNGNG
どなたか教えてください。
JavaでFTPライブラリを製作していますが、
サーバー上の特定のパスがファイルであるかディレクトリであるかを
判定する最も確実な方法は何でしょうか?
NLST -alLでカレントディレクトリと親ディレクトリを返したら
ディレクトリ、という風にやるつもりでしたが、
FTPサーバーによってそれが当てはまらないのがあり、
困っています。
0170デフォルトの名無しさんNGNG
MLSD使ったら
0171デフォルトの名無しさんNGNG
CWDしてみてできたらディレクトリ
「ファイルである」以外の理由で失敗することも歩けど
0172デフォルトの名無しさんNGNG
>>163
単純にHTTPのハンドシェイク遅延に引っ張られてるだけじゃネーノ?
0173169NGNG
>>170
MLSDは対応してないサーバーが多くて・・・
もうちょっと一般的になればMLSD決め打ちでいけるのですが。

>>171
サーバーによって、パーミッションエラーが返ってきたりするので、
あまり実用にならないと判断してその手は見送りました。

FTPプロトコルって、中途半端に人が使うようにできているので
たちが悪いですね・・・
0174デフォルトの名無しさんNGNG
質問す
sockaddr_in
の各メンバに値をいれたのち
bindなどに引数として渡すときに
(struct sockaddr*)sockaddr_in
というふうにキャストする理由というのは
ポート番号IPアドレスなどを
アドレスデータとしてまとめて読み込んでしまうから
なんでしょうか?
ソース見てないのですが
そんなところであってますか
0175デフォルトの名無しさんNGNG
>174 ちがう。単にbindのプロトタイプ宣言が
int 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
>>175
ちょっと補足しとくと、bind() なんかのソケットライブラリは IP 専用じゃなくて、他のプロトコルにも使うつもりだったから、そう言うプロトタイプになっている。

(でも、IP 以外で使ったことある奴はあんまりいないと思う...。)
0177デフォルトの名無しさんNGNG
>>176
そうか?AF_UNIXなんかはそれなりに使われてると思うが。
0178デフォルトの名無しさんNGNG
>>152
起動した側にパケット送らせるのはダメか?
監視鯖側が受信確認するまでリトライしてさ。

で、監視鯖はダウンするまで10分置きにPingで確認しつづけるの。
これなら、死んでるPCにまでPingしなくて良いだろ。

つって、いっぺんに100台からのPCが起動したら、DDOSになっちゃうか。
0179デフォルトの名無しさんNGNG
>>177
>>175を見れ。intじゃなくてSOCKETだ。
0180デフォルトの名無しさんNGNG
>>179
もともとの質問である>>174にはWinSockであることを匂わせる部分は
ひとつもないが
0181デフォルトの名無しさんNGNG
>>180
わかってるよ。
あんたが「>>175へレスを付けた>>176」へレスしたからだ。
0182デフォルトの名無しさんNGNG
>>176は>>175を見て補足したのだから,>>176はWinSockのことではないのかえ?
0183デフォルトの名無しさんNGNG
まあまあ、両人とも違いはわかってるんだからえーやんか。
マターリいこーや。
0184176NGNG
>>182
ごめんよ、あんまり意識なかった。
ソケットライブラリ一般と言う意味で書いていた。
だから AF_UNIX も意識にあったけど、まあ IP で使う香具師の方が俺の周りじゃ多かったんだよ。

よく見ると >>174 は、「(bind() の) ソース見てないのですが」と書いてるから、多分 WinSock ではないだろうね。
0185デフォルトの名無しさんNGNG
Socket プログラミングについて質問があるんですが。
最初、WSAStartup 関数やって、socket 関数でソケットを取得すると思いますが、
既存のソケット(他のプログラムが作ったソケット)を取得したいんですがやりかたがよくわかりません。
開発環境は WinXP Prp. VC++6.0 です。よろしくお願いします。
API でそういうようのがあればいうことないです。(API なら VB で使える)
0186デフォルトの名無しさんNGNG
>>185
VB好きならVBでやれよ
0187デフォルトの名無しさんNGNG
>>186
こういう奴が一番厨っぽい
0188デフォルトの名無しさんNGNG
ソケットをプロセスを超えて渡すというのは見たことないなあ・・・
unix方面でもわりかしトリッキーだったと思う
0189デフォルトの名無しさんNGNG
WSADuplicateSocket
0190デフォルトの名無しさんNGNG
WinSockなら、ふつーにDuplicateHandleする手もある
0191デフォルトの名無しさんNGNG
>unix方面でもわりかしトリッキーだったと思う
apacheからはじまるマルチプロセス型
サーバの立場はどうなってしまうのだろうか。
0192!188NGNG
子プロセスには簡単に渡せるんだろうけど。
0193188NGNG
>>191
apacheは動的に生成されたsocketをプロセス間では渡してない。
listenするsocketをfork時に共有しているだけ。
fork時のfdの共有はunixでは一般的に使える(でないとpiped forkが...)。

最初はacceptしたのを渡してると思ってたんだけど、思い込みって恐いね。
0194188NGNG
>>189
うわあ、あるんだ・・・勉強になりやした。
winsock2ってことはwin98系でも使えるのね・・・
0195185NGNG
いろいろなレスありがとうございます。
WSADuplicateSocket() や DuplicateHandle() 聞いたことない関数ばかりで調べてみたのですが、
DuplicateHandle() 関数に関して、第二引数に複製対象のハンドルを書くみたいですが、
私がほしいのはその第二引数のハンドル(ソケットハンドル)そのものです。
なのでこの関数を使う時点では他プロセスが作ったソケットハンドルは分かっているのでは?
(この関数使ったことないので根本的に私の解釈が間違っていなければですが)

えと、やりたいことは・・・
あるプロセスが取り扱ってるソケットがあります。
そのソケットが送信および受信したデータをバイナリ単位で知りたいのですが・・・。
0196デフォルトの名無しさんNGNG
hookしる
0197185NGNG
Hook では送信受信などのメッセージは横取りできてもデータそのものは横取りできないのでは?
0198デフォルトの名無しさんNGNG
kageがかちゅに用いているようなHookを使え、というとるんや。
0199デフォルトの名無しさんNGNG
>185
>既存のソケット(他のプログラムが作ったソケット)を取得したいんですがやりかたがよくわかりません。

>195
>あるプロセスが取り扱ってるソケットがあります。
>そのソケットが送信および受信したデータをバイナリ単位で知りたいのですが・・・。

全然言うとること違うやないか、、、
0200デフォルトの名無しさんNGNG
http://www.layer.co.jp/

ここの作者に聞いてみたら?
0201デフォルトの名無しさんNGNG
聞かなくてもEtherealのソースを見るとか
0202デフォルトの名無しさんNGNG
net sendを使ったプログラムを組みたいんですがどうしたらいいのでしょうか?
参考になるwebページでいいんで教えてください。
0203デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=%22net+send%22&lr=lang_ja
0204デフォルトの名無しさんNGNG
からあげーーーー
0205デフォルトの名無しさんNGNG
UNIXでgethostbynameを非同期に実行するにはどうしたらいいのでしょうか?
fork()やスレッドを使うか自前でDNSのパケットを処理するしかありませんか?
0206デフォルトの名無しさんNGNG
>>205
fork()がポータブルかなあ・・・
スレッド使うときはreentrantバージョン(gethostbyname_rとか)
を使うよう気をつけようZE!
0207デフォルトの名無しさんNGNG
>>205
squidが自前で実装してたような・・・?
0208デフォルトの名無しさんNGNG
Mozillaも自前で実装してる
0209デフォルトの名無しさんNGNG
receive: /* ストリーム型のデータの受信処理 */
if ((rn = recv(s, &recv_buf[i], 1, 0)) < 0)
break;

/* 改行単位で受信処理をする */
if (recv_buf[i] != '\n') {
i++;
if (i < BUFSIZE - 1)
goto receive;
}

ストリーム型のデータの受信というのは通常このようにやるもんでしょうか?
どういった理由からでしょうか?
0210デフォルトの名無しさんNGNG
recvの挙動と戻り値を調べてみると分るぜよ
0211デフォルトの名無しさんNGNG
gotoがキモいコーディングだな
0212デフォルトの名無しさんNGNG
大学の研究室にはLANが組まれていて、二台のコンピュータ間でネットワークプログラムを動かすときは、互いのマシン名が存在しているので、それでやりとりするんですが、
家にはwindowsパソコン一台しかないので、ネットワークプログラミングの勉強ができません。
DOS窓を二つ開けば擬似的にコンピュータが二台あるように見せることができるらしいですが、各DOS窓を識別する名前などが存在しないようで、こまっています。
パソコン一台でもLAN環境が整っているように見せるにはどうしたらよいのでしょうか?
ちなみにJAVAのHORBというやつを勉強してます。
0213デフォルトの名無しさんNGNG
>>212
どうしても二台分かれた環境にしたいのであれば、
VMwareなどのエミュレータを使うという手もあるよ
0214デフォルトの名無しさんNGNG
ポート番号分ければ委員でねえノ?
0215デフォルトの名無しさんNGNG
ORBのお試し環境に、別マシンはイランデショ。
各サーバーオブジェクトはORBを介して通信していて、その下が
LAN越しのホスト間通信をやっているのか、たんなるローカルの
プロセス間通信なのかはキニシナイ、というのがORBだとおもわれるが。
0216デフォルトの名無しさんNGNG
>>212
LANカード入れて、TCP/IP入れて、IPアドレスは適当にふって、
後は>>214の言う通りポートをわければ良い。

というか、プログラムするのにDOS窓は関係ない。
0217デフォルトの名無しさんNGNG
寒くなってくると指が思うように動かないもんですね
くそ
0218デフォルトの名無しさんNGNG
ループバックのアドレスを指定した場合って
そのパケットってどこまでいきますか?
適当にプログラムつくって
127.0.0.1に向かって飛ばしても
windumpとかで反応してないんですね
でもISPから振ってもらってるIPアドレスに向かって飛ばしたら
windumpが見てるところまで落ちてから戻ってきます
だからLANカードささなくてもいいんじゃないですかね?
これって甚だ勘違い?
0219デフォルトの名無しさんNGNG
なんのためのループバックだか。
0220デフォルトの名無しさんNGNG
勘違いじゃない。カードを刺さないでもTCP/IPのサービスは動いてる。OSがサポートしてればだけど。
0221デフォルトの名無しさんNGNG
>>217
そういうときに指先に穴があいている手袋をどうぞ。
0222デフォルトの名無しさんNGNG
特撮ヒーローが着けてるヤツだな
0223デフォルトの名無しさんNGNG
>>218
windumpで、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デフォルトの名無しさんNGNG
>>223
breakじゃ意味ないね(藁
つーか、コンパイル通らんだろ。

それに1バイト単位でrecv()って、・・・おぃ(^^;
0225デフォルトの名無しさんNGNG
でもPerlでストリーム型のデータ読むときは
$| = 1;
ってふつーにやるけど
なにかまずいことでもあるの?
つーか1バイトずつ読む以外の方法で
・改行まで読み込む
・ブロックも絶対しない
の両方を満たすことなんてできるの?
0226デフォルトの名無しさんNGNG
>>225ソケットを fdopen() して、そこから fgets() する。ftp のソース読め。ブロックを絶対しない、ってのは 1 byte ずつ読んだっていっしょだろ?その 1 byte が到着してなきゃブロックするんだから。ノンブロッキングモードだと当然ブロックはしないけど。
0227デフォルトの名無しさんNGNG
取れるだけとって、その中からデリミタ(今の場合改行)を探して、
それ以前を受信電文とし、それ以降は次の受信電文のためにバッファリングする。
というやり方に名前があったはずだけど忘れた。
でもまぁ、ストリーム型なら、電文ヘッダに電文長付けれ。
0228デフォルトの名無しさんNGNG
1バイトずつ読んでるやつがいるとは。
0229デフォルトの名無しさんNGNG
>>226
fgetsがバッファを満たすときにreadを一回しか呼ばないことは
保証されているのか?
> 1 byte ずつ読んだっていっしょだろ?
この場合はselectで回避できる。
0230224NGNG
Perlでは他の要因の方が大きいだろうけど、
Cの場合は同じように1バイトずつ読む場合でも、
fdopen()してストリームからgetc()とかで読むのと、
ファイルディスクリプタからrecv()で読むのでは
バッファの関係で速度に雲泥の差がある。

移植性の問題もあるし、fdopen()しなくても
自前でバッファリングすれば問題ないが。

>>229
保証されてるかは知らんが、毎回FILE*のバッファが
一杯になるまで満たすような実装にはしないだろ。
0231デフォルトの名無しさんNGNG
有名どころのネットワークゲームは
winsockを使っているのでしょうか?
0232デフォルトの名無しさんNGNG
Windows版のヤツは(直接かラップしてかはしらんが)
使っているはずです。ゲーム機についてはシラネ。
0233デフォルトの名無しさんNGNG
>>232
ゲーム機はps2sockなどを使っています。
0234デフォルトの名無しさんNGNG

>>230
どっちが性能いいの?
0235デフォルトの名無しさんNGNG
fgets()は改行が来るかエラー・EOFになるまでは何度でもread()を呼ぶよ。
従って、blockingモードのソケット+select()+fgets()では、相手が
行の途中まで送信した後改行をいつまでも送らなければ、ブロックを
回避できない。よって、fgets()を利用する場合はselect()ではなく
alerm()などの手段でタイムアウト管理するのが普通だろう。





0236デフォルトの名無しさんNGNG
winsockを使ってTCP/IPをC言語でプログラムしてます。

recv関数は相手が送られてくるまでまちつづけてると思うのですが、受信スタートしたときの時間を取りたい場合どうすればいいのでしょうか?
待ち時間と受信にかかった時間をとりたいとおもってます。
0237デフォルトの名無しさんNGNG
selectでデータが受信バッファにあるかどうか分るから、
最初のデータが到着するまでを「待ち時間」とし、そこから最後のデータが
到着するまでの時間を「受信にかかった時間」とすればいいと思う
0238236NGNG
>>237レスありがとうございます。
今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
P2P な UDP のコードを書いてるのだけど

ネットワーク内ブロードキャストに投げたデータグラムは
すぐさま自分自身でも受け取ってしまうけど、
受け取ったデータグラムが自分自身が投げたものであるかどうかを
知る、いい方法はありますか?

UDPポートはひとつで、送受兼用です。
0240デフォルトの名無しさんNGNG
普通、データに送信ノードのIDを埋めたりしない?
0241239NGNG
ノードIDをつくりだしたくなかったので横着しようと思ったんですが甘かったかしら。
どうせLAN内で動くものだし、素直にインタフェイスのアドレスでも得るかのう。
0242デフォルトの名無しさんNGNG
recvfromのMSDNの記述から、
>>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
0243230NGNG
>>234
ネタか?・・・まぁいいや。まじめに答えてあげるよ。
FILE *関係の関数、特にgetc()はマクロで実装されてる事が多いから、
バッファが空でなければ、そのチェック自身と一回の配列アクセスだけで
関数呼び出しすらなしに1バイトのデータを取得できる可能性が高い。

recv()の場合は、システムコールの最低限のコストの数百クロックに加えて、
ファイルディスクリプタや引数の値やアドレス空間のチェック、
実装によってはCPUの再スケジュールやその他もろもろが発生するから、
バッファリングされたユーザ空間だけでの場合と比べて何桁かは遅い。


>>235
ブロックして困るようならfgets()なんか使わずに自前のバッファを使うべき。

毎回FILE*のバッファを一杯にしないってのは、一回read()してバッファにデータが
残ってるうちは、満杯にするために再度read()することはないって意味だよ。

複数回read()されると、一度改行を受信してもfgets()から復帰できなくなる。
この場合、条件によってはお互いに半デッドロックって最悪な状態もありうる。
0244デフォルトの名無しさんNGNG
>>236
最初に書いた条件だとselect()する必要ないと思うが。
複数のソケットを待機するか、タイムアウトさせたいのでなければ必要ない。

おそらく、最初のselect()が完了してからを「受信にかかった時間」としたいんだろうけど、
select()直後のrecv()が復帰するまでにかかる時間は無視できる範囲内になるし、
場合によったらオーバーヘッドによって生まれる誤差の方が大きいかもしれない。
0245235NGNG
> ブロックして困るようなら
「無限にブロックしても困らない」というケースの方が少ないと思われ。
ただし先にも書いたように、alarm()によりread()に割り込めば
無限にブロックすることは回避できるので、fgets()を使うのが
常にまずいとはいえないだろう。

だから、単純に「blockingソケット+select()+stdio」の相性は良くない、
とだけ云えば良い。select()は次回のread()がブロックしないことだけは
保証するが、1文字より多くの文字を読み取る可能性のある全ての
stdioの関数は、2度以上のread()を行う可能性があるからだ。
# まあ、SO_RCVLOWATを設定することでこの辺の事情は変わるが...
non-blockingソケットであれば、stdioを使うべきではないのは云うまでもない。

移植性を考えれば、最初から自前でバッファリングを行う方が良いのは同意。
0246デフォルトの名無しさんNGNG
>>243
結局>>226は>>225の条件(ブロックしない)への回答としては
イマイチってこと?
0247245NGNG
あー書いてる間に割り込まれた。そうかalarm使えばいいのか
0248246=247!=245NGNG
おまけに名前欄間違えるし…鬱だ回線切って寝よう
0249デフォルトの名無しさんNGNG
winsockでalarmはないだろう、とか
0250230NGNG
>>245
そう?ブロックしても困らない状況は結構あると思うよ。
勉強目的とかでクライアントをお手軽に作る場合や、鯖だとしても、
タイムアウトが必須なほど資源的に程切羽詰まってない場合とか。

でも、alerm()は有効そうだね。
EINTRで再read()する実装あったら嫌だけど(w

>>246
究極的には、常にブロックを一切せずに一行読み込むのは不可能。
select()使ったとしても、タイムアウトするまではブロックするわけだし。
ただ、その待ち時間の間に他の事をできるかどうかの違いでしかない。

プログラムの関心がひとつのソケットにしかなく、
タイムアウトも無用であればブロックしようがどうでもいい。
0251236NGNG
>>244
レスありがとうございます。
select関数を使っていない場合どうすればブロッキングされている時間、送受信にかかった時間をとれるのでしょうか?

recv関数の前後で時間をとると、ブロッキングの時間と送受信の時間の合わさったものがでるとおもいます。
どうすればできるのでしょうか?
0252デフォルトの名無しさんNGNG
HORBを使っているのですが、
Error: default constructor not found. HORB server can not create class MachineAmbient
というエラーがでます。
どなたかHORBをご存知の方いらっしゃいましたら、このエラーのでる理由を教えてください。
よろしくおねがいします。
0253244NGNG
>>251
recv()はデータが到達して読み込める状態になったら即座に復帰する。
待機時間と比べたらバッファに転送する時間なんてないに等しい。
0254デフォルトの名無しさんNGNG
要するに一回のrecvの時間を計ってもしょうがないと。
何回かrecvするなら最初のrecvから最後のrecvまでの時間を
計るとかならまだよいと。そういうことだよね。
0255236NGNG
>>253
レスありがとうございます。
recv関数で1MBぐらいのデータを送受信してるのですが、ブロッキング時間と送受信にかかる時間をはかれと上からの命令でして・・・
やっぱりむりなのでしょうか?select関数をつかうプログラムでないとだめなのでしょうか?
0256244NGNG
>>255
ごめん。実測したら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デフォルトの名無しさんNGNG
>>249
WinsockならWSAAsync系
>>250
> 究極的には、常にブロックを一切せずに一行読み込むのは不可能。
> select()使ったとしても、タイムアウトするまではブロックするわけだし。
タイムアウト0でビジーループをまわすとか。
> ただ、その待ち時間の間に他の事をできるかどうかの違いでしかない。
その違いこそが重要なんでしょ。ブロックしたら困る局面ってのは。
0258デフォルトの名無しさんNGNG
ブラウザとかで、アクセスすると環境変数(ブラウザ名など)が残るのですが、
それを、独自のプログラムで実現するにはどうすればいいのでしょうか?
ご教授ください。
0259デフォルトの名無しさんNGNG
ちょっと調べればすぐわかるのに
0260デフォルトの名無しさんNGNG
おい、259 は 258 が何をやりたいのかわかるのか?
漏れはわからねぇ・・・
0261デフォルトの名無しさんNGNG
プログラムの対象がどちらかもわからん
0262デフォルトの名無しさんNGNG
HTTP サーバーを独自のプログラムで作りたいという話じゃないのか?
0263デフォルトの名無しさんNGNG
selectで受信バッファしらべてるんですが、受信可能の場合は1を返すのでしょうか?
0264デフォルトの名無しさんNGNG
>>263
マニュアルページぐらい読もうよ・・・
0265デフォルトの名無しさんNGNG
>>もうしわけないです
ディスクリプタ集合に含まれているディスクリプタの数を返す
っていうのがわからなくて・・できたらおしえてほしいのですが・・
0266デフォルトの名無しさんNGNG
ディスクリプタ集合のうち、反応があったものの個数が帰る
0267デフォルトの名無しさんNGNG
じゃーソケット1つの場合は1がかえるということでしょうか?
0268デフォルトの名無しさんNGNG
>>267
1か0だ。>>266を読め
0269デフォルトの名無しさんNGNG
おまえら教えてください。

Windowsプラットフォームにおいて(開発/実行環境共)
SNMPトラップを発行するエージェントを開発する際、

1)市販ライブラリを使う。
2)Socketで作る。
3)Windows上のSNMP APIを使う。

どれがいいんですか?MIBは定義しなくてもいいです。
単にトラップをRISEすればよいという仕様で。

1)は再配布条件が厳しいです。
2)は面倒なんですが今一番現実的選択だと思います。
3)はどこにもドキュメントがありません。
 拡張エージェントの雛形を作ってレジストリに
 登録しました。で、どうやってトラップ発生させる
 のよ?
0270デフォルトの名無しさんNGNG
>>268
あとエラーのときは-1(winsockならSOCKET_ERROR)になるね。
0271デフォルトの名無しさんNGNG
IRCクライアント作ってるんですが、JOIN、PART、MODEとかのメッセージが
山のようにあるので参ってます・・。
このスレでIRCクライアント作ったかたいますか?
何か上手い方法ないですかね・・。
0272デフォルトの名無しさんNGNG
>>271
plum を参考にしてみては
ttp://plum.madoka.org/plum.html
0273デフォルトの名無しさんNGNG
C言語で
マルチスレッドのサーバを書きたいと思っています。
http://x68000.startshop.co.jp/~68user/net/c-echo-2.html
手始めにこのページにのってる
echoサーバプログラムを走らせて見たのですが、
クライアントから
文字を入力すると
(クライアントの入力:)echo
(サーバからの文字返答:)echo
となって帰ってくるのが理想だと思うのですが、
実際には一文字入力した時点でサーバから返答されてしまい
eecchhoo
となってしまいます。
これを正常にどうさせるにはどうしたらよいでしょうか?
0274デフォルトの名無しさんNGNG
>>273
それ、理想的な挙動のひとつ。
おまえの理想に適った動作にしたいのなら、
鯖側を行バッファリングするようにしないといけないだろう。

「プログラムは、プログラマが書いたとおりに動く」
この一言を差し上げよう。
0275デフォルトの名無しさんNGNG
クライアント側でバッファリングしたほうがラク。
0276273NGNG
ようやくわかりました。
クライアント側でメッセージを作ってから送信すればよいのですね。
0277デフォルトの名無しさんNGNG
質問です
Windows98/MEでRawソケットを使いたいのですが...
どうすればよろしいでしょうか?

Winpcapとかはあんまり使いたくないんですけど....
0278デフォルトの名無しさんNGNG
socket(PF_INET, SOCK_RAW, int protocol);
0279デフォルトの名無しさんNGNG
SOCK_RAWはNT系専用でなかった?
0280デフォルトの名無しさんNGNG
>>279
WinSock2なら使えたんじゃなかったっけか?
0281デフォルトの名無しさんNGNG
>>280
WinSock2はWin9xでも使えたっけ?
0282デフォルトの名無しさんNGNG
恒例のパケットダンプ
http://homepage2.nifty.com/spw/hint/PacketDump.html
0283デフォルトの名無しさんNGNG
>>281
winsock2は9x系でもつかえる。ちと特殊。
raw socketが使えるかどうかは知らない。
0284デフォルトの名無しさんNGNG
wsock2 は Windows 95 で動いたっけ?
Windows 98 では動いたと思うけど。
0285デフォルトの名無しさんNGNG
ランタイムが用意されてる。
http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/default.asp
0286284NGNG
そうか、ありが�d�j
0287デフォルトの名無しさんNGNG
クライアント側はWinsock
サーバ側はバークレーソケットで
サーバクライアント型のプログラムを書いています。
プロトコルは

長さ(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デフォルトの名無しさんNGNG
lengthにはなにが入ってるの?
0289デフォルトの名無しさんNGNG
>>287
CArchiveなんか使ってるからだろ。
それじゃサーバ側がCArchiveのプロトコルを理解できないよ?
0290271NGNG
>>272
レスどうもです。
かなり苦労しましたが、完全オリジナルで一応IRCクライアント完成しました。^^;
#まだテストバージョンですが…。
こんなに大変なのがわかってたら作らなかったな…。とほほ。。
0291デフォルトの名無しさんNGNG
TCP/UDP で論理的に有効なポートって 0〜65535 であってる? 999999 とか
無理だよね?
0292デフォルトの名無しさんNGNG
最近のTCPの解説書にはポート番号フィールドのbit数が書いてないのか?
0293デフォルトの名無しさんNGNG
>>291
http://www.iana.org/numbers.html#P
http://www.iana.org/assignments/port-numbers
0294デフォルトの名無しさんNGNG
サンクス
バークレイソケット API だと 2 バイトだけど下層が IPv6 とか AppleTalk とか
他のプロトコルになると違うのかなと思って…
0295デフォルトの名無しさんNGNG
申し訳ありませんがどなたか
InternetGetLastResponseInfo関数の使い方を
教えていただけないでしょうか?

wininet関数用のGetLastErrorのようなものだと
思っていたのですが
BOOL InternetGetLastResponseInfo(
LPDWORD lpdwError,
LPTSTR lpszBuffer,
LPDWORD lpdwBufferLength
);
上記lpdwError,lpszBuffer,の意味がわからなくて。
どうかお願いします。
0296デフォルトの名無しさんNGNG
たんなる予想で。

lpdwError:DWORDへのポインタ。エラー番号が返る。
lpszBuffer:バッファへのポインタ。文字列が返る。
lpdwBufferLength:用意したバッファサイズ。lpszBufferへセットされた文字列長が返る。
0297デフォルトの名無しさんNGNG
lpdwBufferLengthは
DWORDへのポインタ。用意したバッファサイズをセットし、lpszBufferへセットされた文字列長が返る。
へ訂正。
0298デフォルトの名無しさんNGNG
サーバソケット開くときに、「どの IP への接続も受け付けます」って事を明示的に
示すには 0.0.0.0 とバインドすれば良いのでしょうか?
0299デフォルトの名無しさんNGNG
INADDR_ANYを使ったほうが...
0300デフォルトの名無しさんNGNG
というか、正確には「どのインターフェースでも」だよね。
0301デフォルトの名無しさんNGNG
>>299-300
C/C++ ならそうするのですが Java なので明示的な定数が定義されてません。
0.0.0.0 が INADDR_ANY と等価でないケースって何か考えられますか?
0302デフォルトの名無しさんNGNG
Javaは相変わらず糞だねえ・・・
つかJavaでサーバーソケットなんかやるなよ。
0303デフォルトの名無しさんNGNG
connect(winsock)時の接続に失敗した場合40秒ぐらい時間がかかりますが
これを短くする事って可能でしょうか?
0304デフォルトの名無しさんNGNG
>>303
非ブロックモードにしてwritableになるのを待つ
タイムアウト時間はご自由に
0305草加市在住の初心者NGNG
初心者質問ですいません。
ちょっとスレ違いかもしれませんが、FTPに関しての質問です。(といってもコネクトの部分なんであまり関係ないですが)
最初のコネクトの後
以下のようなメッセージが帰ってきます。

220 xxxx FTP server (Version 4.144 Tue Dec 25 12:10:05 JST 2001) ready.

このとき正常にコネクトできたことを判断するのに
メッセージに
「220」という文字列があることでうまくいったと判断していいのか
「ready」も見るべきなのか、そもそもそういう方法で判断してはいけないのか
教えていただけないでしょうか?
0306デフォルトの名無しさんNGNG
>>305
RFC嫁
0307デフォルトの名無しさんNGNG
>>301
漏れはJava屋じゃないが....
ServerSocketのInetAddressを指定しない版のコンストラクタが、
INADDR_ANYの指定に相当するはずだが。
どうしてもInetAddressを使いたいのであれば、
InetAddress.anyLocalAddress(InetAddressのstaticなinstance)が
INADDR_ANYに相当するようだが、微妙にundocumentだったりする
みたいなんで、InetAddressを使わないのが正しいんだろうな。
0308デフォルトの名無しさんNGNG
VB&winsockを使いプログラムを組んでいるのですが、
送られてきたデータをどの処理に使うかというように振り分けたいんです。
例えばデータがチャット用のTXTなのか、
他の処理に使うためのデータなのかというような感じで判別したいのですが・・・
クライアント側で送るデータにヘッダーみたいなものを付けて
それをクライアント側でCASE文あたりで判別できればいいなと思うのですが・・・
色々調べてみたのですが、いまいちそれらしいものが見つかりませんでした。
どなたか良い方法を教えていただけないでしょうか?
おねがいします!
0309デフォルトの名無しさんNGNG
>>305
SMTP, HTTP, FTP なんぞのメジャーな TCP プロトコルは数値 3 桁だけで
意味を決定できるように出来ている。
0310デフォルトの名無しさんNGNG
>>308
データの頭にヘッダつければいいだろ。
VBだったら&でつなぐのか?

ポート分けちゃうという方法もある罠。
0311デフォルトの名無しさんNGNG
NetBIOS over TCP/IP(NBT)のパケットの仕様知りたければ、どうすれば良いのでしょう。
M$は仕様公開してないよね?Microsoftネットワークってのは非公開なのか?
0312デフォルトの名無しさんNGNG
具体的には、Microsoftネットワークのパケット送って、相手先にファイルのコピーしたいです。
RFC1001、1002もそこまで書かれてないような気が...
0313デフォルトの名無しさんNGNG
sambaのソース嫁
0314デフォルトの名無しさんNGNG
すごい。そんな方法がアタカ。先ずやってみる。>>313
でも、Microsoftネットワーク仕様公開してるとこあったら教えてね。
0315デフォルトの名無しさんNGNG
でも、sambaってNetBEUIだよね。パケットは同じ?
0316デフォルトの名無しさんNGNG
実はDOSでパケットプログラミングしたいんだけど、
sambaはUNIX用だから、Socketプログラミングになってるんじゃないかなぁ?
0317デフォルトの名無しさんNGNG
パケットプログラミングって……何?
0318デフォルトの名無しさんNGNG
パケットドライバにアクセスするプログラミング。
0319デフォルトの名無しさんNGNG
オレ語を説明無しに堂々と使うなよ・・・
0320デフォルトの名無しさんNGNG
sambaのソースファイルかコードの説明してあるサイト無いかな?
デバッガで追いかけようにもLinux無いし...
0321デフォルトの名無しさんNGNG
samba少しづつ分かってきた。
SMBのlogin/offは、そのまんまcli_login.cがある。
SMBリクエストに対しては、process.c/switch_message()関数が応答で、実態はreply.cにある。
で、逆にSMBに要求はどこから出してるんだろう?
0322デフォルトの名無しさんNGNG
namequery.c/resolve_name()関数はWinユーザからIPアドレス取得かなぁ?

SMBに入出力があるわけだから、SMBクラスにしといた方が読みやすいと思うんだけどどうよ。
0323デフォルトの名無しさんNGNG
Linux/Sambaしてる方、教えて下さい。

SambaのGUIからNTのマシンにファイルをコピーするとき、どの関数がコールされますか?
0324デフォルトの名無しさんNGNG
http://samba.org/doxygen/samba/head/clilist_8c.html
みれ。 smbclinet.cも参照な。
それと、Sambaは鯖ソフトだから、SambaのGUIと
言われても、設定用のSWATくらいしか思い浮かばん。
0325デフォルトの名無しさんNGNG
凄い、解説サイトだ。でも、今一つcli_list_newが何なのか分からない。

smbclinet.cが見つからないけど、libsmbclient.cのこと?

Linux側にはSambaのGUI無いんだ。どうりでGUIソース無いわけだ。
0326デフォルトの名無しさんNGNG
あ、なんか勘違いしてたかもしれない...
Linux端末から、WinNTサーバにファイルをコピーすること出来ますか?
それが出来る場合、コールされる関数が知りたいです。
0327デフォルトの名無しさんNGNG
確かに
http://samba.org/doxygen/samba/head/libsmbclient_8h.html
の方がわかりやすいかもね。 このばあい、多分、
smbc_init, smbc_open/smbc_creat, smbc_write, smbc_close
だろうな。
0328デフォルトの名無しさんNGNG
smbc_open/write/closeで、ネットのマシンにファイル書けるんだー。
有難うございます。>>327

そうかぁ、fileとcopyで全文検索かけてもひっかからないわけだー。
要らないreply.cはひっかかったけど。
0329デフォルトの名無しさんNGNG
>>326
関数とかは知らんが、smbclient(CUIのftp clientみたいなツール)の
ソース追えば実際にファイル転送してるところは分かるんじゃない?
0330デフォルトの名無しさんNGNG
>>326
Sambaにはsmbclientっていう、CUIなftp clientっぽいツールも付属
してるから、それのソース追うのが手っ取り早いかも。
0331デフォルトの名無しさんNGNG
ありゃ、書き込み失敗したと思ったらちゃんと書かれてやんの。
329はちとタイミング外したレスだったので無視してちょ。
0332デフォルトの名無しさんNGNG
smbclient(CUI)のソースがlibsmbclient.cということで、合ってますか?>>329

libsmbclient.cは今見てますが、openとかrenameとか関数名分かりやすいです。
0333デフォルトの名無しさんNGNG
smbc_open/write/closeからさらに、cli_open(clifile.c)/write(clireadwrite.c)をコールしてるね。
0334デフォルトの名無しさんNGNG
cli_open/write等から、
cli_stup_bcc/cli_send_smb/cli_recieve_smbがセットで呼ばれてるけど、
ここでパケット送信&受信?
0335デフォルトの名無しさんNGNG
生のread/writeが出てくるまでクリック続けたら分かると思うが。
0336デフォルトの名無しさんNGNG
出てきたYO!
cli_send_smb→write_socket→write_socket_data→write
という感じ。
fdはファイルディスクリプタだから、ソケットもファイルとして扱われるんだ。
0337デフォルトの名無しさんNGNG
話は戻るけど、Microsoftネットワーク仕様公開してるとこが無いことははっきりした。

Microsoftが非公開だったネットワーク・プロトコルとAPIを公開
http://www.atmarkit.co.jp/fwin2k/insiderseye/20020927unveilapi/unveilapi.html

守秘義務契約に調印だってYO!
プロトコルに守秘ってのも、インターネットでクライアントの種類が無数になった時代に何だかな...
0338デフォルトの名無しさんNGNG
少しずつMSを叩けるネタが減っていくな。悲しいことだが良いことだ。
0339デフォルトの名無しさんNGNG
>>337
クライアントの種類が無数になったって守秘にするプロトコルと関係ないクライアントだろ。
「プロトコルに守秘」と「インターネットでクライアントの種類が無数になった時代」というのは関係ない。
0340デフォルトの名無しさんNGNG
Samba解析age。

このまま、Samba for DOS作っちゃえ。
0341デフォルトの名無しさんNGNG
分厚い本を何冊も読み漁って勉強してると、
同じだけ勉強してたら弁護士にでもなれそうな気がするんですが・・
0342デフォルトの名無しさんNGNG
>>341
それもまた人生。
目指してみては?
0343デフォルトの名無しさんNGNG
UNIX用ソフトのSocketに対するread/writeをDOS用に書き換えたいのですが、
NDISやODIのサンプルコードが見つかりません。
M$もNDISを利用するサンプルコードを出してないようですが、どうなんでしょう?
0344デフォルトの名無しさんNGNG
>>341
楽しくないなら辞めた方がいいだろうねぇ。
0345デフォルトの名無しさんNGNG
>>341弁護士は積み重ねると自分の背の高さより高くなる本の山の内容をすべてそらんじられるほど勉強するそうだけど。友人に目指しているのがいるんだけど、勉強のしすぎで吐いたってさ。
0346デフォルトの名無しさんNGNG
>>345
それもまた人生。
0347デフォルトの名無しさんNGNG
DOSからPacket Driverを使ったサンプルコードとかあるのでしょうか。
0348デフォルトの名無しさんNGNG
どっかにあるはずだけど、netに転がってるかはしらん。
DOS時代にはThe Netが一般的じゃなかったから、
*socketのようにはいかないだろうとは思うけど
0349デフォルトの名無しさんNGNG
proxy経由のSSLを使ったSocket通信について書いてある
お勧めのサイトとかあります?
CONNECTメソッドとかを発行するとこまでは
辿り付いたのですが・・・
0350デフォルトの名無しさんNGNG
PROXYから、CONNECTが帰ってきたら、その時点で
PROXYは無いも同然。

あとはSSL_connectとか発行するだけやん。
0351デフォルトの名無しさんNGNG
どうもです。
そうなんです。SSL_connect()でこけます。
やっぱり、CONNECTメソッドのハンドシェイクが
うまくいってないんでしょうね。
0352レッドバグNGNG
>>347

「FreeBSD ネットワーク管理ガイド」
 ピアソン エデュケーション /刊

 にDOSのネットワークソフトの事も書かれてて.
 フリーのソフトなどもいくつか書かれてた.
 ただし,URLが切れているのもあるけど,フリーの(ソース付き?)プログラムなどは,以前私が,グーグルでサーチしなおしたら,出て来ました.
 参考になるかどうかは分かりませんが.
 
0353デフォルトの名無しさんNGNG
>>352
参考になりますが、せめてDOSフリーソフトのお名前だけでも...
0354レッドバグNGNG
>>353
 すまぬ.
 その本がどっか逝っているので調べられなかった....
 おまけにDLしたはずのDOSプログラム(とアドレス)もどこにあるかわからん.
 申し訳ないけど,書店に行って上記の本を当たってくださいませ.
0355デフォルトの名無しさんNGNG
マイナーな質問ですみませんが、yahooオークションの商品の終了時間をjava
で取得したいのですが、どなたがご存知な方がいらしたら教えてください。
よろしくお願いします。
0356デフォルトの名無しさんNGNG
DOS Trumpetとは、DOSのTCP/IP 見たいなもんですか?
0357デフォルトの名無しさんNGNG
初歩的な質問ですが、IPアドレスはいつ決まるのでしょう。
UNIXでは、自分で設定するしかないと思いますが、
SMBの場合は、ログインのあとに割り振られるのかな。
0358デフォルトの名無しさんNGNG
dhcpはどこへ消えた
0359デフォルトの名無しさんNGNG
チャットサーバ作ろうとしてるんだけど、
1つのIPとポートに接続可能なクライアントの数って
六万コネクト(?)くらいなのでしょうか(65535くらい?)
オンラインゲームとか、かなりの数がサーバに繋がると思うんだけど
どうやって処理してるのだろう
0360デフォルトの名無しさんNGNG
>>359
普通に負荷分散

質問:
Unix C でマルチキャストでパケット配信するにはどうやってグループに
JOIN するんだ?
0361デフォルトの名無しさんNGNG
359っす
えーと、フツーに負荷分散はいいんですが・・・前提かいてませんね。スマソ
グローバルアドレスが1個/ネット自体の負荷はキニシナイという仮定で。
クライアント ← net → PC1 ←→ PC2〜PCn
として、実際の処理はPC2〜nにさせます。
で、振り分けさせるPC1にクライアントがどれくらいコネクト可能か
知りたいな、と。
0362デフォルトの名無しさんNGNG
>>359
コネクションの識別には送信元IP、送信元PORTも使われるのです。
0363デフォルトの名無しさんNGNG
>>361
PC1 の役割がルーターかプロキシか (つまり OSI 参照モデルの何か) による。
0364デフォルトの名無しさんNGNG
>>362
ということは、最大数自体は気にしなくていいとという感じなんですね
ありが�dございまス
0365デフォルトの名無しさんNGNG
359=364っす
>>361
ありゃ。
役割としてはPC1がPC2-nの接続数を覚えてて、てきとーに振り分けて PC2-nと接続
PC2-n は互いに通信して情報やりとり/データ処理
ルータではないとはおもうけど、プロキシと言っていいのだろうか・・・
0366デフォルトの名無しさんNGNG
>>365
だ・か・ら、

PC1は、TCP/IPでクライアントとコネクションを張って(レイヤ7で)
振り分ける必要は必ずしもない。

パケット毎に、送信元のアドレス&ポートをハッシュしてPC2〜PCnに
(レイヤ3または4で)振り分けたって良い。

いずれにせよ、L4スイッチとかL7スイッチ使った方がPC使うより速い
と思うけど。
0367デフォルトの名無しさんNGNG
質問です。全二重のNICとスイッチだけ使ったEthernetのLANで
UDPのパケットが落ちるときというのはどういう時ですか?
コリジョンは起きませんよね?
0368デフォルトの名無しさんNGNG
Linuxとかのデフォルトだと、1つのマシンでオープンできる
ファイルディスクリプタの数は4096個まで。
0369デフォルトの名無しさんNGNG
356っす
>>366
おお、そんな便利な物があったんですか
そーゆースイッチって値段高いのかなぁ・・・
#ふつーのスイッチで付いてる機能なのだろうか
プログラム的にはPC2-nの通信のみでイケそうですねえ

ありがとうございました
0370デフォルトの名無しさんNGNG
たとえば、でかいデータを2つ続けて送ったとき、
最初のが送り終わらないうちに次を送ると、
最初のがなくなっちゃう事がある。
0371デフォルトの名無しさんNGNG
>>368
う、socketもファイルディスクプリタとして消費されてしまうのだろうか
テストプログラムつくらなきゃいかんな(泣)
0372デフォルトの名無しさんNGNG
>>367
UDPは運がよければ相手に届くというだけで、
ノイズが発生したり黒ヤギさんが配達したりとかでも消えるような。
0373デフォルトの名無しさんNGNG
>>371
無謀だな。そんなことすら知らないようなレベルで
10万単位の接続をさばけるのを作れるとは思えない
0374デフォルトの名無しさんNGNG
>>369
負荷分散(サーバロードバランシング)機能のついたL4スイッチなら、
300万円くらいからあるんじゃないか? まあこれ以上は板違い。
0375デフォルトの名無しさんNGNG
369=371っす
>>373
はい。自分でもそう思います。
趣味で作るサーバ&クライアントで、多くても100人前後と目測しています
作ったあとで10万コネクトサーバにプログラムを変更するのは辛いので
得た知識はとてもためになりました。

>>374
なるほど。その値段ならPC1を作る時間+値段とL4スイッチという物の
性能とを考えればいいわけですね。どうもですー
0376デフォルトの名無しさんNGNG
<違ったスレッドへ投稿しちゃった。^^;>

本当はここ。こんにちは。よろしければ教えてください。

現在、VC++のサンプルプログラムのチャット

プログラムをサーバ側とクライアント側のプログラム

を同一マシンで動かそうとしているのですが、

クライアントが接続するときに接続拒否をされているようです。

私のOSはWIN98ですが、やっぱりこれが原因でしょうか?

サーバー機能がないOSだからでしょうか? よろしくお願いします。
0377デフォルトの名無しさんNGNG
市販のTCPやソケットでSMBクライアントを作ろうと思っています。
TCPやソケットはIP必須で、SMBのクライアントはIPが表面に出ないので、無理でしょうかね?
SMBでは、DHCPでIPアドレス自動設定してますが、いつやってるんでしょうか?ログイン時?
0378デフォルトの名無しさんNGNG
>>376
WIN98でも動くはずです。
接続拒否されているという判断は、どうなってるから拒否されてると
思ったんですか?
エラーは出てますか?また、出ていたらどんなエラーですか?
サーバのポート設定とクライアントのソレとは同一ですか?
クライアントの接続IPは正しいですか?
ファイヤーウォール等のソフトは動かしてますか?
0379デフォルトの名無しさんNGNG
>>377
DHCPで設定やってるのなら、PCに名前がついてるのでは
その名前でやりとりすれば、IPは知らなくても繋がるのでは
0380デフォルトの名無しさんNGNG
>> 378 さん

えっと、CSocketクラスのConnect()時です。
GetLastError()を使ってエラーコードを取得しました。
ポートもIPアドレスも同じ設定です。
んー、でも動くのならやはりこちらの設定なのかなあ?
0381デフォルトの名無しさんNGNG
PC名からIP取れるわけですね。>>379

PC名をSMBに追加するときにIPアドレス決まって、
他のサーバに問い合わせるときにサーバのPC名からIP取れる、
という考え方であってますか?
0382デフォルトの名無しさんNGNG
>>380
エラーコードを取得したのなら、どんなエラーかわかるのでは
どんなエラーか当方はわからないので、これ以上はなんとも。
0383デフォルトの名無しさんNGNG
>>381
<たとえば>
わたしは www.2ch.netのIPを知りません。
でも、プラウザにwww.2ch.netと入れてエンター押すと、IP知らなくても
サーバに繋がりデータを読み書きすることができます
</たとえば>
0384デフォルトの名無しさんNGNG
prowser
0385デフォルトの名無しさんNGNG

エラーコードは 10016 で、WSAECONNREFUSEDだと、"接続
試みたがリジェクトされた"と、いうエラーだったはずでしたが、
ヘッダファイルで確認したところそんなコードは定義されておらず、
なぜ、接続拒否だと決め付けたのか自分でも理解できません。で、
もう一度エラーコード確認しようと動かすと、正常に動いてしまいました。
良く分からないまま、OKとしちゃいます。いっしょに考えてくれて
ありがとう。(エラー出てた頃は、インターネットに接続しませんでした。
でも、同一マシンだしなぁ? まあ、いいや、貴重な時間すみませんでした。)
0386デフォルトの名無しさんNGNG
SMB,つーか、NBTは、TCP/IPがきちんと通ってある上の
プロトコルだから、NBTがどうこうしよう、って時には
すでにIPアドレスは設定済みな筈だが、、、

まさか、NetBEUIが通ってたりする話じゃねーだろ。
0387デフォルトの名無しさんNGNG
>>386
NetBEUIは関係ないけど、
NBTクライアントのネットワークの設定にIPアドレスは設定しないよね。
じゃあ、いつ決まるの?ってのが知りたいです。
ログインのときに、コンピュータ名をSMBサーバに登録すんだよね?
0388デフォルトの名無しさんNGNG
だから、君の所はDHCPが通ってるんでしょうが。
SMBが動き出す前に、DHCPがTCP/IPの設定を
ひと揃い終わらせるの。 IPアドレスの決まったあとで、
SMBは動き出して、自分の初期化をするわけ。
0389デフォルトの名無しさんNGNG
>>387
すっきりと疑問を解決したいのであれば、本屋さんや会社の資料室や図書館へ行って
DNSとかTCP/IPとかの本を読んだほうがすっきりするかと。
387さんの疑問はどうやって不定なIPのPC名だけで繋がるかという事でしょうか?
0390デフォルトの名無しさんNGNG
<たとえば>
・田中さんのところへ電話したい
・電話帳をもってくる
・田中さんの苗字と名前で電話番号を轢く
・電話番号GET
・184の後に電話番号をプッシュ
・非通知拒否でギャフン
</たとえば>
0391デフォルトの名無しさんNGNG
>>385
定義されてますが
0392デフォルトの名無しさんNGNG
>>388
それはSMBのサーバ側?クライアント側?

>>389
アンドキュメンテッドMicrosoftネットワークは読んだが。
とりあえず、M$はパケット内容どころか仕様を公開してないが。というかDNSとSMBは別なんだけど。
0393デフォルトの名無しさんNGNG
>>392
なぜSMBという事にこだわってるのだろう
TCP/IPを使った通信の仕組がわかれば疑問も解決するのでは
>>390 さんが解説してますし。
0394デフォルトの名無しさんNGNG
>なぜSMBという事にこだわってるのだろう
SMBのクライアントをこれから自作するから。

>TCP/IPを使った通信の仕組がわかれば疑問も解決するのでは
SMBのパケットがTCP/IPの形式になっただけ。だから解決しない。

0395デフォルトの名無しさんNGNG
>387

SMBクライアントが、たとえば\\host\nameにアクセスしたとき、
サーバーhostのIPアドレスを、どうやって求めるか、って話なら
・グローバルキャストで訊く
・WINS鯖に訊く
・DNS鯖に訊く
・*hosts
という手段がある。というか、gethostbynameを発行するわけだな。
0396デフォルトの名無しさんNGNG
>>394
申し訳ないんですが、394さんの疑問点がよくわからないのです。
IPのかわりにPC名(というものアレだが)を入れるということが疑問なのでしょうか
IPとPC名がどうやってイコールになることが疑問なのでしょうか
0397デフォルトの名無しさんNGNG
両方とも違いまふ>>396

SMBクライアントをDOSに実装するのに、DOS用TCPやSocketが使えるか、を検討してるんです。
TCPとか使うにはIPが必須になるわけで、SMBクライアントのIPはいつ決まるんだ、みたいな。
0398デフォルトの名無しさんNGNG
SAMBAだと、ソケットに対するread/writeだけど、
DOS用ソケットで無料のものなんかないし、
Packetドライバプログラミングかなー、と。
0399デフォルトの名無しさんNGNG
でも、Packetドライバプログラムのサンプルなんかどこにも無いよー。
0400デフォルトの名無しさんNGNG
ならやっぱり、>>388だろ。SMBが動き出す以前に
IPは決めないといけない。DHCPなり、固定IPなり。
0401デフォルトの名無しさんNGNG
もちろん、クライアントの話。サーバは関係ない。
0402デフォルトの名無しさんNGNG
>>388 の内容が正しいとして、どうやってプログラミングするのか見えないよ。

外部スペックは決まってて、
製品をLANに接続してDOSクライアントの設定はある程度可能。
で、製品からLAN上の指定したフォルダにファイルをコピー。
0403デフォルトの名無しさんNGNG
IPを決めるどうこうってソケットプログラミングの範疇を超えるよね
0404デフォルトの名無しさんNGNG
あ、ソケットプログラミングってのは、やっぱ、引数にIPが必須なわけですか。
0405デフォルトの名無しさんNGNG
DHCPクライアントの実装やったら、まあ、
ソケットプログラミングの範疇と言えないこともない。
0406デフォルトの名無しさんNGNG
>DHCPクライアントの実装やったら、まあ、
どうやんだ?
SAMBAのソースん中にある?
0407デフォルトの名無しさんNGNG
つーか、質問者はコテハンにしてくれないかな
0408デフォルトの名無しさんNGNG
SMBのパケット形式とか、TCP/IPのパケット形式とか、仕様が書いてあるもの欲しいな。
0409SMBNGNG
了解>>407
でも、すみませんが今日は適当な時間で消えます。ログは明日読ませて頂きますが。
0410デフォルトの名無しさんNGNG
(;´Д`)y━─┛~~ なんでDHCPの実装がSAMBAの中にあるんだよ、、、
DHCPはDHCP。SAMBAとは無関係。
http://www.google.com/search?q=dhcpclient
0411 NGNG
DOS上で動くSMBクライアントが作りたいってこと?
0412SMBNGNG
その通りです>>411
なんか、わかって貰えてうれしい。
でも、SMBのまんまだと、実装大変なんで、ファイルのコピーに絞ります。
0413 NGNG
DOS上で動くTCP/IPがまず必要なんだよね。WinでいうWinsockみたいな。
んで、それを扱うCかなんかのライブラリとして提供されてないと
一般人には手も足もでないよね。とりあえず、おいらには手も足もでません。
0414SMBNGNG
>>413
PacketドライバはGetしました。Socketは良いのが無いです...
0415 NGNG
Packetドライバって何なの?
データリンク層のパケットが送受信できるの?
0416SMBNGNG
そうです。>>415
機能的には、NDISドライバやODIドライバと同じ。
でも関数が少ない分、Socketに近い気がする(だけかも)。
0417デフォルトの名無しさんNGNG
ttp://www2.palnet.or.jp/~matsuda/soft.html
とftpだけで作れたりして
0418 NGNG
>>416
ってことはTCP/IP自体を自分で実装するってこと?
そんなことできたら神じゃん。
有料でもどこかにあるだろうTCP/IPを買ったほうがいいよ。
0419SMBNGNG
>>417
鯖側をいじることは許されてません。
確かにWin2000/IISなら、フォルダのプロパティで鯖にFTPサーバ起動出来て簡単なんだけどね。
でも、環境はそういう固定じゃないので。
0420デフォルトの名無しさんNGNG
http://www.isc.org/products/DHCP/
0421SMBNGNG
>>418
買えばすむ問題かなー、って不安がある。
どういうことかというと、最初に書いた、
TCPソフトが環境設定ファイルとかでIPとかネットマスクとか要求してそう。
インターネット用TCPソフトはあっても、SMB用TCPソフトはあるのかなー?
0422デフォルトの名無しさんNGNG
>TCP/IPのパケット形式
RFC嫁よ。

それと、
>インターネット用TCPソフト
>SMB用TCPソフト
意味不明すぎ。
0423 NGNG
>>421
そりゃ、TCP/IPで通信する以上、そういう設定は必要じゃないの?
その設定はDHCPで取得することもあるだろうけど。
0424SMBNGNG
RFCハンドブック買うしかないな。

だから、UNIXライクなTCPソフトならIP初期値を要求しそうって心配。>>422
0425 NGNG
TCP/IPで通信する以上必要だと思うけど。
だって、どうやってルーティングするのさ。
0426SMBNGNG
>>423
レスがループしてるよ。
やりたいのは、IPは設定せずにLANに接続出来るクライアント。
クライアントの設定で許されるのは、ユーザ名とワークグループであって、
空きIP調べて使うなんてユーザインターフェースは不可。
0427 NGNG
ん?
ひょっとしてSMBってTCP/IP通信じゃないの?
WinでいうNetBUIE(?)みたいなやつ?
0428SMBNGNG
>>425
ユーザインターフェースが決まってて、どう実装するかを検討してるの。
0429デフォルトの名無しさんNGNG
IP通信の原理上無理だとおもうが。
DHCPを実装しても、IP設定が自動化されるだけ。
0430SMBNGNG
>>427
SAMBAはTCP/IP。もっと言うと、NetBIOS over TCP/IP。
0431 NGNG
TCP/IPである以上、IPの設定は必要なんじゃないの?
0432SMBNGNG
>>429
いや、Windowsのような動作をすれば良いわけ。
Winサーバの設定されてるLANに素直に入れるDOSクライアント。
0433デフォルトの名無しさんNGNG
Windowsのような動作って、何さ?
てきとーにIP振るのか?
0434SMBNGNG
いや、普通にWINSが解決してくれればよいわけ。>>433
0435 NGNG
なんか根本的にネットワークのことわかってないんじゃないの?
おいらもわかってないけど、たぶん、それ以上に。
0436SMBNGNG
>>435
あの、そういう競争する気は無いわけ。
製品が完成すれば。
0437デフォルトの名無しさんNGNG
WINS鯖って名前解決しかしないのとちがうん?
それにWindowsにはWINS鯖を指定するフィールドがあるし。

あー、なんかだんだん分かってきた気がする。
つまり、WINS鯖かなんかに、「foohost : 192.168.0.4」と登録しといて、
そのクライアントは、foohostを探して、192.168.0.4を自分のIPとして
設定する〜とかそういうことか?
0438SMBNGNG
WINSについては知ってるので書いとくけど、
WINSが空きIPを動的にふってくれるようだよ。
0439デフォルトの名無しさんNGNG
http://www2.palnet.or.jp/~matsuda/soft.html
に使えそうなものが色々あるから、検証されてはいかが?
[5]DOS 上でnfs をmountするfnfs
なんて使えそうなモノですのに。
0440デフォルトの名無しさんNGNG
どこでその情報を手に入れたのか気になるな。
WINSがIPを振るなんてはつみみです
0441デフォルトの名無しさんNGNG
WINSって使い物になるのですしょうか。
0442SMBNGNG
有難うございます。>>439
ただ、UNIXベース(nfs、ftp、telnet)のものはやめておいて、SMBベースにしようと思います。
UNIXベースだと、Win鯖側でサービス起動ということが必要になるので。
0443デフォルトの名無しさんNGNG
SMBプロトコルとかが何のことかよくわからない人がいらしたら、とりあえず
http://www.samba.gr.jp/project/translation/using_samba/using_samba/ch01_01.html
へどうぞ
0444デフォルトの名無しさんNGNG
DOSでsocketプログラムが可能ならば、実装はたしかに不可能ではないと思われ。
ソースもあるわけだし。
あとは納期と金額というのは余計なお世話な部類でしょうけど、、、
0445デフォルトの名無しさんNGNG
>>442
わからない奴だなぁ・・・
お前がIPアドレスがどうのって書いてるから、必然的にNetBIOS over TCP/IPになんの。
それを使わないとすると、NetBEUIって、TCP/IPと何の関係もないプロトコル使う意味になるんだよ。
少なくとも、お前の今のレベルじゃ自作は無理。DOSで使える製品探して、無かったらあきらめろ。
0446デフォルトの名無しさんNGNG
NetBIOS over TCP over IPv6 なら、IPの設定いらんぞ(w
0447デフォルトの名無しさんNGNG
わたしなら、ネットワークにちゃんと対応したOSで組むんだけどなあ
DOSで作るよりも安定度や信頼性や手間や時間が(烏賊略)
0448デフォルトの名無しさんNGNG
NetBIOS over TCP over IPv6 on DOSを探せと?!(・<>・)
0449デフォルトの名無しさんNGNG
わたしなら、
LAN <-> 専用ハードウェア <-> RS-232C <-> DOS
にして、専用ハードウェアを外注。
0450デフォルトの名無しさんNGNG
自分で実装しろと言っているのだが(w
0451デフォルトの名無しさんNGNG
IPv6を実装か、、、すべての機器&ソフトをv6対応に総取替!
0452デフォルトの名無しさんNGNG
サーバ側を変更できないのなら、サーバとやりとりするサーバ設置して、
そのサーバにクライアントを接続させればどんなプロトコルだろうと文句は
#言われるのだろうか
0453デフォルトの名無しさんNGNG
>>449
DOSで使えるLANボード/カードがいつまで手に入るかわからんし、
アリといえば蟻鴨しれヌ
0454デフォルトの名無しさんNGNG
久々に笑えるネタでした。
0455デフォルトの名無しさんNGNG
SMB氏は、まずマスタリングTCP/IP入門編から読まれることをお勧めします。
0456デフォルトの名無しさんNGNG
>>454
こないだ「マルチスレッドプログラミング相談室」にも楽しい奴いたよ(藁
0457デフォルトの名無しさんNGNG
リストをロックしないで、リストの中のリファレンスカウントオブジェクトを
増減さしてたら、って香具師だな
0458デフォルトの名無しさんNGNG
ふー。やっとわかった。
SMB氏はsambaクライアントを作りたいのではなく
Windowsネットワークにログインしたいんだな。
0459デフォルトの名無しさんNGNG
その手段としてSMBでヤろうとしているだけでは。
やることはファイルの入出力だろうけど。
そして同時書き込みされてファイルがあぼーん
0460デフォルトの名無しさんNGNG
で、sambaってことはTCP/IPで、TCP/IPってことはIPアドレスが必要。
でも設定はしたくない。で、DHCPじゃだめなの?
DHCPじゃ、いや。WINSがイイ。WINSが空きのIPアドレスを振ってくれる。
あれっ!DHCPでいいじゃん。
ってこと?
0461デフォルトの名無しさんNGNG
過程はともかく、
・DOSで
・SMBを使って
つながりゃ目的達成というように詠んでるんだけどニャー
0462デフォルトの名無しさんNGNG
http://www.samba.gr.jp/project/translation/using_samba/using_samba/ch01_04.html
をー読むと〜
MS製品のサーバに〜SMBで接続するならMSが正式に出したドライバ経由以外には〜
不可能なわけで〜〜
MSがDOS用SMBドライバを出していないかぎり〜〜
接続は不可能〜〜ラララー♪
上の文章を読んでも自作ドライバ等で接続するのなら〜
何がおきてもヘンじゃないということ〜〜
わたしが上司なら止めます。部下なら辞めます。
0463デフォルトの名無しさんNGNG
これは
http://www.tagiya.co.jp/~toshi/lanman/v486e.htm#net_start
0464デフォルトの名無しさんNGNG
サーバにNetBEUIが入ってたら >>463 でよさげだねー
>>419 の状態だと、入ってなかったらアウト!って感じなようだけど。
0465デフォルトの名無しさんNGNG
VBでWinSockをつかってサーバで監視プログラムをつくります。
おすすめの本をおしえてください。
0466デフォルトの名無しさんNGNG
何を監視するのでしょうか。
0467ゆうき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ゆうきNGNG
間違えました。首吊って死にます。
0470>>466NGNG
クライアントから信号が送られてきます。
それを監視します。
よろしくお願いします。
0471デフォルトの名無しさんNGNG
>>470
・VBでサーバを作り、クライアントはそのサーバに接続するのでしょうか
・パケットを盗み見して監視するのでしょうか
前者なら(うちはVB6ですが)ちゃんとマニュアルに出てました。
後者ならその手のソフトのソースがころがってたらソレを見てVBにするとか。
0472ゆうきNGNG
>>470
VB初心者スレに行ってください
0473>>471NGNG
ありがとうございます!
前者です。
そもそも、WinSockを使うのが定番なのでしょうか?
そのあたりもまだわかりません。
マニュアルというのは、なんのマニュアルでしょうか?
VBの?
よろしくお願いします。
0474ゆうきNGNG
(・ロ・)ホ,('ロ')ホ--ッッ!!!… VB初心者質問スレ Part17
http://pc3.2ch.net/test/read.cgi/tech/1036154952/
0475デフォルトの名無しさんNGNG
定番つーか、ラクをしたければ Winsock "コントロール"を使うかも。
規模にもよるけど。
マニュアルというか、MSDNライブラリですねぇ
0476>>475NGNG
ありがとうございます!
MSDNライブラリですね。
あとは調べてみるとhttp://www.emurasoft.com/winsock2.htm
この本がよさそうですね。VCみたいですが。
0477デフォルトの名無しさんNGNG
たしかに本は持っておいたほうがいいかもしれませんが、、、
VBで作るなら、この本はちょっと違うような。
ネットでVBのネットのプログラムのソース見るくらいで十分事足りるかと。
買うならネットワーク系の本をどうぞ。
0478>>477NGNG
ありがとうございます!
ネットワークの本というのは、やはりTCP/IP関係ですかね?
そのあたりをイチから勉強する時間はなさそうですが、
概念は大切だと思うので、本を勝ってみます!
0479デフォルトの名無しさんNGNG
TCP/IP関係は、わからなくても一冊二冊もっておくといいかもしれません
気の向いたときに読むと、だんだんわかってきますし。
VBでWinsockコントロール使うだけならさほどむずかしくはないと思いますが、
しっかりとあいまいではない情報/知識をもっておかないと、何かと不便です。たぶん。
0480デフォルトの名無しさんNGNG
>SMB
あんたの言うDOSって、windows付属のDOS窓上とかじゃないよね?
だったらwinsockとか調べるの完全に無駄だと思うけど。
0481デフォルトの名無しさんNGNG
WindowsのDOS窓でやるんだったらこんなに長いネタ、、、じゃない、話題に
ならないと思うデスが。
0482デフォルトの名無しさんNGNG
昔DOSで簡易FTPサーバとか作ったことあるけど
マルチクライアントとかじゃなければ簡単だった印象があるよ。
なんとかっていうモジュール組みこんで使ってた。
0483デフォルトの名無しさんNGNG
ちなみにWindowsでIPアドレスを設定しなかった場合は
DHCPによる決定を試みた後、Windowsが適当にIPを決定する。
この決定方法はどこかに資料があった気がするが(RFC投げてたかも知れん)
0484デフォルトの名無しさんNGNG
>>483
このへんか?
http://support.microsoft.com/default.aspx?scid=KB;en-us;q220874

169.254.0.0/16のプライベートアドレスから、今のセグメントで他に
使ってるやつがいなさそうなアドレスをてきとーに選ぶらしい。
0485SMBNGNG
Sambaの本良さげ。とりあえず買おう。
Lan Managerはだめです。
というより、Lan Managerで動作してるものを置き換えるものを作成します。
MSが売る気なくてライセンスしてくれないんで。
0486SMBNGNG
で、今興味があるのは、Sambaのソース(ソケットにread/write)と
パケットドライバ(send/recieve)の繋ぎのプログラムはどうなるかです。
パケットドライバにアクセスしてるコードを手に入れましたが、
sendをwhileでリトライしているだけ、みたいです。
つまり、sendの成功失敗はドライバが教えてくれるので、
リトライするだけでTCPみたく通信を保証できるかな、と。
で、送る内容はSambaのコードが作ったパケットだけで良いかな。
0487SMBNGNG
みつけたコードです。intrって何だ?

int 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デフォルトの名無しさんNGNG
MSのライセンスなしでWindowsネットワークに繋げるソフトを作って販売するわけだ。
0489デフォルトの名無しさんNGNG
>>486
書き方は茶化してるような感じだけど、 >>462 は的を射てると思われ。
冷静に現状を把握しないと、会社の信用すら揺るがしかねない
他に手がないわけでもないのに。
>intrって何だ?
って、intr( pkt_interrupt, ®s );
にinterruptって書いてるやん、、、
0490デフォルトの名無しさんNGNG
情報ソースはわすれたけど、SambaのバージョンとNT系のバージョンによって
NT側のレジストリいじったりしなくちゃいけなかったよねぇ
Samba for DOSはかなりヘビーな代物になりそうですね。
ファイル名の8.3問題も浮上?
0491デフォルトの名無しさんNGNG
>>488
SambaもMSのライセンスを受けてないし
Sambaをパッケージに含めて販売してる会社もあるわけだが
>>490
パスワードの暗号化問題?
0492デフォルトの名無しさんNGNG
>>491
http://www.samba.gr.jp/project/translation/using_samba/using_samba/index.html
を読んで、どんな歴史なのか見るといいかも
SMBに入るのが良い悪いじゃなく、
MSが独自仕様をほどこして仕様も公開していないSMBに入れないというのが難点かと。
0493デフォルトの名無しさんNGNG
>SMBに入れない
入れるようになってるんでないの?
0494デフォルトの名無しさんNGNG
>>493
はい。
ふつーにUNIXなどでSambaサーバたてて、
ふつーにWindowsで共有したりして、
ふつーにMACなどで共有したりして
やれば、問題ないかと。
0495デフォルトの名無しさんNGNG
>書き方は茶化してるような感じだけど、 >>462 は的を射てると思われ。
>冷静に現状を把握しないと、会社の信用すら揺るがしかねない
>他に手がないわけでもないのに。

だから、こういう書き方やめてやれよ。
Lanmanのライセンスに問題があるから、別もの作ってると書いてあるじゃないか。
邪魔するレスが多いな。
0496デフォルトの名無しさんNGNG
単に全部読んでない人じゃないの?
いちいち邪魔するレスに気をたてても。
0497デフォルトの名無しさんNGNG
ま、できるものならやってみろよ
0498デフォルトの名無しさんNGNG
497=粘着
0499デフォルトの名無しさんNGNG
俺には無理だけどな。
0500SMBNGNG
パケットドライバ上に実装した、こういうの見つけたんだけど。

static 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コンパイル可能???(いや、全機能可能とは言わんが)
0501SMBNGNG
int sock_read( sock_type *s, byte *dp, int len )
int sock_write( sock_type *s, byte *dp, int len )

やっぱ、こっちかな?
0502デフォルトの名無しさんNGNG
頼むから、SambaとTCP/IPの違いをわかってください。
上記コマンドでやるならば、Sambaプロトコルを自作しなければいけません
確かに煽ってるような発言もあるかもしれませんが、
有益な情報まですべて無視してるように思いうけます。
0503デフォルトの名無しさんNGNG
別のものを作ってると書いてあるんだから、Sambaじゃないんじゃないの?
プロトコルは何を使う予定なのでしょうか>SMBさん
0504SMBNGNG
何を言いたいのだろう?>>502
Sambaプロトコルを自作するんじゃなくてSambaのソースの一部をDOS上でコンパイルするんだが。
0505SMBNGNG
NetBIOS over TCP/IP。>>503
ま、Sambaのコードの通り。
0506SMBNGNG
説明しときますが、502さんの頭の中では、TCP/IPはTCP/IP、SambaはSambaなんだろうけど、
一応SambaはTCP/IP経由でSMBにログインしまふ。
0507デフォルトの名無しさんNGNG
>>500-501には唐突に関数プロトタイプが出てくるだけで
そんな説明一言もありません。それで分かれと言うほうが無理
お前の頭の中ではすべての解説がそろってるんだろうけど
0508SMBNGNG
>>507
Sambaのレスは >>313 以降から続いてるので、そこから読めばわかります。
0509デフォルトの名無しさんNGNG
>>SMB氏
例えばですけど、そのDOS上でGETするだけのHTTPクライアントなら作れますか?
0510デフォルトの名無しさんNGNG
別なものを作ってるとかいてあったから、Sambaじゃないのかとおもいました。
0511デフォルトの名無しさんNGNG
>504-506

>でも、sambaってNetBEUIだよね。パケットは同じ?
とか
>SMBの場合は、ログインのあとに(IPが)割り振られるのかな。
とか
>TCPとか使うにはIPが必須になるわけで、SMBクライアントのIPはいつ決まるんだ、みたいな。
とか
逝ってた人の発言とは思えませんね。笑い。
0512デフォルトの名無しさんNGNG
NetBIOS over TCP/IP
http://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デフォルトの名無しさんNGNG
ん?

SMB/CIFS <--ここを作るの?
-------
NetBIOS  <--ここはどうするの?
-------
TCP/IP   <--ここはどうするの?

0514デフォルトの名無しさんNGNG
NetBIOSとSMB/CIFSをsambaのソースからパクるってことかな?
0515デフォルトの名無しさんNGNG
TCP/IPはDOSのパケットドライバを探してきたから
それを使うと。
で、何が困るの?
0516デフォルトの名無しさんNGNG
誰が困ってるの?
0517デフォルトの名無しさんNGNG
僕がネットワーク管理者なら、SMB4DOSを繋がれるのは怖いかな。
0518SMBNGNG
HTTPは自分は要りません。

で、libsmbclient.cのsmbc_open/smbc_creat, smbc_write, smbc_closeを移植しようかな、と。
その関数の前後に、nt_logon/logoffすれば完成?
0519デフォルトの名無しさんNGNG
完成ですね。おめでとうございます。
0520デフォルトの名無しさんNGNG
>>518
要る要らないの問題じゃない。

お前の言うパケットドライバで簡易HTTPクライアントくらい
ソケットの場合と同じように作れなければ、sambaの移植は無理。
そのくらい文章から読み取れよ。

テストもせずにパケットドライバでソケットをエミュレートする
コードを書けるんなら止めはしないが。
0521デフォルトの名無しさんNGNG
今までのレスから見てそんな技量があるようには
とても思えないが漏れが困るわけでもないしどうでもいいや
0522デフォルトの名無しさんNGNG
いや、本当はものすごい技量を持っているが日本語が不得手なだけかもしれないよ。
0523デフォルトの名無しさんNGNG
社内用のソフトで、ほかの客に渡すわけではないんじゃないの?
つながりゃいいみたいだし。
今までにあがった問題点も、さほど気にとめてないようだし。
0524デフォルトの名無しさんNGNG
まず、ネットワークの階層構造を理解してるかどうかが激しく謎だ。
0525デフォルトの名無しさんNGNG
あー!
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 )

これってsambaのソースかー
0526SMBNGNG
それは、wattcpのソース。
0527デフォルトの名無しさんNGNG
これが“SMBを使って”という前提じゃなければ支持者も沢山いたんでしょうね。
合掌。
0528デフォルトの名無しさんNGNG
[SERVERS(NT)]-(SMB)-[NewServer(NT)]-(OrginalProtokol)-[DOS]
にすると、今のサーバはSMBで繋がるし、SMBクライアントも移植しなくてすむし。
スペルが間違ってるのは愛嬌だ。
0529デフォルトの名無しさんNGNG
>>526
あれ?
じゃあ、前のであってたか。
そっかー
wattcpってのがあればDOSでもTCP/IP通信ができるんだね。
最初のころパケットドライバってのはデータリンク層の通信を
するって書いてあったからTCP/IPはいったい誰がやるんだー
って、思ってたけどすべて謎は解けた。
0530デフォルトの名無しさんNGNG
LANManagerってもう配布しなくなったんか。
NT3.5の頃はオマケでCD付けてたり、Niftyからダウンロードできたり
したんだけどねぇ。

しかしパケットドライバベースでいきなりSMBか。若いってすばらしい。
0531デフォルトの名無しさんNGNG
Linux版のsmbclientは、スタティックリンクすると2MBくらいになるけど…
もちろんTCP/IPは含んでないけど…
0532SMBNGNG
wattcp経由にしようかと。>>530

nt_login/off、open/write/closeだけにしようかと。>>531
ところで、libsmbclient.cのsmbc_open(てのが、Winにファイル書き込むんだよね?)を
呼んでる小さなツールがあるそうですが、そのmain関数があるソースはどれになるのでしょう?
Linuxの環境作らないといけないけど、今週は無理そう...
0533SMBNGNG
あと、SambaのクライアントのIPアドレスはDHCPかWINSから貰うような動作も可能なんだよね?
その部分のソースはどこになるんだろう?
0534SMBNGNG
初歩的な質問ですが、Sambaのpstring、fstringってのは何だ?
WinやDOSでは見ない型だけど何に置き換えれば良いんだ?
0535デフォルトの名無しさんNGNG
これ?
http://www02.so-net.ne.jp/~suzuden/inet/lan2.htm
0536デフォルトの名無しさんNGNG
廉価気宇材
0537SMBNGNG
>>535
DHCPC便利そうだね。どう組み込むかはまだ分かってないけど。
0538デフォルトの名無しさんNGNG
これか?
http://hp.vector.co.jp/authors/VA007890/dos/sd/tcpip.html#TcpipEnv
0539SMBNGNG
ネットワークへのログインは、
namequery.cの
BOOL name_register_wins(const char *name, int name_type)
で、良いのでしょうか?詳しい方教えて頂きたいです。

0540デフォルトの名無しさんNGNG
詳しい人なんてそうそういないと思うがどうか。
0541デフォルトの名無しさんNGNG
>>539
その前にこれまでの経過をまとめろや。
0542SMBNGNG
目標 DOSをLanに接続するだけで、Win鯖にファイルコピー。
   どうも、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
君の行く道は果てしなく遠い
なのに何故歯を食いしばり
君は逝くのかそんなにしてまで
0544SMBNGNG
mainというかトップの呼び出しはclient.cを見れば、よく分かるみたい。
ホスト一覧とかは、これだけ。
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);
}
0545SMBNGNG
ファイルのコピーのトップはこれみたい。
static 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デフォルトの名無しさんNGNG
コンパイラが16bitでSモデルというオチはアリマセンカ
0547デフォルトの名無しさんNGNG
wattcpはマスターしました。
0548デフォルトの名無しさんNGNG
そもそも君は、DOSベースのファイルシステムドライバを書けるのかね?
そもそも君は、Cでデバドラを書いたことがあるのかね?

生暖かい目で見守っております。
0549デフォルトの名無しさんNGNG
タロットカードの 0 が目に浮かぶのは僕だけでしょうか
悪いカードではないですが。
0550デフォルトの名無しさんNGNG
デバドラと何の関係があるんですか?
0551デフォルトの名無しさんNGNG
>SambaのクライアントのIPアドレスはDHCPかWINSから貰うような動作も可能なんだよね?

だから、WINSかIPはもらえないって。
0552デフォルトの名無しさんNGNG
Netscape7.0ってDDEのサービス名変わったんだね。
昔仕事で作ったアプリが動かんもの。
で、サービス名知ってたら教えてください。
0553デフォルトの名無しさんNGNG
DDE
http://www.microsoft.com/japan/msdn/net/vbtransitionguide/chapter5/chapter5_7.asp
廃止方向なのかな、だれかしりません?
0554デフォルトの名無しさんNGNG
DDEスパイで見てもNetscape6が見える、、、
0555デフォルトの名無しさんNGNG
"Netscape6" ですか、情報どうもです。>554
でも、DdeConnectで落ちるし・・・うーむ。
所で、なにやったらDDEスパイに乗りました?
0556SMBNGNG
>だから、WINSかIPはもらえないって。
了解。WINSからIPは貰えないのね。
IP無しで、WATTCPのSOCKET動作するかな...
0557553-554NGNG
DDE Spyは使い方よくしらないので、モニタと追跡全部出しました。
0558デフォルトの名無しさんNGNG
>>556
キタ━━━( ´∀`)・ω・) ゜Д゜)・∀・) ̄ー ̄)´_ゝ`)∀ ̄)▽’)´Д`)━━━!!
0559デフォルトの名無しさんNGNG
TCP/IPやDNSなどの本を見て知識を得てください。
そんな状態で作ったプログラムなんて、誰も使いたくないだろうし。
0560557NGNG
出力>画面 にチェックしてないと出ないかもしれません
0561デフォルトの名無しさんNGNG
553 どうもです。
DDE廃止といわれても困りますよ。> MS
DDEはサービス名だけの差で全アプリ互換性のある制御ができるのに。
(本当は完全にはできないんだけどぉ)
ActiveXコンポーネントでやれってか!> MS
Netscape7のバイナリ見ると、"WW_GetWindowInfo"とか "WWW_OpenURL"
とかのお約束トピックが見つかります。
なので、サポートしてないってことはさそう。
0562デフォルトの名無しさんNGNG
DDEなんか既につかわねーだろ。
0563デフォルトの名無しさんNGNG
.netは他のOSにも進出したいから、DDEは邪魔なんでしょう。
今あるソフトはDDEちゃんと使えるとおもうけれど、これから出る
ソフトは他のに移行するのかもネ
0564デフォルトの名無しさんNGNG
>>559
今までのアドバイスを全然聞いてないのが丸分かりだよね
どうせ話を聞く気がないんだったら質問するだけ無駄なんだから
ここでゴミを垂れ流すのやめてほしい。他の人の邪魔。
0565デフォルトの名無しさんNGNG
このスレにふさわしく書くなら、DDEのかわりにTCP/IPで(以下略)
0566デフォルトの名無しさんNGNG
>>564
>>559に対してですか?>>556に対してですか?
0567デフォルトの名無しさんNGNG
> DDEなんか既につかわねーだろ。
無知の怖さ。> 562
エクスプローラからドキュメント開く時とかに使ってんの知らないんだね。
0568デフォルトの名無しさんNGNG
>>566
何が疑問かわからないが
今までの〜が559に
それ以外の行が556に対してじゃないの?
0569デフォルトの名無しさんNGNG
今まで気にしてなかったけどパケットキャプチャしてみると
SMBって入ってるパケットが飛び交ってるね。
0570デフォルトの名無しさんNGNG
>>567
アフォか ? 今ごろそんなことを自慢げに書く奴がいるとは...。

俺の周りでも、DDE は使わない方向。
0571デフォルトの名無しさんNGNG
DDEってなんでつか?
0572デフォルトの名無しさんNGNG
あれ?DDEってネットワークプログラミングなの?
0573デフォルトの名無しさんNGNG
もとはNetscapeのプログラムがどうこうだから、
ネットワーク(でつかうソフトの)プログラミングと・・・いうことでは・・・
はい。苦しい解釈でした。
0574デフォルトの名無しさんNGNG
もうSMBは放置でいいんじゃないですか?
真面目にやる気無さそうだし。
マジレスです。
0575デフォルトの名無しさんNGNG
放置か否かは各個判断でしょうけれど、
成功したか否かの結果報告はSMBの義務じゃないかなあ
真面目に答えていた人も多々いるわけだし
0576デフォルトの名無しさんNGNG
ネットワーク対応スーマリでも作るのか?
0577SMBNGNG
報告も何も作業中。
こういうのそのまま使って大丈夫かな。

#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も対象か?
0578SMBNGNG
struct in_addrの宣言が無いことない?
そんなわけないけど...
0579SMBNGNG
このプロトタイプ宣言何だろう?

proto.h 1173: void make_nmb_name __P((struct nmb_name *n, const char *name, int type));
0580デフォルトの名無しさんNGNG
俺、>>528の案がよいと思うのだけど。
0581デフォルトの名無しさんNGNG
>>580
大丈夫。SMBの案がいいと思ってる香具師はいない。
0582デフォルトの名無しさんNGNG
>>577-579
お前の日記など誰も読みたくないのでよそでやれ
0583デフォルトの名無しさんNGNG
ネットワークプログラミングじゃなくて、C言語質問所みたいだな、、、
0584SMBNGNG
コードサイズが64k超えてしまったのでDOSで組むのは無理みたいです。
0585デフォルトの名無しさんNGNG
huge は?
0586デフォルトの名無しさんNGNG
ラージモデル(以下略

0587デフォルトの名無しさんNGNG
>>546で出した予想、的中したか・・・
0588SMBNGNG
584は偽者です。
ラージモデルは知ってます、ありがとうございます。>>585-586

ミディアムで、farポインタ、nearポインタ使い分けるのは苦手だけど。
0589SMBNGNG
TCPではコネクション確立時にシステムが自動的にアドレス付けてくれるので、
コード上に出ないことがわかりました。
0590デフォルトの名無しさんNGNG
ここはSMBの経過報告スレですか?
ネットワークプログラミング相談室どこにあるんでしょう?
0591デフォルトの名無しさんNGNG
>>589
まじかよ?
0592デフォルトの名無しさんNGNG
>>588
>584は偽者です。
ワラタ
0593デフォルトの名無しさんNGNG
>>589
ポート番号とアドレスとごっちゃになってねえ?
0594デフォルトの名無しさんNGNG
FORTRAN を使ってないからだよ
0595デフォルトの名無しさんNGNG
>>594
放置だね。かわいそうだね。
0596594NGNG
反応してくれなくて良かったのに・・・
0597デフォルトの名無しさんNGNG
SMB は、やっぱりネタだったのか?
0598デフォルトの名無しさんNGNG
何故?
0599SMBNGNG
DOSでWinsockをつかうにはどうしたらいいのだろう?
sambaのソースはおかしいみたいでそのままではコンパイルできないところがたくさんあります。

>>597
ネタじゃないです。
0600デフォルトの名無しさんNGNG
>>599
…これはどうみてもネタだろう。
0601デフォルトの名無しさんNGNG
DOSで、Winが提供している、socketを、使うとすれば、
Winを、入れる、他に、無いじゃないですか?
0602デフォルトの名無しさんNGNG
sambaのソースがおかしいなんて、失礼な事を書かないで下さい。
ちゃんとした環境でちゃんとしたコンパイラでちゃんとした動作するのに。
バグみつけたとかならまだしも!!
0603デフォルトの名無しさんNGNG
>>599
あんたの言ってる事は
 「MAC で Winsock をつかうにはどうしたらいいのだろう?」
と同じぐらい変ですな
0604デフォルトの名無しさんNGNG
矢張りVirualPCだろうか
0605デフォルトの名無しさんNGNG
>SMB
探してきてやったぞ。
DOS用TCP/IPプロトコルスタック。Winsockではないが。
http://www.pc88.gr.jp/~teen/

探せば結構あるもんだな。

0606デフォルトの名無しさんNGNG
http://24honlinecasino.fc2web.com/

0607デフォルトの名無しさんNGNG
X11Windowにおける、ネットワークゲームなのですが。
TCP/IP通信を非同期で行うルーチンのループと、Xeventを取得するループがどうも上手くいきません。
2つをいい感じにかみ合わせるにはどうしたらいいのでしょうか?
0608デフォルトの名無しさんNGNG
Javaで書く。
0609607NGNG
>>608
学校の課題なんでそういうわけにもいきません…(;´Д`)
0610デフォルトの名無しさんNGNG
スレッドを2つ作る。
0611デフォルトの名無しさんNGNG
TCP/IPのselectと
Xeventの取得を、
1回ずつ交互に行うようにすれば?
0612607NGNG
>>611
適当なflgを立てて、0ならXevent、1なら送信or受信待ち、という形でしょうか?
やってみます。
0613デフォルトの名無しさんNGNG
TCP/IPの通信はちゃんと非同期にやってるのか?
(selectが即座に帰ってくるようにしているか?)
0614デフォルトの名無しさんNGNG
>>610
すみません…マルチスレッドプログラミングはよくわからないのです(。´Д⊂)゚
0615607NGNG
>>613
while(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
>>615
だいたいよいけど…まずtmは毎回初期化したほうがよい。
で、そのループの中に(whileの本体の一番最後とかに)
XPeekEventとか入れれば良いんじゃないの?
0617607NGNG
>>616
わかりました。どうもありがとうございます。
XPeekEventの使い方から調べてきます。
0618デフォルトの名無しさんNGNG
Xってselectに入れるためのfdを取り出せなかったっけ?
0619618NGNG
ちょっと調べてみたが
ConnectionNumber(Display*)
がそうらしい。(「接続数を返す」は誤りだそうだ)

これの戻り値のfdをselectの仲間に加えてやって、
if (FD_ISSET(x11_display_fd)) {
 XPeekEvent();
}
とかやればいいんじゃないかな。

>>610 安直にスレッド立てるな馬鹿野郎(5,7,5)
0620デフォルトの名無しさんNGNG
>>619
季語がはいっとらん!
0621デフォルトの名無しさんNGNG
安直に駄スレ立てるな冬厨め!
 でどう?
0622デフォルトの名無しさんNGNG
駄スレ立て春夏秋冬逝ってよし
0623デフォルトの名無しさんNGNG
無駄スレは、のがいいか
0624デフォルトの名無しさんNGNG
>>599
そんなレスを書いててもネタじゃないというのなら,
まじめに1から勉強し直した方がいいと思われる。
0625デフォルトの名無しさんNGNG
質問させていただきます。
winsock, ブロッキングモードでプログラムを組んでいます。

いわゆるサーバープログラムを組んでいるのですが、send命令というのは
ブロッキングモードでも即座に制御が返ってくるものなのでしょうか。
それともsend専門のスレッドを作り、メインではメモリーに送りたいものを保存。
sendスレッドが順次送りだすとすべきなのでしょうか

昔1回のsendで大量のデータを送ろうとしたらしばらく止まったことがあります。
これは単純に、送信バッファより多くのデータを送ろうとしたから、仕方なく止まったのでしょうか?
それともSOCKET_ERRORを返すからには通信しおわるまで待ってるのでしょうか

0626デフォルトの名無しさんNGNG
何回も見た気がするが。

・送信バッファに空きがあるとき
ブロックしない。一度に全部送れるとは限らない。
・送信バッファに空きがないとき
必ずブロックする。戻るのは、空きができてからか、エラーになったとき。
0627デフォルトの名無しさんNGNG
ブロッキングモードのsendの動作は
"送信バッファに1byte以上の空きができるまで待つ"+"送信バッファにデータを置く"
だね。ノンブロッキングなら待たない。

メインメモリに一旦バッファするという方法は、
ソケット自身も送信バッファを持ってるんだから、一見無駄に思える。
でもソケットのバッファサイズを変更できないシステムもあるだろうし、
仕方ないのかもしれない。あ、winsockか。
0628デフォルトの名無しさんNGNG
丁寧なアドバイスありがとうございます。
過去スレめくって検索かけたら、関係のないのまで沢山ひっかかって(;´Д⊂)すいません

バッファの空き == 0
バッファが1Byte以上空くまで待つ

バッファの空き < 送りたいデータ量
空きの分だけ中途半端にデータを送信バッファに保存

バッファの空き > 送りたいデータ
送りたいデータを送信バッファに保存(memcpyと同等の速度?)

つまり送信バッファに十分な空きがあるのなら、ちゃんとさらりとsendが終了する
という解釈でよろしいでしょうか。
逆に言えば、中途半端な量送られるなら送信バッファがパンパンだと。
バッファの大きさ変えられるようですね。デフォルト値は64KBくらいはあるかなぁ…
0629607NGNG
>>619
滅茶苦茶亀レスですが、どうもありがとうございます。
結局今まで悩んでますた…
本気でプログラマー向いてないな(。´Д⊂)゚
0630デフォルトの名無しさんNGNG
>>628
setsockopt()で変えられる奴はデフォルト8KBくらいだと思ったけど。
MAXもWin32だと64KBくらいじゃなかったっけ?
とりあえずgetsockopt()して調べてみ。
0631デフォルトの名無しさんNGNG
人はプログラマーに生まれるのではない。プログラマーになるのだ。
0632619NGNG
>>629
いや、あれは仕方ない。かなりX11に依存した話だし、
もしかしたらスレッド立てたほうが結果的に楽かもしれない。

selectの使い方としてはわりかし知られたパターンなので
覚えておくと後々役に立つとは思う。
0633607NGNG
>>631-632
わかりました。これからも精進します。
あちがとうございます。
0634デフォルトの名無しさんNGNG
LANケーブルを引っこ抜くと、クローズしたというメッセージが送られてきません
その時sendをブロッキングモードで使用していると、どんどん送信バッファにデータがたまって
そのうち「空きがないから空くまで待とう」となってsendの部分で止まってしまうのでしょうか
0635デフォルトの名無しさんNGNG
634さんの環境でプログラムを作ってみて、どんな動作をするのか試してみては。
止まるよ/止まらないよ、と答えるのはできるのかもしれませんが、
ちがったじゃん、と言われても責任もてませんし・・・
0636634NGNG
それもそうですね。PC一台しかないので友達に手伝ってもらうっす
0637デフォルトの名無しさんNGNG
>>636
チェックだけなら複数のPCである必要はないと思うんですけど?
0638デフォルトの名無しさんNGNG
あ、LANケーブルか・・・失礼。637は取り消し(汗)
0639607NGNG
本当にたびたびスミマセン。
スレ違い覚悟でこれだけ聞かせてください…
if (FD_ISSET(ConnectionNumber(d), &mask)) {
XNextEvent(d, &event) ;
switch(event.type) {
       /* 処理 */

Xイベント取得はselectにこうやってif文書いてあげればいいんでしょうか…
今日一日いろいろ書いてみましたが、Xwindowが立ち上がってくれません…
0640デフォルトの名無しさんNGNG
>>639
「X11のイベントキューには入ってるけどsocketのバッファは空」
という状態もあるので不完全。

if (XEventsQueued(d,QueuedAfterReading) || FD_ISSET(ConnectionNumber(d),&mask))

にすればいけるかな。
0641607NGNG
>>640
できました…ありがとうございました(何回目だよ
書き込みすぎ…俺…(;´Д`)
0642デフォルトの名無しさんNGNG
そう言えばXプログラミングスレってないみたいだね。
まー誰も今更XLibからやるやつはいないだろうし。
宿題スレに投げても誰も答え無さそうだし。
次に質問があるならC言語スレぐらいが適当か?よく分からんけど。
0643デフォルトの名無しさんNGNG
yahooオークションの商品の終了時間をjava
で取得したいのですが、どなたがご存知な方がいらしたら教えてください。
よろしくお願いします。
0644デフォルトの名無しさんNGNG
>>355
知らない。
0645デフォルトの名無しさんNGNG
>>643
クライアントソケット作成してyahooの該当サーバに接続して、
yahooオークションの該当URLをHTTPリクエストして、
戻ってきたHTMLを解析する。簡単。
これ以上は自分で調べろよ。
0646デフォルトの名無しさんNGNG
>>645
直接みたほうが簡単そうだね
0647デフォルトの名無しさんNGNG
ブロッキングモードのsendは、タイムアウトしないのでしょうか
永久ブロッキングは困るのですが
0648デフォルトの名無しさんNGNG
select中に、そのソケットが別スレッドでclosesocketされた場合はどうなるのでしょう
というかそんなことして良いのでしょうか?
0649デフォルトの名無しさんNGNG
>>647
じゃあノンブロックにすりゃあいいじゃん。

>>648
select()が-1(SOCKET_ERROR)で返るはず。普通やらないが、
強制終了みたいな場合やらざるを得ない場合もあるかもね。
0650デフォルトの名無しさんNGNG
Winsock 1.1では待機中のソケットをクローズした場合
何が起こるか分からないことになってる
0651デフォルトの名無しさんNGNG
>650
1.1にはselect無かったような気がするけど
0652デフォルトの名無しさんNGNG
>>643

int 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
>>651
あったよ
適当なことほざくな
なかったのはWSAEventSelect
0654デフォルトの名無しさんNGNG
>>650
(古い)Winsockってこういう非健全性が多いね。
ノンブロッキングのタイムアウト時にsocketのデータが失われるかも知れない、
ってのもあったな…
0655デフォルトの名無しさんNGNG
やっぱりLANケーブル抜けたりと終了メッセージがこない時の切断がネックですね

selectで書き込みフラグ見ている場合って、
sendバッファが満杯でない限り「書き込みOK」が帰ってきてしまうのでしょうか。
「お前最近データ送れてないんだから、書き込みOKは出すなよ」
という設定はできるのでしょうか

LANケーブルが抜けているのだから、sendバッファのデータは向こうにまったく送れていない。
当然ACKも受け取れてないわけなので、winsockの内部的には相手が応答してないのがわかるはず
0656デフォルトの名無しさんNGNG
そのうちsendバッファがいっぱいになるから
問題ないんでないの?
0657デフォルトの名無しさんNGNG
送信の量が安定しないと困るよなそれ
例えばMMORPGの鯖とか。人が回りで動いてればすぐ一杯になるだろうけど、
ぽつんと荒野にひとりじゃ送信するデータが少ない

やっぱりノンブロックsendで送って、
recvで生存メッセージ(一定間隔でクライアントが送信してくる)が来なくなるか、
sendで失敗した場合に落ちるべきでは?
0658デフォルトの名無しさんNGNG
ping打てばいいんでない?
0659デフォルトの名無しさんNGNG
send のたびに、そんなに重い事をせにゃならんのか・・・。
0660デフォルトの名無しさんNGNG
ぶっちゃけ非同期のsendってどんな時にWSAEWOULDBLOCK返すんでしょう。
バッファに空きがある間は返さない(送信バッファにデータをコピーするだけだから)なのでしょうか

バッファに空きが無い
空くまで待とう(ブロッキング発動!)
その時に追加send命令が! って時だけでしょうかね、WSAEWOULDBLOCKがでるのは
0661デフォルトの名無しさんNGNG
> ぶっちゃけ非同期のsendってどんな時にWSAEWOULDBLOCK返すんでしょう。

例
256KBのデータを送ろうと、全部sendしようとする。
→ sendはエラーを返さないが、8KBしか送れない。
→ 次に続きの248KBをsendしようとする。
→ WSAEWOULDBLOCKが返る。
→ (しばらくしてからFD_SENDが来る)
0662デフォルトの名無しさんNGNG
Windowsで名前解決を非同期に実行しようとしたらウィンドウを
作るしかないんですか?
送受信はWSAEventSelectでできるのに。
0663デフォルトの名無しさんNGNG
マルチスレッドにしたら?
0664デフォルトの名無しさんNGNG
gethostbynameとかのソース見て、自作すれば?
0665デフォルトの名無しさんNGNG
>>663
すっかり頭から抜け落ちてますた
>>664
WindowsだとNetBIOS名の解決とかいろいろ面倒そうなので
できれば遠慮したいです
0666デフォルトの名無しさんNGNG
それよりSMB氏はどうなったんだろう
0667デフォルトの名無しさんNGNG
>>666
現在DOS用のTCP/IPスタックから自作してます
0668デフォルトの名無しさんNGNG
DOS用のWinsock(正しくはDossock)を自作してます
0669SMBNGNG
config.h.inをconfig.hに変えてdefineするとコンパイルは通りますね、
ソースいじらなくても。includes.hはいじったけど。

<arpa/inet.h>とか<netinet/in.h>の実態はgccにも無いようだし、
ネットでstructやtypedef宣言手に入れましたが、
本物が欲しいので、どこから手に入るのか教えて欲しいです。
0670bloomNGNG

http://www.agemasukudasai.com/bloom/
0671デフォルトの名無しさんNGNG
だ か ら 日 記 は よ そ 逝 っ て や れ
0672デフォルトの名無しさんNGNG
>>669
TCP/IPスタックを作る人が作成するものです。
0673SMBNGNG
もうレスをすることに疲れました。
これ以上自分がレスをつける意味というか目的がわかりません。
正直言ってROMしてたほうが楽です。でもいつでも出来ることなので
今は一生懸命レスしようと考えていました。今日までは。
しかし誰からもろくなレスをつけられず、自分が誰にも
必要とされてないことが、わかったとたん前向きに考えることが
出来なくなりました。
もう自分という醜くてどこにいるのかわからないような存在を
2chから消すことだけが最後のレスをつける目的かもしれません。
そしてこの「書き込む」ボタンをクリックすることによりその目的が
遂行されるわけです。
さようなら。これからはROMに徹します。
0674デフォルトの名無しさんNGNG
ナナメ読みか…
0675SMBNGNG
当然ですが、673はニセです。
”WinSock使う”とか、キティなことを炒ってるのは無視してやって下さい。
なんか気持ち悪い粘着ですね。
0676デフォルトの名無しさんNGNG
トリップも付けないで、偽物がどーとか云う人の言葉は
まったく信じてませんから。
0677SMB ◆SDXB/5gbcI NGNG
トリップツカテミマスタ
0678SMB ◆a7SMBwKXrU NGNG
当然ですが、677はニセです。
”トリップツカテミマスタ”とか、キティなことを炒ってるのは無視してやって下さい。
なんか気持ち悪い粘着ですね。
0679SMB ◆SDXB/5gbcI NGNG
やられた。678は超粘着ニセです。
トリップ使うのが恥ずかしくて、2ちゃん語使ったら足もとスクワレタ感じ...
0680SMBNGNG
私が本物です。私はsageでは書きません
0681デフォルトの名無しさんNGNG
sageて書け。
0682SMBNGNG
こいつら全部偽物。
キティばっか。
ちなみに漏れも偽物。
0683デフォルトの名無しさんNGNG
>>669
>config.h.inをconfig.hに変えてdefineするとコンパイルは通りますね、

はああああああああああああ!?
0684デフォルトの名無しさんNGNG
>>683
ほっときなよ。autoconfも知らない白痴なんだから…
0685デフォルトの名無しさんNGNG
彼が、せめてネットワークプログラミングなレベルの話を持って来てくれればネェ
0686デフォルトの名無しさんNGNG
>>684
15年前、patchを知らずにdiffの結果を手で適用していた
自分を思い出す。
0687デフォルトの名無しさんNGNG
ところで藻前ら、SMBなんかは死ぬほどどうでもいいが
DOS用のautoconfってあるのですか。
0688デフォルトの名無しさんNGNG
cygwinならあるんじゃない?
どのみちunix likeな環境を作っておかないとconfigureが実行できない罠。
0689デフォルトの名無しさんNGNG
cygwinもDOS用のportはなかったと思うが。djgppとか使うのかね。
> どのみちunix likeな環境を作っておかないとconfigureが実行できない罠。
御意
0690デフォルトの名無しさんNGNG
>>687
ところで藻れも、SMBなんかは死ぬほどどうでもいいが

http://www.simtel.com/pub/msdos/pktdrvr/

くらいは、この際出しておこうか。
simtel.comには大昔お世話になりました。archieな頃の話。
0691デフォルトの名無しさんNGNG
>>689
Cygwinも結局はWin32コンソールアプリだからねぇ。

djgppもMingWみたいなもんで、同梱されてるのはせいぜいgcc、gas
ld、makeくらいじゃなかったかな。
DOS用B-shell互換シェルはあったけど、configureなんて実行しようと
思うとB-shellもエクステンダで動かさないと厳しそうだ。


関係ないが、djgpp作ってたDJ氏ってCygnus(今はRedHat)に居たん
だね。CygwinのChangelogに名前出てて(´・∀・`)へーと思った。
0692SMB ◆SDXB/5gbcI NGNG
configu.h.inは、autoconfで編集するべきなのか。
はつみみですた。
0693SMB ◆a7SMBwKXrU NGNG
692は偽者です、無視して下さい。

>>690
ありがとうございます、参考にさせて頂きます。

ネットワークプログラミング以前の知識が不足していたようで
そのことで皆様に御迷惑をお掛けしていました。すみません。
今後は、プログラムの原型が出来てから質問します。
0694SMB ◆SDXB/5gbcI NGNG
いい加減にしろ693。

表面の本物らしさと、貶める内容で、まさに偽の内容。
てゆうか、これから名前もトリップもやめまして、単発質問します。
0695デフォルトの名無しさんNGNG
似てないよ・・・
0696デフォルトの名無しさんNGNG
>>692
すくなくともconfig.h.inをconfig.hにリネームして
手で編集するためのものではないだろう。
0697デフォルトの名無しさんNGNG
udp_open(&namein, NSPORT, 0L, 0, 0);
udp_open(&log, 0, logip, LOGPORT, 0) == 0)

NSPORTとかLOGPORTってのは何か教えて下さい。
0698697NGNG
#defineNSPORT137
#defineSMBPORT139/* TCP */
#defineLOGPORT514/* UDP */

一部分かりました。ポート137はSMB名前解決、139はストリームデータ転送。
で、514は分かりません。
0699デフォルトの名無しさんNGNG
ftp://ftp.iana.org/assignments/port-numbers
udp514=syslog
0700697NGNG
syslogですか。調べてみました。
http://www.hero-island.ne.jp/hacker/syslog.html

自分で自分にログ書けよってのが、
udp_open(&log, 0, logip, LOGPORT, 0) == 0)
ですかね?
0701697NGNG
syslogのコードの全体はこんな感じです。

if (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デフォルトの名無しさんNGNG
まったく彼はひどいSMBですね
SMBさんはスレの流れがわからないのでしょうか
無知だからといって無責任な発言が多すぎますよ!!
スレ住人の人権はどうでも良いというのでしょうか?
ニュースステーションの筑紫さんが、SMBのことを、
便所のトイレって言っているのを知ってます?SMBは
どうせニュースも見ないから知らないと存じますが。
とうとう、本気で呆れています。おばあちゃんが、どれどれ?と
画面を覗きにきました。それから、おとうさんも来ました。
その6分後、妹も来ました。SMBは、我が家に笑われています。
とてもいい具合です。家族みんなが、この人おかしいね
おかしいねって、互いに罵り合っています。おかあさんは、
もう3年家に帰ってきてませんが、必ずおかあさんもおかしいね、
って云うと思いますよ。どうです?私に謝るなら、今のうちですよ。
私はこれでも気が遠いほうなんです。また3日後、ここに来ます。
0703デフォルトの名無しさんNGNG
お前ら! 協力してください。
http://pc.2ch.net/test/read.cgi/unix/1038175909/l50
0704デフォルトの名無しさんNGNG

C++でソケットプログラミングをしています。
クライアントを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デフォルトの名無しさんNGNG
shutdown();
close();
0706デフォルトの名無しさんNGNG
perlで簡単なHTTPクライアントを作ったんですが、
リクエストヘッダを送った後に、
while(<SOCKET>) {
 $http_res .= $_;
}
として受信してるのですが、
リクエストヘッダ部をhttp/1.0とすると、ボディを受け取り終わった直後にwhile文を抜けますが、
http/1.1とすると多くのサーバーでボディを受け取った後でもタイムアウトになるまでwhile文を抜けてくれません。
1.1でスムーズにするにはどうしたらいいでしょう?
0707デフォルトの名無しさんNGNG
・Content-Lengthかchunkを見て終わりを判定
・Connection: closeを送る

下だとHTTP/1.1のメリット半減だけどな。
perlでどうやるかは知らん。
0708名無しさん@EmacsNGNG
まったくこれはひどいRFCですね
RFCさんはスレの流れがわからないのでしょうか
無知だからといって無責任な発言が多すぎますよ!!
スレ住人の人権はどうでも良いというのでしょうか?
ニュースステーションの筑紫さんが、RFCのことを、
良いリファレンスって言っているのを知ってます?RFCは
どうせ RFC も見ないから知らないと存じますが。
とうとう、本気で呆れています。おばあちゃんが、どれどれ?と
RFCを覗きにきました。それから、おとうさんも来ました。
その6分後、妹も来ました。RFCは、我が家に重宝されています。
とてもいい具合です。家族みんなが、この RFC いいね
いいねって、互いに罵り合っています。おかあさんは、
もう3年家に帰ってきてませんが、必ずおかあさんもいいね、
って云うと思いますよ。どうです?私に謝るなら、今のうちですよ。
私はこれでも気が遠いほうなんです。また3日後、RFC 書きます。
0709デフォルトの名無しさんNGNG
>>708
>また3日後、RFC 書きます。

【2ちゃん発】RFC作成計画
http://pc.2ch.net/test/read.cgi/unix/1038175909/

ここ行って書いて来い。
0710デフォルトの名無しさんNGNG
>>707
> 下だとHTTP/1.1のメリット半減だけどな。
つーかこの場合HTTP/1.0使うのが正解だな。
どうせTransfer-Encoding: chunkedな応答返されたら
困り果てる設計になってるのを棚に上げて「バイナリに数字が混じって
壊れるんですけどバグですか?」とか言い出すこと目に見えてるから
0711デフォルトの名無しさんNGNG
chunkedのアレって嫌がらせに近いと思った。
なぜ他のと全く違うエンコードにするかな。
0712デフォルトの名無しさんNGNG
chunkにしとけば、あらゆる場面でKee-Aliveできるだろ。
それとも他ににに方法があるとでも言うのか
0713デフォルトの名無しさんNGNG
他ににに・・・
0714デフォルトの名無しさんNGNG
いや、値のエンコードの方法の話・・・
0715デフォルトの名無しさんNGNG
Socketって、writeとsendがありますが、どう違うのでしょう?
0716デフォルトの名無しさんNGNG
ごめんなさい。わかりました。

http://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
flagsは通常0ですか?
どういう場合に値をセットするのでしょうか。
0718デフォルトの名無しさんNGNG
>>716
基本的にはそう思って問題ないんだけど、実は recv() の flag == 0
と read() では微妙に動作が違うような実装もあったりする。
その辺はターゲット OS のカーネルのソース読むのが早い。

>>717
通常は 0 でいい。
他に MSG_OOB とか MSG_PEEK とかのフラグが使える。
MSG_OOB は緊急データ(Out Of Band データ)を受信するためのもの。
MSG_PEEK はその名の通り、到着しているデータを引き取らずに覗き見るもの。
けど、いまんとこ >>717 は気にしなくて良い。
0719717NGNG
有難うございます。詳しいですね。>>718
0720デフォルトの名無しさんNGNG
>>711
「他」ってのはなんのことを指してる?
0721デフォルトの名無しさんNGNG
selectシステムコールにタイムアウトを設けたら0しか返さなくなりました。
タイムアウトを設けなかった(NULLに設定)場合にはブロックされるかわりにちゃんと受信しています。
一体何を疑うべきでしょうか?
0722721NGNG
追記。
…あれ?最後の引数にNULLや0を与えるとブロックなのに、
メンバを0,0にしたtimevalだとブロックしないでタイムアウトするぞ…なんでやん。
0723デフォルトの名無しさんNGNG
>>720
ヘッダ。ヘッダはname : value<CR><LF>なのに・・・
0724デフォルトの名無しさんNGNG
>>722
0秒でタイムアウトするでしょ
0725721NGNG
>>724
むしろ、0にするといつまでもブロックするはずなのです。

…違ったっけ?
0726デフォルトの名無しさんNGNG
落ち着いてman嫁
0727デフォルトの名無しさんNGNG
>>725
null pointerを渡すと無限に待つ
それ以外だとpointerの示す秒数だけ待つ。
pointerの示す秒数が0ならば当然すぐに帰ってくる。
0728721NGNG
…ちゃんと読んでいなかったようで、阿呆丸出しでしたな(汗

問題は待ち時間の長さかなぁ?いくつか試したけど…。
select()しながら標準入力待つとかしたいときは、
fork()でも併用するのがスジなのでしょうかねぇ?
タイムアウトを数秒単位でやってたら標準入力のほうが使いにくすぎる…。
0729デフォルトの名無しさんNGNG
>>728
>select()しながら標準入力待つとかしたいときは、
とは?
while(){
  FD_SET(STDIN)
  FD_SET(ソケット)
  select(fds)
  if (FD_ISSET(STDIN)) {
    ほにゃらら
  }
  if (FD_ISSET(ソケット)) {
    ほにゃらら2
  }
}
じゃいかんのかえ?
0730デフォルトの名無しさんNGNG
>>728
> fork()でも併用するのがスジなのでしょうかねぇ?

select系で頑張るの止めるとすれば、pthreadだろ。(まともなOSならば)
selectがbottle neckになりそうな局面では、
poll, /dev/poll, kqueueも検討してね。
0731デフォルトの名無しさんNGNG
selectは何のために呼ぶんだっけか。
0732デフォルトの名無しさんNGNG
>>720
それじゃ余りに冗長だからだろう。
サイズをバイナリにしなかったのはバイトオーダーの問題とか
32ビットにして後で困るとかを避けるためだな
だいたい一行目はname : valueじゃないし
0733デフォルトの名無しさんNGNG
ブロードキャストアドレスって、255.255.255.255だと
思い込んでたけど違うんだね。何で勘違いしてたんだろ...
ブロードキャストアドレスを求めるC/C++のサンプルコード教えて下さい。
0734デフォルトの名無しさんNGNG
ソケットプログラミングでブロードキャストアドレスを求める例が無いってことは、
TCPやUDPの相手先のIPアドレスに0(文字列タイプじゃなくて、typedef struct in_addr)を
指定するとブロードキャストになるということかな?
0735デフォルトの名無しさんNGNG
in_addr.s_addrと255のビットのアンドをとれば、ブロードキャストアドレス?
0736デフォルトの名無しさんNGNG
ま た S M B か
0737デフォルトの名無しさんNGNG
736=粘着
0738デフォルトの名無しさんNGNG
端末から、自分宛に送信するパケットを受け取るにはどうしたらよいのでしょうか?
たとえば、端末A、Bがあり、AからBへのtelnetのsyn packet をファイルに取り込む。
次に、端末Bで、そのファイルを読み込んで、宛先マックアドレスを、端末B、
送信元マックを端末A にして送信すると、
端末Bで実行したtcpdumpでは、たしかにSYNパケットが送信されたログがあります。
しかし、端末AへのACKが検出できないのです。
これはどういった理由なのでしょうか?

0739738NGNG
追加ですが、TCPのチェックサムはOKとtcpdumpで表示されていました。
IPのチェックサムは確認していませんが、どこも変更していないので
問題ないと思います。。
0740八王子市立みなみ野中NGNG
2ちゃんねる にいる奴はみんな糞やろうだ!!!
ハッキングなんてこわくねーんだよ!!
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死死死死死ね死ね死ね死ねね死ね死ね死ね死死ね死ね死ね死ねね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ねね死ね死ね死ねね死ね死ね死ね死ね死ね死ね死ね死死ね死ね死ね死ね死ね死ね死ね死ねね死ね死ね死ねね死ね
0741↑NGNG
死ねしか言えないのか?
糞やろうって言うくらいなら、はじめから入ってくるなボケ!!
0742デフォルトの名無しさんNGNG
VC6で
#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 の実行エラー
となります。なにかプロジェクトの設定をしないといけないと思うんですが、なにをしていいのか分かりません。
ご教授ください。
0743742NGNG
下げてしまいますた
0744742NGNG
ws2_32.libとwinmm.libというのをリンクしたら上手くいきました。なぜかは分かりません。
0745デフォルトの名無しさんNGNG
だから日記ならここに書くのはやめてくれって
0746デフォルトの名無しさんNGNG
745=被害妄想で全レスが日記に見える粘着
残念ですが、ハズレですた。
0747デフォルトの名無しさんNGNG
UDPで通信できるデバイスに制御パケットを投げるJavaプログラムを書いているんですが、
そいつは制御命令を送ると、応答として現在のステータスが返ってきます。

socket.send( send_packet );
socket.receive( recv_packet );

で、(エラーや例外を考えないと)こう書くわけなんですが、ふと疑問が出ました。
1) receiveするときは待機状態に入り、何も来ないとそこから先に進まないのか?
2) receiveが実行される前に応答が到着したらどうなってしまうのか?バッファに溜まるのか?
3) バッファがあれば(゚д゚)ウマーだけど、もし溢れたら何がreceiveされるのか?

・・・(´・ω・`)
0748デフォルトの名無しさんNGNG
1.ソフトの設計次第。 UDPだと、ふつーは2秒とか待ち時間を決めて、
帰ってこなければリトライしたり、諦めたりする。まあ、相手次第。

2.基本的にはたまる。貯まりすぎるとだいたい取りこぼす。

3.あふれて消えたり、取りこぼしたデータは、それっきり。
connectしてたら、場合によってはICMPがどっかから飛んでくる
可能性もないわけではないけど。
0749デフォルトの名無しさんNGNG
>>746=俺がSMBのことを叩いてるという妄想に捕らわれてる粘着
単に一般論として情報価値のないレスを延々と連ねて
スレを汚すなと言ってるんだが
あ、>>742-745が非常に役に立つくらいレベルが低いってだけか
0750デフォルトの名無しさんNGNG
>>748
ありがとうです。
基本的にデータ飛ばしを実現するだけ、あとは自分でコード書いてねってことですね。

(´ー`).oO(TCP/IPのバッファってそんなに大きくないのかな・・・もしかしてOSごとに違うとか・・・。)
0751742-745NGNG
>749
レベル低くてごめんなさい。
よかったら、なんでそれらのライブラリをリンクしないとダメだったのか、
なんでそれらのライブラリはデフォルトでリンクされてなかったのか、
どこを見ればそれらのライブラリをリンクするべきだというのが分かったのか、
教えていただけませんか?
0752≠749NGNG
1.どのDLLにあるかを明示したり、インポートテーブルを調査したりするために。

2.アプリの全部が全部Socketを必要としているわけではない。
必要になった時に、必要なライブラリをリンクするのが筋。
それを認めないなら、全てのライブラリをリンクしないといけない。

3.MSDN。具体的には、MSDNのsocketの項には
>Library: Use Ws2_32.lib.
とある。
0753742-745NGNG
>>752
ありがとうございます。MSDNの項には気づきませんでした。
0754デフォルトの名無しさんNGNG
>>738
いまいち状況がよくわからないが、自分宛のパケットが
ループバックインタフェースの方にルーティングされてるってことはない?
0755デフォルトの名無しさんNGNG
>>733-734
ブロードキャストアドレスは、255.255.255.255 でも良い場合があるみたいだが…
(DHCPとかが使う)。
で、サブネットブロードキャストアドレスは Interface の情報を取得する
必要がある。ioctl の SIOCGIFCONF あたり。
Unix なら Stevens に書いてある。Winsock なら、こんなのがあった。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/getifaces.html

0756デフォルトの名無しさんNGNG
ブロードキャストアドレスってそのネットワークが使えるアドレスの終端アドレスじゃなかったの?
192.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
>>756
おいおい、自分のネットワークアドレスやネットマスクを知らないときには
どうするんだ? ブート時のDHCPクライアントとか。
0758デフォルトの名無しさんNGNG
>>757
上記では、
192.168.0.0/255.255.255.0
192.168.0.0/255.255.0.0
と、自分のネットワークアドレスが決まっているので、
ブロードキャストアドレスは、あのようになる。
0759デフォルトの名無しさんNGNG
>>757
クラスの規則に従ってるんなら平気じゃない?
0760デフォルトの名無しさんNGNG
>>757 limited broadcast でググってみれ
0761デフォルトの名無しさんNGNG
rfc1122 より
Limited 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デフォルトの名無しさんNGNG
Limited Broadcast/Directed Broadcast/Subnet Directed Broadcast/
All-Subnets Directed Broadcast

この説明が欲しいよー。
0763デフォルトの名無しさんNGNG
rfc1122
0764デフォルトの名無しさんNGNG
教えて下さい。UDPにDestination Addressってのがありますが、
主に何に使われるのでしょうか。UDPの場合、使われ方はユーザ次第かもしれませんが。
あるサービスでは、XXX.XXX.255.255というのが入ってましたが、
ブロードキャストで応答せよ、という命令でしょうか。
0765764NGNG
Destination Addressは日本語では、送信先なんですね。
翻訳サイトしたら終点アドレスになって混乱させられちゃった。
送信先という用語からいくと、受けたマシンが自分宛かチェックするということですか?
0766デフォルトの名無しさんNGNG
MACアドレスじゃなかったのか
0767デフォルトの名無しさんNGNG
>>761
ありがとう。出来れば、ソースコードで教えれ。
0768デフォルトの名無しさんNGNG
http://www.rtpro.yamaha.co.jp/RT/FAQ/TCPIP/broadcast-address.html

これらのうち、ブロードキャストアドレスとしては Limited Broadcast を用いるべき (SHOULD) と書かれています。
Limited Broadcast: {-1, -1}

とあるから、何も考えずに、{-1, -1}とすれば良いんだろうか。
サブネットが255.255.255.0だと変な動作になるのかな?
0769デフォルトの名無しさんNGNG
送信バッファに溜まった電文を強制的にフラッシュしたいんですが、
fflushみたいな関数ってないですか?
なければどうやれば実現できるでしょうか?
よろしくお願いします。
0770デフォルトの名無しさんNGNG
>>769
どの言語の話ですか?
0771769NGNG
ああ、すみません。基本的なことでしたね。
言語はPOSIXのCで環境はLinuxです。
0772デフォルトの名無しさんNGNG
>>771
送信バッファの低位水準を1バイトにすればいいんでないの?
0773デフォルトの名無しさんNGNG
で、TCPなのかUDPなのか他の変態プロトコルなのか。

TCPならとりあえずTCP_NODELAY、と云ってみる。
0774デフォルトの名無しさんNGNG
>>773
それだと、nagleアルゴリズムを禁止するだけじゃないの?
たしかに、改善されるだろうけど、フラッシュまではいかないのかな?
0775デフォルトの名無しさんNGNG
でも結局、相手が受け取ってくれなかったら、
どうあがいたってバッファには残るでしょうに。
0776769 NGNG
buf_size = 1;
setsockopt( 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デフォルトの名無しさんNGNG
>>776
SO_SNDBUF だと送信バッファサイズだね。低位水準じゃない。
0778デフォルトの名無しさんNGNG
>>775
残るか残らないかではなくて、書き出すか、書き出さないかではないの?
0779デフォルトの名無しさんNGNG
>>776
信号が赤から青に変わった瞬間、全員がアクセル全開で突っ走る
世の中が良いのか?
0780デフォルトの名無しさんNGNG
>>779
僕はMTなのでアクセル全開にしてもスピードは調節できまふ。
0781 ◆Db/E231N/A NGNG
>>764
UDPのdestaddrって、それはIPヘッダの方に入ってるヤツのことではなく?
destaddrがなければ、データグラムをどこに送り出すかわかんねーべ?
0782デフォルトの名無しさんNGNG
ネットワークプログラミングしてるってくらいだから、最低限ネスペくらいもっておけよな。
0783デフォルトの名無しさんNGNG
>>782
ネスペって何?
0784デフォルトの名無しさんNGNG
ネスケの間違いだろ。
0785デフォルトの名無しさんNGNG
>>784
ネスレだろ?
0786デフォルトの名無しさんNGNG
ネナベ
0787デフォルトの名無しさんNGNG
>>776
Nagleのアルゴリズムがなかったら…

データをなるべくまとめて送り出す替わりに、手元に
少しでも集まったぶんからぽつぽつと送り出すことに
なるんだよ。スループットががた落ちになる。
0788デフォルトの名無しさんNGNG
場合もある、だろ。
あれは一種のお節介。
0789デフォルトの名無しさんNGNG
>>788
場合もある、だろ。
0790デフォルトの名無しさんNGNG
InterQとSocket通信をしようとしてもレスポンスが返って来ません。
多分このような経験をしたことのある方も多いと思います。
これは何が原因なのでしょうか?
0791デフォルトの名無しさんNGNG
>>788
アフォか。
0792デフォルトの名無しさんNGNG
ネットワークプログラミングしてるってくらいだから、最低限ネスペくらいもっておけよな。
0793デフォルトの名無しさんNGNG
場合もある、だる。
0794デフォルトの名無しさんNGNG
不覚にも笑ってしまた。
0795デフォルトの名無しさんNGNG
>>792
オンラインじゃ駄目か ?
0796デフォルトの名無しさんNGNG
Nagleのアルゴリズムが困る場合の方がInternetでは特殊だろう。
だからTCP_NODELAYがデフォルトでなくオプションになっている。
0797デフォルトの名無しさんNGNG
>>796
んなこたぁない。

HTTP、SMTP、IIOP、RPC、他多数でTCP_NODELAYが邪魔。
当然ながら実装がヘタレだったら別だよ。

つーか、リクエスト/レスポンス型のプロトコルで
TCP_NODELAYが役に立つのってあるんか?
0798デフォルトの名無しさんNGNG
>>797
んなこたぁない。
レーテンシーしか気にしないならともかく、
スループットが重要ならHTTPでもSMTPでも
Nagleアルゴリズムは役立つ。

まあ藻前は1パケット一行ずつ送ってろ。
0799デフォルトの名無しさんNGNG
Nagleのアルゴリズムがそんなに邪魔なら、
なぜどのTCP/IP実装でも(IPv6でさえ)
デフォルトでNagleのアルゴリズムがenableされてるんだ?

LAN環境で、クライアントが1つの時のレスポンス時間くらいしか
考えたことのない厨房はこれだから困る…
0800デフォルトの名無しさんNGNG
>>797
TCP_NODELAYをわかってなので文が変になってる。
0801デフォルトの名無しさんNGNG
>>798-799
よく見ろ。>>797は「TCP_NODELAYが邪魔」と書いている。
つまり、Nagleマンセーということだ。
0802デフォルトの名無しさんNGNG
>>799
むしろWAN環境のほうがTCP_NODELAYを設定することが多いね。
0803デフォルトの名無しさんNGNG
>>802
また知ったかが…
問題はLANかWANかじゃないだろ。
0804デフォルトの名無しさんNGNG
>>801
要は、>>797 の最初の一文が誤解の元だ。
0805デフォルトの名無しさんNGNG
>>803
関係アルよ。
LAN環境だと、小さなパケットに対するACKがはやいので、
Nagleのアルゴリズムが働かないことが多い。
WANではレスポンスが遅いので、Nagleが働く。

NAGLEわかってるの?
0806デフォルトの名無しさんNGNG
NAGLEわかってるの?
0807デフォルトの名無しさんNGNG
nagleのアルゴリズムなんて初級シスアド持ってたらみんな知ってるだろ?
0808デフォルトの名無しさんNGNG
>>805
無関係とはいっていない。
TCP_NODELAYを使うかどうかの基準は「レスポンス」か「スループット」か
であって、LANかWANかじゃないという意味。

LANでもWANでも、TCP_NODELAYを設定したほうが良いときも悪いときもある。
0809デフォルトの名無しさんNGNG
>>805

>LAN環境だと、小さなパケットに対するACKがはやいので、
>Nagleのアルゴリズムが働かないことが多い。

ヲイヲイ。Nagleのアルゴリズムが働くかどうかは「送り手側が」決める。
ACKが速いかどうかは関係ないだろう。

それとも「有効かどうか」という意味?
0810デフォルトの名無しさんNGNG
>>808
どうも勘違いされているようですが、
TCP_NODELAYを使うかどうかの基準は、通信の内容じゃないの?
レスポンスが上がったとか、スループットが向上したとか言う話は、
Nagleのアルゴリズムを適用したとか、向こうにしたとかの後の話であって、
レスポンスを上げるために、もしくはスループットを上げるために設定するものではない
ということ。

0811デフォルトの名無しさんNGNG
>>809
nagleのアルゴリズムはACKが返ってない未承認の小さなパケットを
減らすことを目的としています。
0812デフォルトの名無しさんNGNG
>>810
いずれにせよ「LAN」「WAN」とは無関係だろ。

John NagleのRFC 896は読んだのか?
throughputを改善するためと書いてあるだろ?
0813デフォルトの名無しさんNGNG
>>812
でも、あんたも、なんでもかんでもnagle使えばいいわけじゃないっていってるジャン?
スループットが改善するかどうかと言うのはクライアントサーバ間の電文の種類
などの通信の内容によって変わってくる。
0814デフォルトの名無しさんNGNG
>>813
もちろんその通りだが。
そもそも何の話だったかというと、ええと…

要するに、Nagleのアルゴリズムが不要と書いた
香具師は、無知でマヌケで恥さらしということだ。
0815デフォルトの名無しさんNGNG
まったりいこうぜ。
あと、ここプログラミングスレだぞw
0816デフォルトの名無しさんNGNG
不要かどうかは場合によるだろ。
でも、なんでもかんでもnagleは不要っていうのはマヌケだな。
0817デフォルトの名無しさんNGNG
>Nagleのアルゴリズムが不要と書いた香具師
って誰?
0818ちゃんばば ◆Lw8TjwCkqM NGNG
>>817

>>776と>>788
あと、アフォな書き方だから良くわからんが、
たぶん>>797も。
0819デフォルトの名無しさんNGNG
788は813と同じような事を言ってるようだけど?
0820名無しさん@接続しっぱなしNGNG
>>818
たぶん>>797は、>>796を「Nagle否定」と誤読したんだと思うよ…
>>804が言うように、>>796へのACKである一行目を除けば正しいから。
0821名無しさん@接続しっぱなしNGNG
>>819
>>788が「お節介な時もある」なら同じだと思うけど…
0822デフォルトの名無しさんNGNG
殴るぞゴルァ
0823デフォルトの名無しさんNGNG
Winsockを使っています。
簡単なポートスキャナ(といっても知り合いのサーバの特定の複数のポートが開いているかどうか確認するだけですが)
を作り、それは確認にConnectが成功したか否かという方法をとっています。
この場合、成功するときは数秒でConnectが返ってくるのですが、
失敗するときはConnectが返ってくるまで20秒近くかかってしまいます。
成功も失敗も数秒でわかるようにしたいのですが、どのようにすればよいでしょうか?
Connect以外でポートが開いているかどうかを確認する方法はあるでしょうか?
よろしくおねがいします。
0824デフォルトの名無しさんNGNG
過去ログ、というかこのスレをconnectで検索しろ。
つかそれくらいもできないヴァカは氏ね。
0825デフォルトの名無しさんNGNG
非ブロッキングコネクト
0826デフォルトの名無しさんNGNG
もっと早く知りたければ、SYNパケットだけ送るとか。
RST送って、返ってきたら「閉じてる」とか。
rawソケット使うか、データリンクに直接アクセスすれば?
connectだけじゃ芸がないだろう。

0827デフォルトの名無しさんNGNG
ありがとうございます。
>>824さんの言う通りまったく同じ質問が以前このスレあったのに申し訳ありませんでした。
ただ、タイムアウト方法の他に>>826さんの方法も知ることができ、
WEB検索すると役に立ちそうなページがヒットしたので、結果的に許してにゃんまげ。
0828デフォルトの名無しさんNGNG
winsockでデータリンクにダイレクトにアクセスするにはどうしたらいい?
bpfみたいなものないんかな。
cygwinだったら可能かな?
0829デフォルトの名無しさんNGNG
>>828
WinPcap じゃ駄目かい?
http://winpcap.polito.it/
0830828NGNG
>>829
おお。ありがとうございます。落としてみます。
0831デフォルトの名無しさんNGNG
アセンブラレベルでネットワークを利用することはできますか?
0832デフォルトの名無しさんNGNG
>>831
そういう質問をするヤシにはできない。
0833デフォルトの名無しさんNGNG
は?
0834デフォルトの名無しさんNGNG
...
push eax
call [imp_WSASocket]

とかか(ワラ
0835デフォルトの名無しさんNGNG
POP3クライアントを作るのに、winsockでWSAAsyncSelect使ってます。
FD_READとかFD_WRITEでイベントを処理するんですが、FD_WRITEがFD_CONNECT直後の1回しか来ません。
FD_READは常に発生しているようなんですが、なぜFD_WRITEは定期的に発生しないのでしょうか?
0836デフォルトの名無しさんNGNG
sendしてないからじゃないの
0837チューボーNGNG
>>835
FD_WRITEってソケットに書き込めるようになったときに送られてくるんだったと思います。
だから任意のタイミングでデータ送信したい時は、
PostMessage()で強制的にFD_WRITE発行するといいんじゃないでしょうか。
半端な知識なんで変なこと言ってたらすみません。
0838デフォルトの名無しさんNGNG
FD_WRITEについては、このスレのpart1でいろいろ議論されてたよ。

要約すると、connect直後のFD_WRITE以外は、
sendしてWSAEWOULDBLOCKが返ってきた後の、IO-pendingからの復帰時にしか来ない。

だから、sendは(connectしたら)いつでもやっていいの。
だけど、続けてsendするといずれ失敗する。
そうなったら、「もうsendしても大丈夫だよ」とFD_WRITEが来る。
0839デフォルトの名無しさんNGNG
>>837
むちゃくちゃ変ですあほ
0840835NGNG
ふむふむ。。。
みなさん、ありがとう。

もう少しがんばってみます。
0841デフォルトの名無しさんNGNG
データが大量に届き続けると、FD_READ が連続で発生して
UI が固まるから、止めた方がいいよ。
0842デフォルトの名無しさんNGNG
select で send を使うのって、どういうときなんですか?
いつでも書き込んで良さそうなんですが。
0843デフォルトの名無しさんNGNG
非ブロッキングソケットで、sendで止まっては困るとき。
0844843NGNG
しまった、ブロッキングソケットで、だ
0845デフォルトの名無しさんNGNG
BSDソケットの代わりにカーネルキュー使うと
無茶苦茶速くなると聞いたんですが
そのあたりの資料ってないですか?
0846デフォルトの名無しさんNGNG
その程度の知識の奴が使って「無茶苦茶速くなる」
ことなど決してない
0847デフォルトの名無しさんNGNG
とりあえず、
http://ghost.math.sci.hokudai.ac.jp/esehttpd/
の関連リンクをあたれ。

それと、kqueueはsocketを待つ方法の一種。
socketのかわりに使うわけではない。
0848デフォルトの名無しさんNGNG
あげ
0849デフォルトの名無しさんNGNG
rawソケットとかで直接データリンクにアクセスしている場合、
自分宛のパケットを取り込むことってできるんでしょうか?
ipアドレスを自分宛、MACアドレスも自分宛にして、送信してみましたが
取り込めません。
ためしに自分宛のIPアドレスとしてループバックアドレスを指定してみましたが
取り込まないです。。。
0850デフォルトの名無しさんNGNG
プログラミング以前なんだけど、教えて下さい。
ノンブロッキングでシングルスレッドI/Oマルチプレクシングってどういう意味ですか?
0851名無し@沢村NGNG
銀行のATMにアクセスするプログラムはどう書くのですか?
0852デフォルトの名無しさんNGNG
( ゚д゚) ポカーン
0853デフォルトの名無しさんNGNG
つーか、また沢村かよ!! 土に還れ!!
0854名無し@沢村NGNG
銀行のATMにアクセスするプログラムの書き方

//ネットワークに流れるデータを受信する
recive(data);
//データがATMのときは
if(data==ATM)
//あ億円を引き出す
popmoney(100000000);
0855名無し@沢村NGNG
銀行のATMにアクセスするプログラムの書き方

//ネットワークに流れるデータを受信する
recive(data);
//データがATMのときは
if(data==ATM)
//1億円を自分の口座に振り替える。
sendmoney(100000000)from(anybank)to(mybank);
0856デフォルトの名無しさんNGNG
ワラタ
0857デフォルトの名無しさんNGNG
>>850
まったくもってプログラミング以前の話じゃないぞ。

ソケットをノンブロッキングにしてselectでイベントを待ち、
イベントドリブンっぽく記述するプログラムのモデルのことだろう。

たとえば、サーバープログラムが、複数のクライアントとの処理を
"forkせずに"おこなう場合なんかに使える。

まあ、unixならfork、win32/javaならthreadにしたほうが
楽だと思うけどね。
0858デフォルトの名無しさんNGNG
unixなら、自力でforkするより、inetdから起こして貰う方が楽と思うが。
0859デフォルトの名無しさんNGNG
シングルスレッド〜との対比で言うならforkであってると思う。
0860デフォルトの名無しさんNGNG
> まったくもってプログラミング以前の話じゃないぞ。

すこーし言葉がおかしいと思う。
0861857NGNG
追記。

win32ならwinsock2とWindowMessageを使えばイベントドリブンになるね・・・
でもその格好で書いたことないや・・・
0862デフォルトの名無しさんNGNG
漢は黙ってIOCP
0863デフォルトの名無しさんNGNG
>>861
ウィンドウメッセージを使うのはWinsock2.0でなくてもできるぞ。
Winsock2.0で追加されたのはイベントオブジェクトを使った非同期処理とか
重複I/Oだとか。
0864デフォルトの名無しさんNGNG
つーか、WindowMessageを使うwinsockは、
threadのないWin16のために出来たと思っていたが
0865デフォルトの名無しさんNGNG
そして話がシングルスレッド〜に戻るわけだが
0866デフォルトの名無しさんNGNG
>>857
ノンブロッキングでシングルスレッドI/Oマルチプレクシング
これはzeusという有料webサーバーの特徴なんですが、ググっても要領を得なかったのです。
apache2.0の性能向上はマルチスレッド対応によるところが大きいと聞きますし
世間はマルチスレッドマンセーであると思われますが、シングルスレッドであるメリットはどこにあるのでしょうか?
またI/Oマルチプレクシングについての資料やサンプルコード(perlやC)はないでしょうか?
0867デフォルトの名無しさんNGNG
>>866
マルチプレクシングを多重に読みかえて検索してみなされ
ttp://www.soi.wide.ad.jp/class/20000011/slides/08/index_3.html
コードは見当たらんな
0868デフォルトの名無しさんNGNG
レベル低いね
0869デフォルトの名無しさんNGNG
たとえば、同時接続数10000とかになると、マルチスレッドだとスレッドが、
マルチプロセスだとプロセスが10000とかできたりして、
そのタスクスイッチだけで相当の時間が費やされてしまうし、
保存すべきコンテキストも膨大な量になるから。
0870デフォルトの名無しさんNGNG
>>866
理屈からいえばシングルスレッド/非ブロッキングが一番効率的になる
(スレッド切り替えだとかの問題で)が、いかんせん、余りにも処理の
流れが掴みにくくなるので一般的に保守が面倒になる、といわれている。
apacheの場合はマルチプロセスだったものがマルチスレッドも可能になった
って話でこの場合関係ない。
0871デフォルトの名無しさんNGNG
>>870
CPU1個ならね。
CPU複数なら、マルチスレッド、ノンブロッキングマルチプレクシングが良い。
のか?教えて、偉い人。
0872デフォルトの名無しさんNGNG
プロセスが1つだと、そのプロセスが落ちたとき全滅なので、
マルチプロセス・ノンブロック・マルチプレキシング、
ということになったりもするが。
0873デフォルトの名無しさんNGNG
>>871
以前読んだ解説記事には、例えばWebサーバみたいにI/Oリクエストを
多数処理するプログラムの場合、
(1)シングルスレッド。selectでマルチプレクシング。
(2)I/Oリクエストごとにスレッドを生成。
(3)CPU数程度のワーカ・スレッド。ノンブロッキングI/Oでマルチプレクシング。
と、下になるほどスケーラブルとあった。
0874デフォルトの名無しさんNGNG
>>872
初期のApacheとかだと、cgiを呼ばなきゃなんない関係で、
別プロセスにしてるんじゃなかったかなあ。

>>873
ソースキボン
0875デフォルトの名無しさんNGNG
>>873
スレッドだけじゃ駄目な場合もあるだろうが

>>874
違う。1プロセスで扱える接続数には制限があるほか、
メモリリークを回避する意味合いや、>>872の効果もある。
0876デフォルトの名無しさんNGNG
ちょうどマルチスレッドの話もでているので便乗させてください
不特定多数が参加するMMO(というわりには規模がちいさいけど、イメージ的にはそれ)を作っています
マルチスレッドを使おうと思ったのですが、色々訳あって現在はシングル+非同期winsockでやっております

そこで質問なのですが、winsockでconnectを同期せず(connectで止まらず)に行うには
AASyncを使うしかないのでしょうか
recv, sendはソケットのオプション変更で非同期にできたのですが…
プレイヤーがログインしたとき、データベースサーバーにコネクションを張らせたいのです
マルチスレッドにするしかないでしょうか?
0877デフォルトの名無しさんNGNG
>>876
プレイヤー毎にDBに接続? 。。。正気の沙汰とは思えんな。
それじゃ同時接続数は30〜100くらいしかさばけんぞ。
0878デフォルトの名無しさんNGNG
UDPのパケット受信で正確な大きさが分からないのでsock_fastreadで受信します。
1回のsock_fastreadで処理したいのですが、
パケットってどれくらい小さく分断されるされる可能性があるものなのでしょうか?
0879デフォルトの名無しさんNGNG
>UNIX Network Programming" によれば、全ての TCP/IP の実装は、
>MTU の大きさに関わらず 576 バイトの最小 IP データグラムを
>サポートしなければなりません。IP ヘッダが 20 バイトで UDP ヘッダが
> 8 バイトと仮定すると、UDP メッセージの安全な最大サイズとしては
>548 バイトが残ります
0880デフォルトの名無しさんNGNG
thanx!>>879
じゃ、sock_fastread1回で、500byte位まで逝けるね!
0881デフォルトの名無しさんNGNG
>>876
WSAEventSelect
connectよりgethostbynameのEvent版がないことのほうが
納得いかん
0882876NGNG
>>877さん, 881さん
ありがとうございます。
WSAEventSelect確認しておきます

今ひとつのサーバーにコネクションいくつ張れるかテストしてみました
43本……。
いや、Win98をサーバーにしようとは微塵も思わないけど、44本目で
「Error10055 バッファスペースに空きがない」
2kなら大丈夫かな…だといいな
クライアントとサーバーが同じPCだったからかな…
何にせよプレイヤーの数だけDBにコネクションを張るのは無謀、了解しました。

[プレイヤー] ←プレイ→ [ゲー鯖] ←セーブロード→ [DB鯖]
ゲー鯖とDB鯖には一本張って、それでやりとりするのがいいですかね
何にせよゲー鯖はプレイヤー人数分コネクト張らなきゃいけないのに、43本…


0883デフォルトの名無しさんNGNG
>>882
めちゃくちゃ納得
というか既存のネットゲーどうやってるのか?知りたいです。
ノンブロッキングIOプレクシングとやらも関係あるのかも
0884デフォルトの名無しさんNGNG
DBとゲー鯖で一本コネクション張っておけば?
でも一斉に大量がセーブロードを行う場合にsendバッファ超えそう
一回セーブ内容をプールしたりする必要があるかもな
0885デフォルトの名無しさんNGNG
>>876
connectって非同期にできない?
リファレンス見ると、できそうに書いてあるけど。

> 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
>>885
どう読んだらそうなるんだ?
「connect要求は直ちに完了できない(ノンブロッキングにできない)ので
エラーになる」と書いてあるが。
0887デフォルトの名無しさんNGNG
>>886
Windows の設計はよくわかんなくて、エラーは返るんだけど、正常に
ノンブロッキング処理は行われる。

だから、メッセージをそのまま解釈すると、connect から SOCKET_ERROR
が返ってきて、かつ WSAGetLastError から WSAWOULDBLOCK
が返ってきたときは、正常に非同期接続が行われている(途中)ってことになる。
0888885NGNG
>>886
え。だって、ノンブロッキングソケットって、いつもエラーリターンでそ? recv とか send とかも。
EWOULDBLOCK は、本来ならブロッキングしてたはずのところを、ノンブロッキングだからすぐリターンしたよって意味ではなかった?
0889デフォルトの名無しさんNGNG
EWOULDBLOCKはEINTRと、意味は違うけどその後の処理は似てるね。
0890デフォルトの名無しさんNGNG
まあ、Winsockのノンブロッキングを知ってればあたりまえだけど、
そういう仕様だと思って納得するしかないな。

ところで、>>876は
> recv, sendはソケットのオプション変更で非同期にできたのですが…
というところから、ノンブロッキングモードではなく非同期モードを使おうとしているようだが。
ちなみに俺は知らんし調べる気もない。
0891デフォルトの名無しさんNGNG
非同期とノンブロックは全く別ものだな。
知ったかクンがよく間違えてるが。
0892デフォルトの名無しさんNGNG
private int DatagramSocket ds;
って宣言の仕方おかしいですか?

Eclipseをつかっていまして
トークン"ds"に構文エラーがあります。正しくは";","."です。と表示されますが、
どういうことでしょうか。
0893デフォルトの名無しさんNGNG
>>889
結構違うと思うよ。

EINTRはそのままリトライに入って問題ないけど、
EWOULDBLOCKはそのままだとBusy Loopに陥る。
0894デフォルトの名無しさんNGNG
>>892
ネットワークプログラミング以前の問題
初心者スレへ逝け
0895892NGNG
あ・・・なんでintが入ってるんだろ(汗
スマソ
0896デフォルトの名無しさんNGNG
>>888
「いつも」ではない。その場で処理されてすぐに戻ってくるかもしれない。
いつもWSAEWOULDBLOCKが返ってくることを前提にした
コードを書いてはならない。
0897876NGNG
>>890-891
すいません、しったか君が間違えました
ノンブロッキングモードです。

cnnnectにもノンブロッキングモードはあるのかな
ちょっと調べてみます

>>881さん
WSAEventSelect調べてみました
ははーん…。
イベントとやらも便利そうですね。winsockのみなのが残念なところ
linuxでも試してみたいので、connectのノンブロッキングを探してみます
だめそうならイベントを
0898デフォルトの名無しさんNGNG
>>896
上のドキュメント見ろ。「いつも」だ。
0899デフォルトの名無しさんNGNG
> With a nonblocking socket, the connection attempt cannot be completed immediately. In this case, connect will return SOCKET_ERROR, and WSAGetLastError will return WSAEWOULDBLOCK.

ノンブロッキングソケットでは、コネクションの試みは即座には完了できない。
この場合、connectはSOCKET_ERRORを返す。WSAGetLastErrorはWSAEOULDBLOCKを返す。
0900デフォルトの名無しさんNGNG
>>888より
> え。だって、ノンブロッキングソケットって、いつもエラーリターンでそ? recv とか send とかも。
>>896より
> 「いつも」ではない。その場で処理されてすぐに戻ってくるかもしれない。
>>899より
> the connection attempt cannot ...

後は自分で判断しような>他の人
0901デフォルトの名無しさんNGNG
判断する余地があるのか無いのか・・・
0902デフォルトの名無しさんNGNG
無いね。「may not」なら「完了しないこともある」だが、
「cannot」だからね。必ずSOCKET_ERRORが返る。
0903900NGNG
>>888より
> いつもエラーリターンでそ? recv とか send とかも。
0904900NGNG
おっと、connect直後にFD_WRITEが来るから
send()が成功するのは当てはまらないと言われるかな。
0905デフォルトの名無しさんNGNG
要するに>>896が知ったかということだろ。
0906900NGNG
connectに関しては全く異論はないよ。
0907900NGNG
しつこいから最後。
俺には>>896が知ったかだったのではなく、>>898がよく読んでなかっただけに見えるけどね。

あ、俺は>>896ではないよ。
0908デフォルトの名無しさんNGNG
888がバカなのは確かだが。
0909デフォルトの名無しさんNGNG
nonblockingなソケットの場合

1. connect()は必ずWSAEWOULDBLOCK.が返ってくる。
2. recv()やsend()とかはいきなり正常終了する可能性がある。

connect()する時は相手からの応答を待つから、即座の復帰はありえない。
recv()やsend()ではバッファの関係で正常/WSAEWOULDBLOCK.両方の可能性がある。

ごっちゃにしたのが混乱の原因(w
0910デフォルトの名無しさんNGNG
乙
0911デフォルトの名無しさんNGNG
そうそう、send()が一番わかりやすいから書いたけど、
recv()も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が来る可能性もあったはず。

普通はおきないけど、FD_CLOSE 前のFD_READ が届いたときに
(ソケットバッファ未満の?)小さな recv() しかしない場合に、
発生する可能性ありなんだっけ?

winsock 側としては、
FD_READ
FD_CLOSE
をポストして、お役御免と思っていたら、FD_READ 時に全部 recv()
してくれないものだから、そこで、あわてて FD_READ を再発行って
印象。

それ以外のシチュエーションでも、FD_CLOSE後のFD_READなどが
ポストされる場合って、あるのかな?
0913デフォルトの名無しさんNGNG
Mobile IPv6 に対応したプログラムくみたいんですけど、誰か参考になる
ソースとかのありかおしえてくれませんか?
0914デフォルトの名無しさんNGNG
>>912
前スレで同じ話があったと思う。
0915デフォルトの名無しさんNGNG
蒸し返すようだけど、>>885-888の話の流れからして、
888は「WSAEWOULDBLOCKを知らせる時には(sendやrecvも)いつもSOCKET_ERRORを返す」
ということを言いたかったんじゃないかと思う。
とすると、888も896も898以降も、みんなわかってるのに言葉のあやでひっかかってただけかも。
日本語勉強しないとね>俺も
0916名無しさん@接続しっぱなしNGNG
>>845
http://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
>>917
何に使うの?
0919888NGNG
885=888です。
>>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
とか見ると「非同期(ノンブロッキング)」とか書いてあるけど…。
0921919NGNG
>>920
>って?非同期=ノンブロッキングではないってこと?
ないです。891さんの言うとおり、やっぱりよく間違えられるんでしょう。
「UNIXネットワークプログラミング第2版Vol1」によると、入出力を扱う手法はブロッキング、ノンブロッキング、多重化(select と poll のこと)、シグナル駆動I/O、非同期I/O という5つの方法があって、
非同期I/O は aio_read、aio_write とかいうものを使う方法だそうです。Windows ではたぶん WriteFileEx と ReadFileEx で OVERLAPPED を指定した状態が、それに相当するのではないかと。
0922デフォルトの名無しさんNGNG
>>921
あ、そうなんですか。
うーん。何やら難しいですね。。。
0923909NGNG
>>919
俺は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(実際は同じ値)を返すらしい。
0924909NGNG
>>921
使い分けだと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デフォルトの名無しさんNGNG
APIレベルの話なんでねえの?
0927名無しさん@接続しっぱなしNGNG
>>924
Stevens本はpthreadを視野に入れてないので、
(というかStevensの使っているUNIXにはまともなthreadがなかった)

> 多重化(select と poll のこと)

でもいいのですが、Windowsの場合は、

> 多重化: ノンブロッキング + (select or event)

だけじゃなくて、多重化を実現する方法に、
マルチスレッドも入るんじゃないでしょうか?
(それからノンブロッキングは必須でない。多重化をより稼げるけど)
0928名無しさん@接続しっぱなしNGNG
>>926
gethostbyname(3)もsend(2)もどっちもAPIじゃん?
0929名無しさん@接続しっぱなしNGNG
>>926
ん?
「send/recv(write/read)レベルの話なんでねえの?」
「UNIXでいうところのsystem callレベルの話なんでねえの?」
と言っているのかな?

そこに限ってしまうと同期/非同期と
ブロッキング/ノンブロッキングの区別がなくなるから、
同期/非同期はもう少し大きい枠組みで理解しよう、
というのが、分かりにくかったかも知れないけど>>925の主旨でした。
0930デフォルトの名無しさんNGNG
このスレで扱ってる同期/非同期は、
「指示した動作の、完了を知る方法の違い」
でしかないと思った。

TCP/socketはネットワークアクセスのためのAPIだけど、
APIになった瞬間にネットワークの存在は関知しなくてもいいでしょ。
というか、知りえないでしょう。

925の言う「どのレベルでのinteractionか」というくだりの、
レベルの違いっていうのが、プログラムから見て意味あんのか疑問。
0931コロ助NGNG
すいません。WinSockの質問をしたいのですが。
サーバーに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
>>932
唯一、エラーが出ているのは、サーバーと接続(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
lpServEnt = getservbyname("http", "tcp");
でhttpを指定すると接続されないのですが、ftp、smtpだとうまく接続されます。

WinSockはhttp接続の際なにか特別な処理をしないといけないのでしょうか?
0935デフォルトの名無しさんNGNG
>>933
WSAGetLastError() ぐらい知らんのかよ...。
0936デフォルトの名無しさんNGNG
>>934
gethostbyname()
0937935NGNG
すまん勘違いだった。
0938デフォルトの名無しさんNGNG
( ●∀●) コロ助にSYNパケットを送るモナ
0939デフォルトの名無しさんNGNG
実は80はwell-known-portに含まれず、servicesにhttpが書いてない罠。
0940デフォルトの名無しさんNGNG
>>939
その時は、80 をセットするようにしてるみたいだけど ?
ちゃんと見てないけど、ロジックがおかしいのか ?
0941デフォルトの名無しさんNGNG
で、結局WSAGetLastError()は何を返してるんだ?
それと、相手はちゃんと存在するのか?
0942デフォルトの名無しさんNGNG
っつーか、ネットワークプログラミングしてるくらいなら、
パケットダンピングくらいしろよ。
0943デフォルトの名無しさんNGNG
>>941
取りあえず、WSAEWOULDBLOCK じゃねーのか ?
WSAAsyncSelect() で Non-Blocking-Mode にしちゃってるから、当たり前だと思う。
ftp/smtp がちゃんと動いている方が不思議だ。
0944rubyist@カラアゲうまうまNGNG
とっとと教えればキレることもねーんだよ馬鹿
俺が下手に出て教えてくれっていってんだから
すぐ書けばいいだろボケ
0945デフォルトの名無しさんNGNG
いつみてもワラタ
0946デフォルトの名無しさんNGNG
inet_ntoa()とかマルチスレッドで使うときどうしてます?
inet_ntoa_r()無いので結局内部バッファ使わないのを自作してしまったんだけど
これ程度でmutexなどで排他かけるのもモタイナーイ気がして・・
0947デフォルトの名無しさんNGNG
>>946
環境は ? マルチスレッドサポートしてるシステムなら、普通 inet_ntoa() もスレッドセーフになってると思うが。
0948デフォルトの名無しさんNGNG
>>947
Solaris2.5/8,AIX4.3です
0949デフォルトの名無しさんNGNG
>>948
5年も前の環境じゃしょうがないかも知れないな。
素直に、排他制御しとくべし。
0950948NGNG
やっぱりみなさん当時はそうしてたんでしょうかね・・
0951デフォルトの名無しさんNGNG
つーか、普通その手のライブラリってTLS(TSS)に内部バッファ確保するようになってないか普通?
5年前の段階でTLSもないのがまともなOS面してたとも思えないんだが。
0952デフォルトの名無しさんNGNG
TLSはwin95にすらあったねえ。
0953デフォルトの名無しさんNGNG
なんでそのマシンでmanして調べてみないの?
0954デフォルトの名無しさんNGNG
windowsでは バークレーソケットではパフォーマンスでないのかな。。。
http://www-6.ibm.com/jp/developerworks/linux/020208/j_l-rt6.html#1

たしかに ab(ApacheBench) で windows上の apache と Linux上の apacheで
速度を計測してみると、ハードウェアは Windowsの方が上なのに3倍近く差が
でたしなぁ。。。 こんなの変ですよ!ゲイツさん!
0955デフォルトの名無しさんNGNG
Apacheのバージョンが不明だが、もし1.3系ならWin32で遅いのは
socketよりむしろApacheがタコだから
0956デフォルトの名無しさんNGNG

>>947
『スレッドセーフ』は各スレッドで排他制御無しで使えるって意味ではないという罠。
0957デフォルトの名無しさんNGNG
そろそろ新スレの季節ですが、、、
だれかテンプレまとめて。
なんならスレを立ててもいいから。
0958デフォルトの名無しさんNGNG
>>946
inet_ntop()を使うべし
0959デフォルトの名無しさんNGNG
rawソケットはどうして管理者権限でなければ使えないんでしょうか・・・
0960デフォルトの名無しさんNGNG
DoSアタックとかに使えるからでないの.
0961デフォルトの名無しさんNGNG
あ、技術的な問題じゃなかったんですか
0962デフォルトの名無しさんNGNG
詳しくはないけど、セキュリティ的に問題アリアリなんでないのかな。
あるいはその可能性があるとか。
0963デフォルトの名無しさんNGNG
bpfがrootにしか使えないのと似たようなもんだろ
0964デフォルトの名無しさんNGNG
>>960-962
パケット盗み見から始まって、IP / MAC アドレス詐称など何でもありありだからだよーん。
0965デフォルトの名無しさんNGNG
>sock_wait_established
>This macro has been deprecated in Dynamic C version 7.20.
>このマクロは動的なCバージョン7.20で大いに非難されました。

質問です。これは使わない方が良いということでしょうか。
たしかにsock_err ラベルにgotoされると構造化し難いですが。
代替関数は何になりますか?
0966デフォルトの名無しさんNGNG
>>963
bpfは /dev/bpf* がopenさえできればrootじゃなくても使えるよ。
raw socketは要rootだが。
0967デフォルトの名無しさんNGNG
>>966
ふつーrootしか開けないようなPermissionになってない?
0968真面目な開発者NGNG
すいません、質問があります。

たぶん、WINSOCKに関してだと思います。

今日WINDOWSを起動したら、IEでインターネットが見れなくなりました。
ネットスケープやOPERAでは普通に見れるのに、IEだと見れなくなりました。

今WINSOCKの勉強と開発をしています。
もしかしてWINSOCKの開発中に、不適切なプログラムを組んだために、IEにエラーが起こってしまったのでしょうか?
0969デフォルトの名無しさんNGNG
開発者を辞めたほうがいいのでは・・・
0970デフォルトの名無しさんNGNG
>>968
PC初心者板へどうぞ(藁
0971デフォルトの名無しさんNGNG
>>968
> もしかしてWINSOCKの開発中に、

結構すごい香具師だな。
0972デフォルトの名無しさんNGNG
きっと全角版を開発してるんだろう。
0973デフォルトの名無しさんNGNG
980の人は次スレたててくらはい
0974デフォルトの名無しさんNGNG
ネスケやオペラはwinsock使ってなかったのか。初耳。
0975デフォルトの名無しさんNGNG
(;´Д`) ハァハァ
0976デフォルトの名無しさんNGNG
winsockのどの部分をどう改造したかおせーろ。
0977デフォルトの名無しさんNGNG
SMBの登場以来、スレの流れがおかしい気がする
0978デフォルトの名無しさんNGNG
Win (Winsock) でサーバプログラム(TCP/IP)作ってるんだけど、
特定のクライアントからのコネクションを拒否する方法ってある?
Raw ソケットは使わない前提で。
ちなみに今は accept() にてリモートホストの IP アドレスをチェックして
弾くようにしてるんだけど、それだと一瞬クラアイントとコネクション張ってしまう
状態になっちゃうから、あまりよろしくないので。
0979デフォルトの名無しさんNGNG
>>978
WSAAcceptで出来たような気がする
0980デフォルトの名無しさんNGNG
>>979
ありがとう。
今 Winsock 1.1 使ってるので、そうなると WSAAccept は使えないからダメみたい。
(一応 Win95 もサポートしたいので。)
後に Linux バージョンも作る予定だけど、自アプリでやるのは邪道なのかな?
TCPWrapper や tcpserver とかにフィルタリングさせる方が一般的なんだよね?
0981デフォルトの名無しさんNGNG
逆に聞きたいけどLinuxだと出来るの?
0982デフォルトの名無しさんNGNG
>>981
まだ調べてないからわかんない。詳しい人教えて〜。
やるなら Raw ソケットで直にIPパケット使うことになるかも。
でもそこまでするのは面倒になりそうだから自前でやるのやめようかなと思ってる。
0983デフォルトの名無しさんNGNG
95でもwinsock2は使える。
0984デフォルトの名無しさんNGNG
>>983
>95でもwinsock2は使える。
ホント?
IE とか何らかのソフトインストールすればってこと? 教えて。
その手順が簡単なら考えてみたい。(PC に不慣れな人が出来るレベルなら)
可能なら自アプリのインストーラに組み込めればベストかな。
0985デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/windows/dun1_3/
0986デフォルトの名無しさんNGNG
http://www.microsoft.com/windows95/downloads/contents/WURecommended/S_WUNetworking/dunwinsky2k/Default.asp
0987デフォルトの名無しさんNGNG
http://www.microsoft.com/windows95/downloads/contents/WUAdminTools/S_WUNetworkingTools/W95Sockets2/Default.asp
0988デフォルトの名無しさんNGNG
>>985>>986
ありがとう。よく見てないけど後で調査してみます。
0989デフォルトの名無しさんNGNG
>>987
重ね重ねお世話さまです。ここからダウロードできるね。
ライセンス等も考慮して検討してみます。
0990デフォルトの名無しさんNGNG
Winsock2には再配布可能なバージョンもあるらしいんだけど
リンクが見つからない…
ところで次スレは?
0991デフォルトの名無しさんNGNG
ネットワークプログラミング相談室 Port5
http://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
0992デフォルトの名無しさんNGNG
>>991
乙〜
0993ヘッケルリンクNGNG
-
0994デフォルトの名無しさんNGNG
/
0995デフォルトの名無しさんNGNG
-
0996デフォルトの名無しさんNGNG
\
0997次スレ案内NGNG
ネットワークプログラミング相談室 Port5
http://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
0998次スレ案内NGNG
ネットワークプログラミング相談室 Port5
http://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
0999次スレ案内NGNG
ネットワークプログラミング相談室 Port5
http://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
1000次スレ案内NGNG
ネットワークプログラミング相談室 Port5
http://pc3.2ch.net/test/read.cgi/tech/1040220302/l50
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。