|
はじめて質問させていただきます。 本ページで色々勉強させて頂いてます(感謝) 当方のレベル)初心者 winsockを用いたマルチスレッドクラサバ作成調査中 クライアント・サーバ間の通信確立方法の基本は理解(してるつもり) 内容) クライアントからの接続要求が複数同時に(理論的に全く同時はありえないかもしれませんが)サーバにきた場合、サーバ側のリクエスト待ちプロセス内のlisten関数は、どのようにこの要求を処理するのでしょうか?つまり、全く同時のアクセスに対して、listen関数が作る待ち行列(キュー)にはどう格納されるのでしょうか? 要求受付後は、各クライアント毎に処理を並行に行う(マルチスレッド) ことができますが、要求受付部のlisten関数はマルチ対応なのかどうか 、前出の全く同時の接続要求はどう処理されるのかが分からないので、ご存知の方が、是非ご教授いただければありがたいです。 質問内容が初歩的かもしれませんが、よろしくお願いしますm(__)m |
|
>>1975 ENO マルチポストは禁止です。 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse >>1976 isaq 要は、listen が thread safe かどうか、ということでしょうか? 複数のスレッドが同時にクライアントとの接続を取り合ったりしないのか? と いう意味かと思いますが、listen は OS へ「クライアントからの接続を受け 付けなさいと」命令するだけです。それに対して、accept は OS がキュー イングしておいた待ち行列から、先頭のクライアントを取り出す命令。 というわけで、listen や accpet のマニュアルを見て、thread safe か どうかを確かめましょう。 FreeBSD ならばマニュアルに http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=listen&dir=jpman-4.3.0%2Fman 非スレッドライブラリ listen() は listen システムコールとして実装されています。 スレッドライブラリでは、 listen システムコールは _thread_sys_listen() に アセンブルされ、 listen() は読み書きについて s をロックしてから、 _thread_sys_listen() を呼び出す関数として実装されています。戻る前に listen() は s をアンロックします。 とあります。Windows は知りませんが、マニュアルに書いてあるのでは ないでしょうか。 あるいは、「スレッド」という用語を、pthread などの thread でなく、 単に「並行動作」という意味で使ってますか? |
|
skel.103Mです。いつもお世話になっております。 さて、 http://X68000.startshop.co.jp/~68user/Cgi-room/ の「MXレコードのお話」についてですが、質問させていただきたい ことがあります。 メールアドレスは、「{ユーザー名}@{ホスト名}」という構成をし ていますが、この{ホスト名}の部分に記述されたホストが実際に存 在する場合、即座に(MXレコードを参照せずに)そのホストに送ら れるのでしょうか。それとも、{ホスト名}に記述されたホストが実 際に存在したとしても、存在しないホストと同様に、まずMXレコー ドを参照し、その結果現れたホストに送られるのでしょうか。 先述したページを読むと、{ホスト名}の部分が存在しない場合に*のみ*、 MXレコードを参照し、その結果現れたホストに送られるものである、 と書いてあるように思えました。実際、これは(少なくとも私にとっ ては)直感に反しないことで、そうなのかなと納得してました。と ころが、某メーリングリスト宛てのメールが私に届きまして、ヘッ ダを見ると、To: の欄のメールアドレスのホスト名の部分(@より右側)が 実際に存在するホスト名であるにもかかわらず、Received: にその ホスト名が載ってない?!…ということがありましたので。 |
|
68user殿 ご指摘の通り、listenがthread safeかどうかが知りたかったわけです。 教えていただいたURL参考にさせていただき、もう一度調べ直してみて、分からなければ質問させていただきます。 また分かりましたら、報告させていただきます。 分かりにくい質問を投げてしまったけれど、お返事ありがとうございました。 ちなみに、OS:Windows 2000 でクラサバ開発しているのですが、私が使っているwinsock関連書籍で ”WinSock2.0プログラミング 発行:ソフトバンクパブリッシング” というのがあリます。もしwinsockを初めて使おうとしている方がいましたら一読すると良いかもしれません。 |
|
>>1978 skel.103M > この{ホスト名}の部分に記述されたホストが実際に存在する場合、 > 即座に(MXレコードを参照せずに)そのホストに送られるのでしょうか。 1. IP アドレス直接指定なら、直接 IP アドレス宛に送信 (Ex. To: foo@<127.0.0.1>) 2. 1 がダメで、MX が引けたなら、優先順位を考慮して MX 宛に送信 3. 2 がダメで、A レコードが引けたなら (=正引きできた)、A レコード宛に送信 という順序だと思います。なので、MX が優先ですね。 多分、ここらへんは RFC 2821 に書いてあると思います。 # http://ring.riken.go.jp/pub/doc/RFC/rfc2821.txt |
|
どうも、skel.103Mです。ご返答どうもです。 メールアドレスと送信先ホストの件、了解しました。私なりに調べた ところ、RFC2821の「5. Address Resolution and Mail Handling」で、 > are generally discouraged. The lookup first attempts to locate an MX > record associated with the name. If a CNAME record is found instead, > the resulting name is processed as if it were the initial name. If > no MX records are found, but an A RR is found, the A RR is treated as > if it was associated with an implicit MX RR, with a preference of 0, > pointing to that host. If one or more MX RRs are found for a given > name, SMTP systems MUST NOT utilize any A RRs associated with that > name unless they are located using the MX RRs; the "implicit MX" rule > above applies only if there are no MX records present. If MX records > are present, but none of them are usable, this situation MUST be > reported as an error. とありますね。なるほど。ちなみに、RFC974にも似たような記述があり ましたね(現在はHISTORICですけど) ただ、分からないのは、なぜこのように定められているのか、その理 由が私にはよく分かりません。。私には直感に反するように思うんで すが…… |
|
「ソースを表示してみよう」で、 http://www.chailien.com/ が、正常表示されません。 |
|
>>1981 skel.103M たとえば UNIX マシンが数百台あるような環境があるとして、 % hostname host123.example.ac.jp % whoami user のとき % echo | mail foo@bar などとすると、 From: user@host123.example.ac.jp なメールが foo@bar 宛に届きます。 このままリプライをすると host123.example.ac.jp 宛に メールが送られますが、数百台全てのマシンに SMTP サーバを立ち上げておくのは現実的ではありません。 で、それらの MX を mail.example.ac.jp に指定しておけば、 From: user@host123.example.ac.jp であっても MX 宛に届きます。もちろんその際には MX レコードが A レコードより優先されなければいけません。 …という感じで僕は理解しておりますが、いかがでしょうか。 >>1982 匿名 どうもです。直しました。 |
|
skel.103Mです。68user様、ご返答どうもです。 >>1983 68user なるほど!よく分かりました。 そこで、実際にそうなっていることを確かめるために、某ネットの (すなわち大学以外の)マシンを使って以下の要領で実験を行って みました。 ・送信元ホスト:test.bounet.net ・宛先メールアドレス:s1080224@exist.u-aizu.ac.jp 正式なメールアドレスではなく、@の右側を実際に存在するホスト 名に改竄。 結果は以下のようになりました: ---------- 1. まずMXレコードを調べておく。 →@exist.u-aizu.ac.jpのアドレスに対応するMXレコードは mailhost.u-aizu.ac.jpである。 [bounet] % nslookup Default Server: localhost Address: 127.0.0.1 > set q=mx > exist.u-aizu.ac.jp. Server: localhost Address: 127.0.0.1 Non-authoritative answer: exist.u-aizu.ac.jp preference = 10, mail exchanger = mailhost.u-aizu.ac.jp Authoritative answers can be found from: …(省略)… [bounet] % 2. メールを送信。 [bounet] % telnet localhost 25 Trying 127.0.0.1... Connected to localhost.bounet.net. Escape character is '^]'. 220 test.bounet.net ESMTP Sendmail 8.11.3/***************; Thu, 24 May 2001 20:47:40 +0900 (JST) EHLO localhost 250-test.bounet.net Hello localhost.bounet.net [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP MAIL FROM: testerz@bounet.net 250 2.1.0 testerz@bounet.net... Sender ok RCPT TO: s1080224@exist.u-aizu.ac.jp 250 2.1.5 s1080224@exist.u-aizu.ac.jp... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: test X-Mailer: telnet JiKaUcHi (^^;;; This is a test mail. . 250 2.0.0 f4OBm4K02587 Message accepted for delivery quit 221 2.0.0 test.bounet.net closing connection Connection closed by foreign host. [bounet] % 3. 送信ログを確認する。 →配送先はexist.u-aizu.ac.jpでは*なく*、MXレコードとして指定され ているホストmailhost.u-aizu.ac.jpに配送された。 May 24 20:50:34 test sendmail[2587]: f4OBm4K02587: from=testerz@bounet.net, size=**, class=0, nrcpts=1, msgid=<200105241149.f4OBm4K02587@test.bounet.net>, proto=ESMTP, daemon=Daemon0, relay=localhost.bounet.net [127.0.0.1] May 24 20:50:41 test sendmail[2596]: f4OBm4K02587: to=s1080224@exist.u-aizu.ac.jp, ctladdr=testerz@bounet.net (****/****), delay=00:01:22, xdelay=00:00:07, mailer=esmtp, pri=30069, relay=mailhost.u-aizu.ac.jp. [163.143.1.43], dsn=2.0.0, stat=Sent (UAA23329 Message accepted for delivery) ---------- たしかに、MXレコードがAレコードより優先されていますね。 どうもありがとうございました。 これからもよろしくお願いします! |
|
お久しぶりです。 ちょっと思うところがあって、掲示板の検索をしたのですが、ふと疑問が出てきました。 http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi?query=http&whence=0&max=20&result=normal&sort=score とかしますと、>とか<とか"とかが、>とか<とか"e;と表示 されるみたいです。これは、仕様ですか? あと、同じページの最後に、webmaster@www2.startshop.co.jp と ありますが、このwww2は、http://x68000.startshop.co.jp/~68user/ から推測するに、間違いなのではないですか? 違ったら済みません。 |
|
初めて書き込みさせていただきます。 和文で,改行を空白に置換する方法を ご存知の方はいないでしょうか。 例) おはよう こんにちは こんばんは ↓ おはよう こんにちは こんばんは 目的は,ウェブページのフォームから送られた文章を, 表示するページの都合で,改行無しの文に変更することです。 よろしくお願いいたします。 |
|
>>1986 椎 HTMLならば加工するまでも無く改行が無視されますが? |
|
>>1985 へにか > >とか<とか"e;と表示されるみたいです。これは、仕様ですか? いえ、正しくは < > " と表示されるべきです。この掲示板の データ用の文書フィルタ http://www.namazu.org/doc/manual.html#doc-filter を作成したのですが、それが不十分な状態です。 > あと、同じページの最後に、webmaster@www2.startshop.co.jp と > ありますが こちらも正しくは 68user@X68000.startshop.co.jp です。これは… どこで設定するんだっけ。なんかコンパイル時に埋め込まれるような 気がしないでもないなぁ。 両方とも調べて直しておきます。ご指摘ありがとうございました。 >>1986 椎 > 目的は,ウェブページのフォームから送られた文章を, > 表示するページの都合で,改行無しの文に変更することです。 ちゃんと使っている環境を書きましょう。perl なら $str =~ s/\r\n|\n/ /g (半角空白に置換したい場合) $str =~ s/\r\n|\n/ /g (全角空白に置換したい場合) でしょうか。 |
|
初めて書き込みします。 UNIXのシステム音のビープ音の音量を大きくしたいのですが、どうすれば いいのでしょう。CDEデスクトップツールでビープ音の調整というのがあっ たのですが、その最大値よりもさらに大きくしたいと思ってます。 このビープ音は内部スピーカーから鳴っている様で、もし音量を調整でき ないのであれば内部スピーカーを外部スピーカーに切り替える方法を知り たいのですが、誰か分かる人いませんか。 どうぞよろしくお願いします。 |
|
いつも困ったときばかり相談ですみません。 #! perl ... for (sort {&year($b) <=> &year($a)} glob './bank*.txt') { my $foooo = &year($_); warn ":::: [$idat2] vs [$foooo]"; if ($idat >= $foooo) { warn "!!!!:::: [$idat2] >= [$foooo]"; open BANK, $_ or die "can't open $_ because $!"; last; } } という文が CGI の中にあって、 エラーログに :::: [20010730] vs [20010701] at /html/cgi-bin/foo.cgi line 319. :::: [20010730] vs [20010601] at /html/cgi-bin/foo.cgi line 319. :::: [20010730] vs [00000000] at /html/cgi-bin/foo.cgi line 319. !!!!:::: [20010730] >= [00000000] at /html/cgi-bin/foo.cgi line 321. と出ます。 20010730 対 20010701 の時点で 20010730 が勝つと思うのに納得いきません。 助けてください〜 |
|
試みに s/>=/ge/ してみたら(ゼロづめなので文字として比較しても同じかと思って)、 :::: [20010530] vs [20010701] at /html/cgi-bin/foo.cgi line 319. !!!!:::: [20010530] ge [20010701] at /html/cgi-bin/foo.cgi line 321. だそうです。(T.T) |
|
すっすいませんでした。 過去の2発言、忘れてください。 (文字面で、もういきなりバグってます) |
|
>>1987 通りすがり > HTMLならば加工するまでも無く改行が無視されますが? すみません。意味がわかりませんでした。 >>1988 68user > ちゃんと使っている環境を書きましょう。 すみません,忘れていました。 使い方も読んでいなくて,申し訳ありませんでした。今後は気を付けます。 ご推察の通り,環境はperlです。 $str =~ s/\\n/ /g なんて自分で書いて試してみたらできなかったので 書き込ませていただいたのです。 今回, $str =~ s/\r\n|\n/ /g で,試してみたのですが,上手くいきませんでした。 でも,基本的に考え方は間違っていなかったようだと わかったので助かりました。 もしかしたら,プログラムの他の部分に問題があるのかもしれません。 チェックし直してから,報告させていただきます。 |
|
このページは、めちゃくちゃためになりますね。 今後も参考になることをやってくれるとありがたいっす。 |
|
このページのおかげで,ネットワーク全体が見えてきました. 本当にありがとうございます. これからも参考にさせていただきたいので, このHPがずっとなくならないことを心よりお願いいたします. これからも頑張ってください. |
|
どうも忙しくて回答さえ満足にできませんな。いかんことです。 >>1989 gooo > もし音量を調整できないのであれば内部スピーカーを外部スピーカーに > 切り替える方法を知りたいのですが、 最大限に上げたのならもう音量は調節できないでしょう。 後はハード工作になるんですかね。その方面は全くわからないので、 すいませんがわかりません。 >>1990 ふくし >>1991 ふくし >>1992 ふくし えっと、解決したんですよね? >>1994 PC歴5ヶ月 >>1995 といも どもども。とはいえ時間がなくて更新も満足にできないのですが。 |
|
>68userさん Sega BBSの件なんですけど、 消去が時間かかりそうだったら、 とりあえずロボット検索に 引っかからないように、しといてほしいのですが… 早めにお願いします。 http://www.google.com/intl/ja/faq.html お忙しいところすいません。 よろしくお願いします。 |
|
初めまして。質問です。 ホームページ本体を置くサーバー(A)とCGIサーバー(B)が別になっていて、 サーバーAにあるHTMLファイルからサーバーBにあるCGIを呼び出し、 サーバーAにある別のファイルの情報を取得するため、以下のように記述しました。 open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; しかし、うまくファイルをオープンすることができませんでした。 パスを相対的に指定すれば成功するのですが、絶対的に指定すると、 CGIサーバー内であってもオープンできません。 これはこういう仕様なのでしょうか。 そうだとすれば、他にいい方法はあるのでしょうか。(被参照ファイルをサーバーBに置く以外で) ご回答をよろしくお願いいたします。 |
|
>>1997 ED ロボットよけ META タグを追加しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/view-segabbs.cgi.diff?r1=1.3&r2=1.1&f=h 時間が取れたらコンテンツ自体を削除します。 >>1998 田中 > open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; open というのはファイルをオープンするもので、ファイルいうのは マシンに接続されている HDD や CD-ROM に格納されているものを 指します。 # っていうととても語弊がありますけど。将来的にはそういう指定の # 仕方ができるようになるんじゃないかと思います。 なので、それをしたければサーバ B で動かすプログラムから サーバ A の web サーバにアクセスして http://www.abc.co.jp/xyz/index.html を取得しなければいけません。仕組みについてはここらへんを。 http://X68000.startshop.co.jp/~68user/net/ 実際は wget, fetch などのコマンドや、(perl なら) LWP, IO::Socket などのモジュールを使ってサーバ A から /xyz/index.html を 取得するのがお手軽です。 |
|
68userさん、素早い回答をありがとうございました。 教えて頂いたやり方は、私にはまだ高度すぎるようです。 もう少し勉強してみます。 |
|
はじめまして。初男と申します。 質問があります。 あるシェルスクリプトを実行し成功するのですが、 remshを使って、 remsh 自分のサーバ名 -n スクリプト名 として、実行すると、sortの処理でエラーが出てしまいます。 sortは、remshを使うとどうしてエラーになってしまうのでしょうか? ご存知の方は教えていただきたいと思います。 よろしくお願いします。 |
|
>>2001 初男 具体的にどういう書き方をしていて、どういうエラーが出ていますか? |
|
68userさん、お返事ありがとうございます。 あのあと、調査して、原因がわかりました。 ありがとうございました。 |
|
はじめまして!僕はUNIXなどのプログラム関係は全く理解できなかったのですがこちらのサイトではとてもわかりやすく説明されているため大変勉強させていただきまことに感謝いたしております。これからも応援いたしますのでがんばってください。 |
|
はじめまして。初訪問で初投稿です.宜しくお願いします. 現在、[A装置]−[Router]−[B装置](簡単に記述)で接続した環境で、RouterにてIP Filteringの設定を追加しようとがんばっています。[A]→[B」は、RCPによるファイルの送受信を行っているため、RCP以外のアプリケーションプロトコル(Telnetとか)を遮断する方法を探しております。 まずは、「全アプリケーションプロトコル遮断」として、「RCPだけ通過」という方法を取ろうと思っているのですが、【RCPのポート番号】が不明です.【RCP】は、Welknown-portではないのでしょうか?UNIXがその都度ポート番号を取得してしまうのでしょうか?ご存知の方教えて下さい. |
|
>>2005 ネットワークセキュリティ > 【RCPのポート番号】が不明です shell 514/tcp です。 こういう場合はサイズの大きなファイルを rcp しておいて、 その間に netstat -a を実行すればよいでしょう。 |
|
>>2005 ネットワークセキュリティ 蛇足ですがセキュリティを気にするのなら r系のコマンド自体使わない方が良いかと思いますが・・・。 |
|
はじめまして。もっちと申します。 いつも参考にさせていただいています。 はじめて投稿させていただきます。 http⇔https(https⇔https)のsocket通信をC言語で実現させたいのですが、 情報が無い為、何をどうすれば良いのかわかりません。 http⇔httpの通信はこちらのホームページを参考にさせていただいて、 実現することが出来ました。(ありがとうございます) いろいろ情報を検索して、opensslを使用すれば良いということまでは わかったのですが、それをどの様に使用すれば、暗号化が行われ、 通信を行い、受信データを複合できるのかわからず、悩んでおります。 情けないのですが、私には余りC言語での開発経験がありません (普段はPerlを使用しています) ですので、余計に訳がわからなくなってきております。 どなたか、この問題に関する情報をお持ちの方、いらっしゃらないでしょうか? 開発環境は、Solaris SunOSです。 opensslなど、必要と思われるものは準備されております。 (他に必要なものなどあれば、それも併せて教えていただければ幸いです) どうぞ、よろしくお願い致します。 |
|
>>2008 もっち 僕には難しいことはわかりませんが、とりあえず OpenSSL のマニュアル http://www.openssl.org/docs/ssl/ssl.html OpenSSL 和訳サイト。古いかも。 http://www.infoscience.co.jp/technical/openssl/docs/ssl.html SSLを使った暗号化通信のやり方 http://stingray.sfc.keio.ac.jp/security/ssl/ssl.html RFC 2246 TLS-1.0 (≒ SSL-3.0) http://ring.asahi-net.or.jp/archives/doc/RFC/rfc2246.txt ここらへんを参考にしてみて下さい。 |
|
>>2009 68user 68user様、早速のご返答ありがとうございます!! >OpenSSL のマニュアル の方は、私のほうでも見つけていたのですが、何を書いているのか 理解出来ず、挫折していました。 >SSLを使った暗号化通信のやり方 早速行ってきました。 まだ、詳細まで読んでいませんが、説明がスゴク丁寧で、 私の知りたかった関数の説明までされていて、私のようなC言語未熟者にも 理解できそうな気がします。 教えていただいたサイトを参考にして、実現できる様、頑張って見ます。 実現出来次第、報告に伺います!! |
|
「ネットワークセキュリティ」の件 >>2007 hsj hsjどの ご指摘の通り、R系のコマンドを使用している時点でセキュリティに問題ありとは認識しています。。。先にこっちを対応すべきかもしれませんね。参考にさせていただきます。 >>2006 68user 68userどの ポート番号の件ありがとうございます。 さっそく、設定値反映して確認します。確認結果は後日ご報告します。 |