ネットワークプログラミング相談室 Port5
■ このスレッドは過去ログ倉庫に格納されています
0001Unknown
NGNGProgramming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ
http://tangentsoft.net/wskfaq/
過去スレ:
ネットワークプログラミング相談室
http://pc.2ch.net/tech/kako/970/970344582.html
ネットワークプログラミング相談室 Port2
http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
ネットワークプログラミング相談室 Port3
http://pc3.2ch.net/test/read.cgi/tech/1023359282/
ネットワークプログラミング相談室 Port4
http://pc3.2ch.net/test/read.cgi/tech/1034236536/
0002Unknown
NGNGUNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/ref=pd_bxgy_text_2/249-2677107-1089124
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/ref=pd_sim_dp_3/249-2677107-1089124
The Implementation (TCP/IP Illustrated, Volume 2)
http://www.amazon.co.jp/exec/obidos/ASIN/020163354X/ref=pd_sim_dp_4/249-2677107-1089124
Linuxソケットプログラミング―ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/qid=1034258224/sr=1-4/ref=sr_1_2_4/249-2677107-1089124
0003ナナシ
NGNGHTTPでサーバーに接続します。
POST http://game2.2ch.net/test/bbs.cgi HTTP/1.1
Host: game2.2ch.net
Content-Type: application/x-www-form-urlencoded
Content-Length: %
Accept: text/*
"Cookie: submit=%s&bbs=%s&key=%s&time=%lu&MESSAGE=%s&FROM=%s&mail=%s",UrlEncode("書き込む"),"ghard","1037285423",ltime,UrlEncode("kakikomi"),UrlEncode("aaa"),UrlEncode("aaa")
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG荒しツール作成ご苦労さん
0006デフォルトの名無しさん
NGNG0007ナナシ
NGNGしてますよ。
INETSPYで。
でも、サーバーに転送しても、返信がこないんですよ・・・。
サーバーには接続できていますし、送信もできていますが。
もちろん、私の送っているヘッダー&クッキーに問題があるのはわかってますが・・・。
詳しい方いませんか?
0008ナナシ
NGNG失礼な・・・。
ネットワークの勉強に2ちゃんねるビューワーが良いと思っているだけです。
あと、パケットキャプチャーの内容で出たままを送っても駄目ですよね。
POST http://game2.2ch.net/test/bbs.cgi HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://game2.2ch.net/ghard/index.html
Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
Host: game2.2ch.net
Content-Length: 376
Proxy-Connection: Keep-Alive
Pragma: no-cache
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGねえ、まだ 3 なんだから、ちょっと上見りゃ...
> 主にソケットに関しての質疑応答スレです。
って、書いてあるんだけど、見えない ?
さっさと、http://www.monazilla.org/ に行けよ。
0011デフォルトの名無しさん
NGNGたしかに、2chの、とくに書き込みは規制がひどすぎて、ある意味勉強にナルナ。
まあ、勉強とかいいつつ、RFCも見ない香具師の云うことなど信用しないが。
0012ナナシ
NGNGそのMONAZILLAには、HTTP転送に関する記述は無いですから。
まぁ、必死に勉強中です。
0013デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1012544484/
もあるのにね。
ここでの話題ははソケットのみ、では無いけど、特定サーバの話なら
どう考えてもそのサーバの話題を扱ってるスレに行った方が有益だと思う。
0014デフォルトの名無しさん
NGNGいけないようですが、実際には 2ch.net のように数字で
始まるドメイン名も登録されています。
どこかでRFCが改訂されたのでしょうか?
0015デフォルトの名無しさん
NGNG>
> って、書いてあるんだけど、見えない ?
にしては、スレタイがそぐわないと思う。
0016デフォルトの名無しさん
NGNGperlでメール送信するプログラムを書いています。
Net::SMTPを使用して、
$smtp = Net::SMTP->new('127.0.0.1');
$smtp->mail("info\@test.com");
$smtp->to("$To");
$smtp->data();
$smtp->datasend("Content-Transfer-Encoding: 7bit\n");
$smtp->datasend("Content-Type: text/plain; charset=\"iso-2022-jp\"\n");
$smtp->datasend("From:\"$Name\"\n");
$smtp->datasend("To:$To\n");
$smtp->datasend("Subject:$Sub\n");
$smtp->datasend("\n");
$smtp->datasend("$Value\n");
$smtp->dataend();
$smtp->quit;
このようにしているのですが、$Nameに"東西新聞"などと入れておくと、
メーラーのほうには
From: "東西新聞"@mail1.test.com
という風に差出人の名前の下にメールサーバのアドレスがついてしまいます。
これを消すにはどうしたらよいのでしょうか?
またReturn-Pathを変更したいと思い
$smtp->mail("info\@test.com");の
[email protected]の部分をいろいろ変えてみるのですが、
送れるときと送れない時があります。
これはどういった現象だと思われますでしょうか?
できたらここに自由にメールアドレスを設定できるようにしたいのです。
0017デフォルトの名無しさん
NGNGFrom 偽装した SPAM でも送りたいのですか?
0018デフォルトの名無しさん
NGNG▀█▄
▄▄▄████▀ █
▄ ▄███▄ █▄
▀▄
█▀ █ ▄▄ █▄██
█▀ ▀█ ▄ █
▄████▄▄
█▄▄████▀
█▀█▀ █
██▄██▀▀ ▀██
█▀▀ ▀▄ ▄██
█ ▀▀ █ █▀
█ █▄ █ ██
▄████ ▀█
▀██▀
█▄▄█▀ █▄██ █
█ █ ██▄ █▄
███▀ ██▀ █
▀███▀ ▀▄ ██
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/
Winsock Programmer's FAQ も日本語訳があるじゃん。
0021デフォルトの名無しさん
NGNGおお、比較的最近公開されたんだね。
読んだことなかったよ。ありがとう。
0022デフォルトの名無しさん
NGNGThanks!
0023デフォルトの名無しさん
NGNGそういうことです。
Fromを偽造して
メールは一括してこちらから代行送信しますが、
返信は各メールアドレスに返せるようにしたいのです
0024デフォルトの名無しさん
NGNG返信先を変えたいだけなら、Fromを偽造せんでもReply-Toでいいんじゃないの?
0025デフォルトの名無しさん
NGNGLinuxにサーバーソフトを置いて、Winでクライアントを動かしていますが、
ときおり、サーバーマシン(Linux)でハードディスクへのアクセスが発生して、
数秒間通信がストップしてしまいます。(頻度は1〜2分に一回くらい)
これは原因は何が考えられるでしょうか?
サーバープログラムとクライアントプログラムを両方Winで動かして、
ローカルで通信をした場合は、この現象が起こらないので、プログラムの
バグではないと思います。
それとLinux板で下のページを教えてもらって、書いてある通りに設定を
したのですが、直りませんでした。
http://www.zdnet.co.jp/help/tips/linux/l0366.html
0026名無しさん@XEmacs
NGNG余分なdaemonやprogramは終了して試してみれ。singleで立ち上げたりさ。
正直、板違いだと思うので、続きはLinux版で。
# しかし1〜2分に一度数秒間とはひどいの〜。
0027デフォルトの名無しさん
NGNGアドバイスありがとうございます。
そうしてみます。
サーバーにpingを打ったり、送られてきたデータを返すだけの軽いサーバー
プログラムを作ったりしたときは、こういう現象は起こらないので、
最初はプログラムのせいかと思ったのですが、Winで動かすと、そういう
現象は起こらないし、なんだかよく分からない状況です。
0028デフォルトの名無しさん
NGNGレジストリから取得するって
マジなんですか?
0029デフォルトの名無しさん
NGNGhttp://support.microsoft.com/default.aspx?scid=kb;ja;171320
> Windows Sockets の gethostbyname API は、コンピュータに割り当てられた IP アドレスを取得するために使用できます。
検索したら、こう書いてあったよ。
0030デフォルトの名無しさん
NGNGこのようにするとプログラムの中の$STDINというところにその文字列が入るんだと言われたんです、どうもうまくいってないようです。
他の人に./○ < 文字列という形が標準入力だと言われたんですが、その方法では実行するとそのようなファイルやディレクトリはありませんとエラーが出てしまいます。
どのようにやるのがよいのでしょうか?
よろしくおねがいします。
003130
NGNG宜しくお願いします。
0032デフォルトの名無しさん
NGNG$echo '文字列' > hoge
$○.pl < hoge
ってことか?
003330
NGNGありがとうございます。
1かいの操作では出来ないのでしょうか?
ブラウザに表示するHTMLを書き出すPERLのプログラムから`./○.pl`として外部のプログラムを実行して、その実行するときに変数も一緒に渡したいのですが。
どのようにしたらよいのでしょうか?
0034デフォルトの名無しさん
NGNG激しくスレ違い
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGcat '文字列' | ○.pl
> ブラウザに表示するHTMLを書...
引き数でもなんでも使えばよかろう。
だいたいここでする話じゃない。
もう来るなYO!
0037デフォルトの名無しさん
NGNG>>29
別にWin専用じゃないけどな。
0038デフォルトの名無しさん
NGNG俺はdnsipとかをつかってるが。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGょうか?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGプログラム中で標準入力から読み込む処理を入れて、
管理者に毎回入力してもらう。
0043名無しさん@XEmacs
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGGetIfTableとか、そういったAPIを使えば
MIB-IIインターフェースの様々な情報を得ることが出来ますが、
その中で、特定のインターフェースを通じて送られた・受け取ったパケット数が
わかる模様です。
この情報を他のライブラリを使用して知るにはどうすれば出来ますか?
0046デフォルトの名無しさん
NGNGいずれにしろ、目的不明の質問だな
0047デフォルトの名無しさん
NGNGをjavaで取得することは可能なのでしょうか?よろしければ教えてください。
よろしくお願いします。
0048もうヤフオクの質問はお腹いっぱい
NGNG0049名無しさん@Emacs
NGNG0050名無しさん@Emacs
NGNG書評キボンヌ
0051名無しさん@Emacs
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGIPとして妥当かを判定する。
○"192.168.1.1"
×"xyz.168.1.1",".192.168.1","aiueo"...
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGお前は2度とプログラム書くな。
0056デフォルトの名無しさん
NGNG"192.168.1"ってのはIPv4の正当なアドレスですが、何か?
0057デフォルトの名無しさん
NGNGふつー妥当じゃないだろ。
0058デフォルトの名無しさん
NGNG私もそう思ったが、よく見ると、妥当でない例のほうには
最初にピリオドが入っているぞ。
0059デフォルトの名無しさん
NGNGWindows98とXP/2kで挙動が変わったりしますか?
Win98ではなぜかselect内部で例外が発生してしまいます。
0060デフォルトの名無しさん
NGNGwin98はwinsock2対応している筈。
できる限りwinsock2を使ったほうがいいと思う。
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG高速なだけでなく、失敗したら再開しますね。
高速化と冗長化(?いい言葉浮かばなかった)の方法について教えて下さい。
またそれらのアルゴリズムはダウンロードのみに有効でしょうか?
アップロードにも同様でしょうか?
0064デフォルトの名無しさん
NGNG再開については、タイムアウトの条件を細かく設定しているだけ。
高速にダウンロードといっても、普通に作ってもいいんでないかな。
光回線でなければ差はでない気がする。
多数のコネクションを捌くサーバーはそれこそいろんな工夫があるけど。
0065デフォの名無しさん
NGNG使ってるんですが、実行後に表示されるのUDPの送信パケット数が、実行前後で
ifconfigを使って差分をとった値とあきらかに違うんだけど、原因は何が
考えられるでしょうか。
ソースを見たんだけど送信パケット数messages_sentが送信処理のとこで
使われてて、以下の様にあるんだけど、Netperfに問題があるようには
思えなかった。カーネルで落としてるの?それとも別の理由?
while (!times_up) {
略
if ((len=send(data_socket,
send_ring->buffer_ptr,
send_size,
0)) != send_size) {
if ((len >= 0) || (errno == EINTR))
break;
if (errno == ENOBUFS) {
failed_sends++;
continue;
}
perror("dg_send: data send error");
exit(1);
}
messages_sent++;
略
send_ring = send_ring->next;
}
長くてスマソ
0066065
NGNGnetperfは2台のホストで動作させるもので、受信側マシンで受信用サーバを
立ち上げといて、送信側でコマンドラインから実行するものなのね。
で、UDPの場合だとNetperfの実行結果には、送信側の送信数と受信側の受信数が
両方表示されるんだけど、その受信側の受信数は、
送信側マシン上で実行前後のifconfigでのTX Packetsの差分をとった値と
一致してまふ。
0067デフォルトの名無しさん
NGNGBSDのドライバで言うところのOACTIVEに相当する処理が(まだ)ないのよねえ。
0068デフォルトの名無しさん
NGNGRange指定してるんでしょ?
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG実装が終了したに -1500 SMB。
0072065
NGNGThanks!
そのとおりOSはLinuxでし。書く情報少なすぎ<自分
ちなみに2台のPCの接続形態はFastEther対応のスイッチングHUBで、
パケットサイズは64です。
OACTIVEって何?って思ってググってみたら
http://mail-index.netbsd.org/current-users/1995/01/18/0010.html
とか見ると、カードのバッファが溢れたらOACTIVEってのをsend()の
返り値として返すってこと?
つことはLinuxカーネルでぼろぼろ落としててそれがどこにも
値として残らないってこと?それはあんまり鴨。
ちなみに65のソースのfailed_sendsは実行後0で、
ifconfigのエラー関係の統計は送信側も受信側も全部0でつ。
(errors:0 dropped:0 overruns:0 carrier:0)
007367
NGNG> てこと?
なかなか鋭いな。実際には、OACTIVE っていうのはインターフェースの状態に
過ぎず、パケット送信処理が動作中だからさらに送信処理を駆動する必要がな
いってことを上位層に伝えているだけなんだけどね。
OACTIVE だからといって send() はすぐにエラーを返すわけじゃなくて、
setsockopt() の SO_SNDBUF で指定した送信量まではカーネルでバッファリン
グしてくれるから send() は成功するんだ。もし、それ以上送信しようとした
場合は、ノンブロッキング・モードなら send() は EAGAIN (EWOULDBLOCK) を
返す。あるいはブロッキング・モードなら、送信処理が進むまで、send() の
中でスリープするから、送信は(おそらく)成功する。
だから、Linux に OACTIVEに相当する処理がないっていう前の書き込みは、語
弊があったかな。正確には、UDP の場合、SO_SNDBUF によるカーネル内での流
量制御が行なわれず、溢れた分を捨てて知らんぷりするって言った方がよかっ
たな。
> つことはLinuxカーネルでぼろぼろ落としててそれがどこにも
> 値として残らないってこと?
少なくともアプリケーションの側からは、送信されずにカーネル内部で捨てら
れてしまっいることはさっぱり分からない。アプリケーションで送信したパケッ
ト数と、システム全体で送信した UDP パケットの総数の差をとれば、だいた
いどれくらい捨てられたか分からなくもないが、まあ、そんなことしてもあま
り意味ないしな。
0074デフォルトの名無しさん
NGNG単に他のアプリケーションがUDPを送受信しただけじゃないの?
そんな簡単にパケット捨てられてたまるかよ。
0075デフォルトの名無しさん
NGNGUDP は捨てられても不思議じゃない。
Windows はちょっと CPU 付加が高いと平気で捨てるし。
0076デフォルトの名無しさん
NGNGUDPは確実に届く保証が無いことを前提にしてプログラムすべき
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGなんか、数字が違うとか、言葉で説明されてもよくわからん。
実際の数字を見せれ。
多いのか少ないのかもよくわからんし。
0079デフォルトの名無しさん
NGNG>れてしまっいることはさっぱり分からない。
ENOBUFSでわかるんちゃうの?
0080デフォルトの名無しさん
NGNGENOBUFS返すかどうかは実装依存なんでは・・・
つかENOBUFSってシステムリソースが不足したときにしか
見たことないや。freebsdだとmbufが枯渇したとか。
0081デフォルトの名無しさん
NGNGudp.cのudp_sendmsgにそれらしい記述がある。
netperfでfailed_sendsがゼロであるにもかかわらず、数字が違うとは
よくわからん話やな。
他のアプリが送受信しただけだと思いたいけど。
0082デフォルトの名無しさん
NGNG送信側は 500Mbps などという (100Mbps 以上の) 値が出るから。
line speed 以上のデータなんて当然送れるわけないから、これらは
みんなカーネルの中で黙って捨てられてるってことなのねん。
Linux 以外の UNIX だと、100Mbps を越える値にはならない。黙って
勝手に捨てるなんてことはしないから当たり前だが。
>>79,81
こういう場合、Linux では ENOBUFS なんて返さん。もし返すなら、
65のソースでmessages_sentが加算されることなんてない筈だろ。
ちゃんとソース読め。
>>81
その udp_sendmsg の ENOBUFS 返す処理は、このケースじゃなくて、
カーネルの中でリソースが枯渇した時じゃないのか?
つーか、Linux 使ってるヤシにとって、これくらい常識だと思ってたん
だけど、そうじゃないのか? ネットワーク・ベンチマークしてみればすぐ
分かる話なんだが、おまえら性能評価ってやりませんか、そうですか。
0083デフォルトの名無しさん
NGNGハァ?ここは2ちゃんねるですよ?
馬鹿は休み休みにおながいします。あ、学生はもう休みですが。
0084デフォルトの名無しさん
NGNGお前のソースの読み方が間違ってるw
0085デフォルトの名無しさん
NGNG学生==馬鹿ってこと?
0086デフォルトの名無しさん
NGNGもしかして、ローカルに接続してないか?w
うち、10MのNICだけど、9.4mってでたぞ。ちゃんと。2つの端末間で。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG人口少ないけど、居るには居るよ。
ただし、彼らはここに来ない。
0089デフォルトの名無しさん
NGNG65のソースを、インデントつきで再引用してあげよう。
01:while (!times_up) {
02: if ((len = send(data_socket, send_ring->buffer_ptr, send_size, 0))
03: != send_size) {
04: if ((len >= 0) || (errno == EINTR))
05: break;
06: if (errno == ENOBUFS) {
07: failed_sends++;
08: continue;
09: }
10: perror("dg_send: data send error");
11: exit(1);
12: }
13: messages_sent++;
14: 略
15: send_ring = send_ring->next;
16:}
このソースで、send()がENOBUFSエラーで終る場合に、messages_sentが
増えると主張するわけですね。
おそれいりました。とりあえず、8行めのcontinueから、どうやって
13行目に飛ぶのか説明しる。
>>86
netperfの標準スクリプトを一式走らせているので、間違ってもそれはない
(TCPでは、納得のいく値が出ている)。
0090デフォルトの名無しさん
NGNGご苦労さんw
>send()がENOBUFSエラーで終る場合に、messages_sentが
>増えると主張するわけですね。
誰もそんなこと言ってません。
>Linux では ENOBUFS なんて返さん。
ソース見ただけで、これはわからんだろ?
冷静に考えろよw
こういう場合とか、このケースとかどういう場合、ケースなのよ?
そして、netperfの結果を教えて欲しいわ。正確な奴。
0091デフォルトの名無しさん
NGNGもう、よくわからんわ
0092デフォルトの名無しさん
NGNG典型的Linux厨だなお前ら。
自分の知識が否定された程度で本気で切れるな。
お前らごときの知識・スキルが社会で役に立つことなんてねえ…
0093デフォルトの名無しさん
NGNG横からしゃしゃり出てきて、お説教ですか?
ご苦労様です。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGネットワーク系はみんなそうだよ
0097デフォルトの名無しさん
NGNG255.255.255.255だとlimited broadcastで同一ネット内ですよね。
ルータにでもお願いするのでしょうか。
0098デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
そこまで知ってて特定ネットワークのブロードキャストアドレスというのは思いつかんのか?
directed broadcastで調べてみ。
009997
NGNGdirect broadcastって
別ネットのネットワークアドレス指定 + ... + .255
でしか?
だと、ブロードキャストしてくれないみたいです。ルータの仕様かも。
フルでIP指定すると届くネットなんですけど。
0100デフォルトの名無しさん
NGNG> ソース見ただけで、これはわからんだろ?
ソースと、72の結果(failed_sendsが0)を見比べれば、わかります。
> そして、netperfの結果を教えて欲しいわ。正確な奴。
自分の手元で試してみることをお勧めするけど、まあいいや、
以下は netperf の udp_stream_script の結果。
./netperf -l 60 -H 192.168.0.4 -i 10,2 -I 99,10 -t UDP_STREAM -- -m 1024 -s 32768 -S 32768
UDP UNIDIRECTIONAL SEND TEST to 192.168.0.4 : +/-5.0% @ 99% conf.
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
131070 1024 59.99 4088743 0 558.32
131070 59.99 683564 93.34
この結果が示してるのは、100BASE-T のネットークに対して 1 度の
エラーもなく 558.32Mbps で送信が成功していることと、受信側では
そのうちの 93.34Mbps 分のパケットを受けとってるってことですね。
ちなみにこれは、この2ホストのみからなるprivateなLANで実験した
結果なので、コリジョンとかそういう問題はありえません。
すなわち送信側のLinuxカーネルは、少なくとも 458.32Mbps、おそらく
464.98Mbps 分のデータを、エラーも示さず、ネットワークに送出する
こともなく握り潰してるってことになりますね。
65だけじゃなくて、86=91のところでも同様な結果になったみたいね。
0101デフォルトの名無しさん
NGNG> 別ネットのネットワークアドレス指定 + ... + .255
> でしか?
255とはかぎらないが。
ホストアドレスがオール1。
> だと、ブロードキャストしてくれないみたいです。ルータの仕様かも。
> フルでIP指定すると届くネットなんですけど。
どっちかつーと普通蹴るだろ。smurf攻撃対策だしな。
必要ならルータの設定汁。
■ このスレッドは過去ログ倉庫に格納されています