ネットワークプログラミング相談室 Port18
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/10/01(日) 17:53:19Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port17
http://pc8.2ch.net/test/read.cgi/tech/1148944560/
0002デフォルトの名無しさん
2006/10/01(日) 17:54:57Port16 ttp://pc8.2ch.net/test/read.cgi/tech/1136005644/
Port15 ttp://pc8.2ch.net/test/read.cgi/tech/1128088448/
Port14 ttp://pc8.2ch.net/test/read.cgi/tech/1118469143/
Port13 ttp://pc8.2ch.net/test/read.cgi/tech/1109793931/
Port12 ttp://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port11 ttp://pc5.2ch.net/test/read.cgi/tech/1096187183/
Port10 ttp://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port9 ttp://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port8 ttp://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port7 ttp://pc5.2ch.net/test/read.cgi/tech/1063035045/ ★行方不明
Port6 ttp://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port5 ttp://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port4 ttp://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port3 ttp://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port2 ttp://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port1 ttp://pc.2ch.net/tech/kako/970/970344582.html
まとめ ttp://makimo.to/cgi-bin/search/search.cgi?q=%83l%83b%83g%83%8F%81%5B%83N%81%40%91%8A%92k%8E%BA&andor=AND&sf=0&H=ikenai&D=tech&shw=2000
0003デフォルトの名無しさん
2006/10/01(日) 17:56:00UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
そのソースコード
http://www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
http://www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
?Linux/POSIXソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
?Windowsソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320029992/
0004デフォルトの名無しさん
2006/10/01(日) 17:57:16http://www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
Webプロトコル詳解?HTTP/1.1、Webキャッシング、トラフィック特性分析
http://www.amazon.co.jp/exec/obidos/ASIN/4894715414/
WinSock2.0プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756142362/
Visual Basicではじめるネットワークプログラミング超入門
http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/
0005デフォルトの名無しさん
2006/10/01(日) 17:58:30★規格
RFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
★プログラミング
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
http://www.whitefang.com/rin/
Java で packet capture
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html
BoostSocket
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
http://www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
http://X68000.q-e-d.net/~68user/net/
0006デフォルトの名無しさん
2006/10/01(日) 18:01:00ethereal - http://www.ethereal.com/
Wireshark - http://www.wireshark.org/
tcpdump - http://www.tcpdump.org/
Windump - http://netgroup-serv.polito.it/netgroup/tools.html
WinPcap - http://www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - http://www.employees.org/~bmah/Software/pchar/
Packetyzer - http://www.networkchemistry.com/products/packetyzer/
libevent - http://www.monkey.org/~provos/libevent/
★プロトコル
TTCP
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.html
UDP Hole Punching
http://homepage3.nifty.com/toremoro/p2p/firewall.html
★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
00071
2006/10/01(日) 18:14:260008デフォルトの名無しさん
2006/10/01(日) 18:31:04「SYN」
「ACK」
さわやかな接続の挨拶が、混みきったセグメントにこだまする。
ARPA様のお庭に集うパケットたちが、今日も天使のような無垢なTTLで、
高価なゲートウェイをくぐり抜けていく。
下位レイヤを知らないデータを包むのは、幾重ものヘッダ。シーケンス番号は
乱さないように、経路上のノードは輻湊させないように、ゆっくりスタートするのが
ここでのたしなみ。
もちろん、ウィンドウサイズギリギリで帯域を占有するなどといった、はしたない
TCPスタックなど存在していようはずもない。
Transmission Control Protocol。
1982年確立のこのプロトコルは、もとは軍のネットワークのためにつくられたという、
伝統あるストリーム系プロトコルである。
インターネット。シリアル通信の面影を未だに残しているデータ損失の多いこのネットワークで、IETFに見守られ、
フレームリレーからWDMまでの一貫接続がうけられる通信の要。
時代が移り変わり、大統領がレーガンから三回も改まった平成の今日でさえ、
十八ヶ月で性能を倍化させ続ければ電話屋育ちの純粋培養プロトコルが棺入りで出荷される、
という仕組みが未だに残っている貴重なプロトコルである。
*/
0009デフォルトの名無しさん
2006/10/01(日) 18:40:06前スレのように、俺だけしか分からない話を「レベル高い」とかいうザコはお断り!
0010デフォルトの名無しさん
2006/10/01(日) 18:41:430011デフォルトの名無しさん
2006/10/01(日) 18:43:060012デフォルトの名無しさん
2006/10/01(日) 19:38:03*************************************************
主にソケットに関しての低レベル質疑応答スレッドです。
*************************************************
0013デフォルトの名無しさん
2006/10/01(日) 19:42:03ポート80以外を排他して、決められたバッファ以上は一度に受け取らないなら安全?
0014デフォルトの名無しさん
2006/10/01(日) 19:48:400015デフォルトの名無しさん
2006/10/01(日) 20:12:17パスワードが書かれた付箋紙がディスプレイに貼ってあるサーバは
全部ポート閉じてても危ないな
0016デフォルトの名無しさん
2006/10/01(日) 20:17:060017デフォルトの名無しさん
2006/10/01(日) 22:40:37Javaで
JList(Object[] listData)
JList.setListData(Object[] listData)
でリストにファイル表示させるみたいに、
リモートのファイルを表示させるやりかたってあるんですか?
0018デフォルトの名無しさん
2006/10/01(日) 22:41:180019デフォルトの名無しさん
2006/10/01(日) 22:45:04リモートのファイルってどういうパスに成るの?
002017
2006/10/01(日) 22:45:370021デフォルトの名無しさん
2006/10/01(日) 22:47:12何がわからんのかがわからん
002217
2006/10/01(日) 23:03:37そう言われれば、考えて無かった・・
繋げてからもう一度質問します
0023デフォルトの名無しさん
2006/10/01(日) 23:39:50サーバーからクライアントに入ってきた情報をどのブラウザに渡せばいいのかって
どうやって識別してるか?
IPとポートだけで識別してるなら
どっちのブラウザに渡せばいい情報なのか解らないと思うんですが
他に何かプログラムを識別する物があるんでしょうか?
0024デフォルトの名無しさん
2006/10/01(日) 23:42:4980番に送っているのであって、80番から送っているわけではない。
0026デフォルトの名無しさん
2006/10/01(日) 23:47:34002723
2006/10/01(日) 23:52:28いえ、一応解ってるつもりなんですが
例えば、Javaで1000番ポートを開放してるサーバーに
Socket sock=new Socket("127.0.0.1",1000);
と接続した後に、受信用の1000番のポートを変える方法ってあるんですか?
0028デフォルトの名無しさん
2006/10/01(日) 23:55:59?
0029デフォルトの名無しさん
2006/10/01(日) 23:56:030030デフォルトの名無しさん
2006/10/02(月) 00:00:41acceptすると待ち受け用とは別のソケットが生成される。
通信はそのソケットを使って行い、新規の待ち受けは引き続き今までのソケットで行う。
0032デフォルトの名無しさん
2006/10/02(月) 00:04:510033デフォルトの名無しさん
2006/10/02(月) 00:05:49待ち受けポートと同じ。
cli * srv 10000
cli 2222 srv 10000
cli 2223 srv 10000
相手のIPアドレスとポート番号は一意なのでソケットの仕組みが勝手に取捨選択してくれる。
0035デフォルトの名無しさん
2006/10/02(月) 01:12:360036デフォルトの名無しさん
2006/10/02(月) 02:27:380037デフォルトの名無しさん
2006/10/02(月) 04:38:00今時、80番ポートで何でも通しちゃうので、ポート番号で語る事自体が無意味。
変なネットワークが広まって変な使い方が当たり前になってきて、どんどんインターネットの精神が崩壊していく。
みんなでリセットしてUUCPからやり直した方が良いと思う。
0038デフォルトの名無しさん
2006/10/02(月) 04:53:49それだったら作れない方がマシ。そんな危険なコードが出回ったら大変な事になるぜ。
0039デフォルトの名無しさん
2006/10/02(月) 05:59:460040デフォルトの名無しさん
2006/10/02(月) 09:11:33> 電話屋育ちの純粋培養プロトコルが棺入りで出荷される
の意味が分からないのだが、これは何なの?
0041デフォルトの名無しさん
2006/10/02(月) 16:59:59教えて君は処理系依存の動作について自分で調べるかわりに他人の結果を聞いて丸写しするから余計悪い
ドキュメントや規格書は絶対に読まない
0042デフォルトの名無しさん
2006/10/02(月) 17:36:05とりあえず動けば終わり。
だから社会に出て正解が無いと、とたんに詰まって鬱に成る。
0043デフォルトの名無しさん
2006/10/02(月) 19:20:200044デフォルトの名無しさん
2006/10/02(月) 20:35:54前スレで紹介のあった(無償の)Visual C++ Express Edition
のインストールがうまくいきません。正確にはSDKが追加インストールできないのです。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=780120&SiteID=7
・・・ここに質問を書いたのでMSサイトへ回答ヨロ!
0045デフォルトの名無しさん
2006/10/02(月) 21:03:30・どこがネットワークプログラミングの質問だ
・よそで質問してこっちまで引っ張ってくるな
氏ねばいいのに。
0046デフォルトの名無しさん
2006/10/02(月) 21:14:34しかし使っていいプロトコルを絞るという意味では
他に良い手があるとも思えん
0047デフォルトの名無しさん
2006/10/02(月) 22:18:58WDM, ATM, IPそれぞれが、X over Yとなるなら分かるが、TCPって何よ?
0049デフォルトの名無しさん
2006/10/02(月) 22:37:37説明すると、
ネットワークのプログラミングのツールとしてVC++を使うという
依存関係から話が派生したものです。
そう口汚くののしる態度は世の中ではうまくやっていけない
人であろう・・・と思いました。大変残念です。
0050デフォルトの名無しさん
2006/10/02(月) 22:44:47APレベルのRPCの標準化としてSOAPを決めるならば、
それは異なる機種間で制御データを共通化してやりとりするという意義において、
必要性や利便性が出せると思うが、
自分の会社だけの装置に特化できるものならば、
そのほうが単純なプロトコルになれると思う。
0051デフォルトの名無しさん
2006/10/02(月) 23:54:410052デフォルトの名無しさん
2006/10/02(月) 23:55:370053デフォルトの名無しさん
2006/10/02(月) 23:56:370054デフォルトの名無しさん
2006/10/03(火) 00:04:260055デフォルトの名無しさん
2006/10/03(火) 00:06:460056デフォルトの名無しさん
2006/10/03(火) 00:12:340057デフォルトの名無しさん
2006/10/03(火) 00:15:24そんなんじゃないすよ
0058デフォルトの名無しさん
2006/10/03(火) 00:29:30当然、SOAPの話だよね。
0059デフォルトの名無しさん
2006/10/03(火) 00:37:430060デフォルトの名無しさん
2006/10/03(火) 01:13:480061デフォルトの名無しさん
2006/10/06(金) 16:34:35件名に印をつけるというSPAM対策ソフトを作りたいんですが、Winsock2でできるもんでしょうか?
できるとしたら何を調べにいけばいいでしょうか?
0062デフォルトの名無しさん
2006/10/06(金) 21:02:190063デフォルトの名無しさん
2006/10/06(金) 21:09:580064デフォルトの名無しさん
2006/10/07(土) 01:22:390065デフォルトの名無しさん
2006/10/07(土) 04:00:04ついでにWinsock2.1以降ならキャプチャできた…けど意味ないか
0066デフォルトの名無しさん
2006/10/07(土) 09:25:09つwinpcap
0067デフォルトの名無しさん
2006/10/07(土) 12:26:590068デフォルトの名無しさん
2006/10/07(土) 13:31:17winsock2で自分マシンに割り振られたのサブネットマスクを取得する方法ってありますか?
0069デフォルトの名無しさん
2006/10/07(土) 14:31:17wsk2じゃたぶんむり
ttp://www.mitene.or.jp/~sugisita/vb6_net.html
0070デフォルトの名無しさん
2006/10/07(土) 14:46:45そのページは、元質問と何か関係があるのか?
007168
2006/10/07(土) 16:31:34当方の環境はOSがWindowsXP SP2、コンパイラがVS2005で、言語はC++を使ってます。
0072デフォルトの名無しさん
2006/10/07(土) 17:56:51>>69にあったのじゃだめなの?
WinXPHomeSP2だとできたよ?
007368
2006/10/07(土) 18:27:53ネットワークアドレスを出力するっていうしょーもないプログラムを
作ってるんです。winsock2だとIPアドレスはgethostbyname関数で簡単に
取得できたんですけどねぇ、今日は朝からずっとググってるんですけど
わからないので書き込ませていただきました。
0074デフォルトの名無しさん
2006/10/07(土) 18:46:560075デフォルトの名無しさん
2006/10/07(土) 18:54:33IPアドレスもサブネットマスクも、NICごとに割り当てるものだろ?(仮想も含めて)
だから、インターフェースを特定してそれを元に取得するものであって
「マシン全体で」のものなんかないんじゃないのか?
どうやって取得するのかは知らんけど。
0076デフォルトの名無しさん
2006/10/07(土) 19:09:510077デフォルトの名無しさん
2006/10/07(土) 20:24:57>>72も言っているが、>>69のリンク先の、IPヘルパー「Ethernetアダプタ情報の取得」じゃあ
ダメなのか? 確かに、そこの例はVBだけどさ。ソース見ればAPIは分かるかと。
MSDN LibraryのGetAdaptersInfoの、Example Codeを参照。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getadaptersinfo.asp
0078デフォルトの名無しさん
2006/10/08(日) 00:08:03ってのはともかく、通信相手から見える自分を指すIPアドレスってのは
自分だけで知るのは困難だよな。
NICごとどころか仮想でインターフェース増やしまくれるし
ルーティングの段階で相手ごとに選択されるわけだからな
007968
2006/10/08(日) 11:54:54ありがとうございました。
0080デフォルトの名無しさん
2006/10/09(月) 16:00:020081デフォルトの名無しさん
2006/10/09(月) 16:03:150082デフォルトの名無しさん
2006/10/09(月) 16:17:040083デフォルトの名無しさん
2006/10/09(月) 18:46:410084デフォルトの名無しさん
2006/10/10(火) 09:51:59クライアントはLinuxで1秒間隔でサーバー側でデータを送っています。
で、通信ログを出力させて稼動状態を見ていたのですが、
3日に一回程度の頻度でサーバーが一瞬応答しなくなる (10秒ほど) 現象に悩んでいます。
3日に一回程度(1日置いて発生することもあれば1週間何事もないことも・・・)、時間帯は不規則です。
Windowsインストール後、自作のサーバープログラム以外はインストールしてません。
Windowsは不規則にOSが負荷の高い処理を実行して、その間ユーザープロセスを止めてしまうようなことがある。
と、以前何かで見たことがあるのでそれが原因かと思ってるのですが。
このWindowsでユーザープロセスを止めるような不規則な処理がなんだか、ご存知が説明のあるHPを知ってる人いますか?
0085デフォルトの名無しさん
2006/10/10(火) 10:13:32原因がWindowsであると断定した理由は?
0086デフォルトの名無しさん
2006/10/10(火) 10:26:27実はまだ断定してません、というか原因調査中の状態です。
「応答しなくなる」と書きましたが、詳しくはサーバーの応答が10秒ほど遅れて送信されてくる、です。
クライアント側でタイムアウトを1秒としているため、通信ログに異常が記録されていました。
サーバープログラムでは、データ受信後に決まった処理しか行わず、特に負荷に波がある処理はさせていません。
遅れても応答は返ってくるので、サーバプロセス自体が一瞬停止させられたのではないかと疑っています。
(ちなみにネットワークですがPC〜Linux間をクロスケーブルで繋いだだけの最小構成です)
後Windowsがプロセスを停止させたと判断するような材料ですが。
別プログラムでCPU/メモリに負荷を与えると、サーバープロセスが一時的に停止したりしますが、
この時残されている通信ログが、前述した異常時のログと動きが一致してました。
0087デフォルトの名無しさん
2006/10/10(火) 11:34:400088デフォルトの名無しさん
2006/10/10(火) 11:38:03後ろ向きな解決法は >>87 だろうけどね。
008984
2006/10/10(火) 11:58:38>>87
おまいとは気が合いそうだ。 orz
>>88
コントロールパネルの電源オプションは全て"なし"に設定してるのですが。
他にNIC止める要因ってあるでしょうか。
でもNICの電源供給やめられたらsocketも生きてないような気が・・・、遅れても応答が返るんで
socket自体は生きてるようなんですよね。
簡単なデータロガー的なものを作ってる人で、似た問題が起きてる人いないかな。
0090デフォルトの名無しさん
2006/10/10(火) 12:51:09遅れても問題無いように作るのが先だろ。1秒は厳しすぎだ。
0091デフォルトの名無しさん
2006/10/10(火) 12:56:34なんとなくわからずに延ばしただけじゃ気持ち悪いじゃん。
まして、クロスケーブルのピアピア接続なわけだし…
0092デフォルトの名無しさん
2006/10/10(火) 13:02:52009384
2006/10/10(火) 13:03:511時間分のバッファを持たせて、送信できるようになったら送信するようにしてます。
なのでデータロストはなく、「仕様です」と無表情に言えば通る話だと思います。
・・・やっぱり1秒は厳しいのかな。
>>91
そうなんですよ、気持ち悪くって・・・しかもログに残るようになっちゃってるし。
後で、「しまった!、ログに吐かなきゃバレなかったのに」とは思いましたが。
0094デフォルトの名無しさん
2006/10/10(火) 13:08:55009584
2006/10/10(火) 14:55:20いやいや、障害対処じゃなくて原因が知りたいんですよ。
ユーザーアプリを止めるような高負荷なことをWindowsXPが不定期にやってるのかなと。
0096デフォルトの名無しさん
2006/10/10(火) 15:09:03∩___ ∩ . . . .: : : ::: : :: ::::::::: ::::::::::::::::
/ :::::::::::::::::ヽ:| 監視銘柄殆どナイアガラなのになんで日経プラス?
|/ ̄X ̄丶;:丶. .日経平均って絶対計算間違ってるクマ
ミ/ :::/●ヽ ヽ::| . .:: :.: ::: . ::::::::::::::::::::::::::::::::
/ :::/ ;;:|∪| ::ヽ ヽ .. :. :. .:: : :: :: :::::::: : ::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ ̄ヽ、_ノ ̄
0097デフォルトの名無しさん
2006/10/10(火) 15:12:13ネットワークプログラミングとしての話は終わってる。
続けたければ他所へ行け。
0098デフォルトの名無しさん
2006/10/10(火) 15:18:46それもそうだ
>>96
ぶっ、こんな所に誤爆してやがる。もうどうでもよくなってきた、吊ってくるわ
0099デフォルトの名無しさん
2006/10/10(火) 15:35:37そのサーバアプリって、接続元を逆引きしたりしてるんじゃない?
んでへぼISPのせいで名前解決が時々遅れるとか。
0100デフォルトの名無しさん
2006/10/10(火) 15:37:480101デフォルトの名無しさん
2006/10/10(火) 15:43:28初心者なのでブラウザーが送信するコマンド(?)を使っていますが、
recv関数で止まります。
GET http://www.google.co.jp/ HTTP/1.0
Accept: */*
Accept-Language: ja
Cookie: PREF=ID=d3dc13c725aba505:TM=1131299185:LM=1131299185:S=7Z_D3LwF_ybAD27s
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.google.co.jp
Proxy-Connection: Keep-Alive
だと、無事にhttpが取得できるのですが、
>>102に続く
0102デフォルトの名無しさん
2006/10/10(火) 15:44:42GET http://www.google.co.jp/ HTTP/1.1
Host: www.google.co.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.0.7) Gecko/20060
909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
n;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: PREF=ID=452332018f76a489:TM=1159774461:LM=1159774543:L=156aP5bKh55yM5YyX
5Lmd5bee5biC5YWr5bmh6KW_5Yy65p2x5bed6aCt55S6:S=UEbzdt83qv13aXSX
だと、recvで受信に行ったところで止まってしまいます。
telnetで同じように送信しても途中で止まっているのですが、
接続を完了するにはどうしたらよいでしょうか?
あと、なぜ受信途中で止まってしまうのでしょうか?
すみません、どなたか教えてください。
0103デフォルトの名無しさん
2006/10/10(火) 15:46:42変なところに改行が入っていました。
GET http://www.google.co.jp/ HTTP/1.1
Host: www.google.co.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: PREF=ID=452332018f76a489:TM=1159774461:LM=1159774543:L=156aP5bKh55yM5YyX5Lmd5bee5biC5YWr5bmh6KW_5Yy65p2x5bed6aCt55S6:S=UEbzdt83qv13aXSX
0104デフォルトの名無しさん
2006/10/10(火) 16:14:45改行コードはちゃんと CR LF にしてる?
最後のヘッダ(この場合 Cookie:)の後にさらに CR LF してる?
(最後は S=UEbzdt83qv13aXSX CR LF CR LF になる)
0105デフォルトの名無しさん
2006/10/10(火) 16:53:51最後のヘッダはきちんと空行を入れるようにしています。
あと、>>101ならば自前のプログラム上でも、telnet上でも、
きちんと取得できるので、基本的に手法は間違っていないと思っています。
ただ、telnetでのアクセスでも>>103だと途中で止まったままになっています。
問題点はどこにあるのでしょう?
0106デフォルトの名無しさん
2006/10/10(火) 17:01:41うちから >>103 のリクエストをtelnetで投げたら、ちゃんとレスポン
スが表示されたよ。
0107デフォルトの名無しさん
2006/10/10(火) 17:08:41ちなみに>>101-103のリクエストはproxyに対して行うものであることは
ちゃんと理解してる?
0108デフォルトの名無しさん
2006/10/10(火) 17:37:16ありがとうございます。
すみません。
書き込んでいたのはリクエストを取るために作った、
自前の簡易サーバーのログからでした。
プロクシに対してのリクエストなのをすっかりと忘れていました。
リクエストを“GET http://www.google.co.jp/ HTTP/1.0\r\n\r\n”とすると
問題はありませんが、“HTTP/1.0”を“HTTP/1.1”にすると
recvの所で止まってしまいます。
telnetでも“HTTP/1.0”ならば“ホストとの接続が切断されました。”まで
一気に表示されてtelnetが終了します。
“HTTP/1.1”にするとレスポンスの後に改行を入れなければ、telnetの終了まで
いきませんでした。(Win2Kで試しました)
問題点はここだったようです。
まだ疑問点などは色々とありますが、もう一度勉強をしなおしてきます。
ありがとうございました。
0109デフォルトの名無しさん
2006/10/10(火) 17:49:55HTTPの今後の仕様で変わるかもしれないから、相手がプロクシじゃなくても
通るようになってるって話がどこかになかったっけ?
0110デフォルトの名無しさん
2006/10/10(火) 18:04:010111デフォルトの名無しさん
2006/10/10(火) 18:07:43リクエストを“GET http://www.google.co.jp/ HTTP/1.1\r\n\r\n”だけに
しても同様の問題がおきます。
もう一度、勉強のしなおしとプログラムの見直しをします。
0112デフォルトの名無しさん
2006/10/10(火) 18:20:080113デフォルトの名無しさん
2006/10/10(火) 18:22:110114デフォルトの名無しさん
2006/10/10(火) 18:29:11ソース晒すとパクラレルので・・・
0115デフォルトの名無しさん
2006/10/10(火) 18:35:170116デフォルトの名無しさん
2006/10/10(火) 18:37:48それはパクル人に聞いてもらわないとなんとも・・・
0117デフォルトの名無しさん
2006/10/10(火) 18:41:00HTTPのGET/RESPONSEぐらい、お前からパクるまでもないから心配しなくて良い。
そんなもんWeb上にいくらでも転がってる。
100本以上のセッションをIoCompletionPortとか使いながらスレッドプールで
捌いて、しかも連続する同一ホストに対するセッションをpipelineでまとめたり、
サーバがパイプラインを嫌ったときに、自動的に再試行してくれたりとかまで
対応してるんならパクるが。
あと、別スレッドのロジック処理に回す時も、memory-to-memoryのコピーが
最少となるように工夫されてると良い。
0118デフォルトの名無しさん
2006/10/10(火) 18:48:10当然ながらIO完了ポートを使っていますし、
スレッドもプールして使いまわしています。
HTTP1.1でパイプラインが使える場合は使いますし、
使えない場合は使いません。
スレッドが違ったとしても態々コピーするようなことはしてません。
というような当たり前の実装をしていますが・・・
0119デフォルトの名無しさん
2006/10/10(火) 19:20:480120デフォルトの名無しさん
2006/10/10(火) 23:41:48やってるよ!
だから諦めろ
--
0121デフォルトの名無しさん
2006/10/10(火) 23:45:03じゃ、IO完了ポートも使わない
スレッドもプールしない
パイプラインが使える時も使わないし、そうじゃない場合も使わない
同じスレッドでもメモリコピーしまくりの
単純なプログラムで検証汁
0122デフォルトの名無しさん
2006/10/10(火) 23:49:320123デフォルトの名無しさん
2006/10/10(火) 23:53:11リナクスでも受け側では遅延すると思うよ。もちろんXではDVDでも見てて負荷かけててくれ。
0124デフォルトの名無しさん
2006/10/11(水) 00:22:30この場合、荒しとは言わない
ただの厨房だ
0125デフォルトの名無しさん
2006/10/11(水) 00:24:140126デフォルトの名無しさん
2006/10/11(水) 00:54:43お前プログラム組んだことあるのか?
0127デフォルトの名無しさん
2006/10/11(水) 01:18:03>>101-103の質問をしたものです。
>>119は私ではありませんが、質問した本人以外がパクラレルから
ソース公開は嫌だという書き込みは荒らしだと思うんですよ。
C言語を勉強して一週間程では>>117-118が何のことやら。(^_^;
0128デフォルトの名無しさん
2006/10/11(水) 01:23:29ttp://www.studyinghttp.net/connections
でいいんじゃね?
0129デフォルトの名無しさん
2006/10/11(水) 01:56:360130デフォルトの名無しさん
2006/10/11(水) 04:24:47> 書き込んでいたのはリクエストを取るために作った、
> 自前の簡易サーバーのログからでした。
HTTP/1.1に対応していないならあなたのプロキシは転送時に
HTTP/1.1をHTTP/1.0に書き換えなければならない。
まあ>>129ってこった。
0131デフォルトの名無しさん
2006/10/11(水) 09:31:51私のプロキシって何ですか?
作った覚えがないプロキシが対応していないと言われても・・・。
0132デフォルトの名無しさん
2006/10/11(水) 09:34:03提示されたログは明らかにproxy宛のリクエストだから
そのログをとった「簡易サーバー」はproxyとしか思えんわけだが。
0133デフォルトの名無しさん
2006/10/11(水) 10:46:25> ソース公開は嫌だという書き込みは荒らしだと思うんですよ。
で、晒す気はないと?
0134デフォルトの名無しさん
2006/10/11(水) 12:30:160135デフォルトの名無しさん
2006/10/11(水) 14:50:45いえ、勝ち戦で逃げる必要は無いので、それはあり得ません。
0136デフォルトの名無しさん
2006/10/11(水) 15:41:550137デフォルトの名無しさん
2006/10/11(水) 15:58:180138デフォルトの名無しさん
2006/10/11(水) 16:27:45何を言うアルか!
0139デフォルトの名無しさん
2006/10/11(水) 17:00:440140デフォルトの名無しさん
2006/10/11(水) 17:16:570141デフォルトの名無しさん
2006/10/11(水) 18:50:380142デフォルトの名無しさん
2006/10/11(水) 22:11:59proxyさばっぽいのつくってます。
HTTPはしゃべれるようになったんですが、
HTTPSでつまずいてる。
クライアントからCONNECTメソッドが来たらどうしてあげればよい?
0143デフォルトの名無しさん
2006/10/11(水) 22:27:22HTTPと同じ。
0144デフォルトの名無しさん
2006/10/12(木) 00:51:08CONNECT www.example.com:443 HTTP/1.0\r\n
\r\n
という感じのリクエストが来ると思うので、www.example.com の 443/tcp に接続を試みる。
接続が成功すれば、
HTTP/1.0 200 OK\r\n
\r\n
を返して、その後はサーバーとクライアントの間のやり取りをそのまま転送し、
どちらからか接続が切られるまで転送を続ける。
接続が失敗した場合は、
HTTP/1.0 504 Gateway Timeout\r\n
\r\n
等を返して、接続を切る。
それから、ポートの指定が443以外の場合は、403 Forbidden等を返して接続を切るようにしたほうがいいと思う。
理由は省略するけど、HTTP Proxyを作っているなら分かるだろうし、分かるべきだと思う w
0145デフォルトの名無しさん
2006/10/12(木) 01:42:00最初からssl接続しないと通信できないしそのためにはssl証明書が必要。
つまり鶏卵問題が発生する。
バーチャル鯖は辞めとけってことだが。
0146デフォルトの名無しさん
2006/10/12(木) 01:54:350147デフォルトの名無しさん
2006/10/12(木) 02:56:19接続先によって、SSL/TLSのクライアント証明書を使い分ける場合の事?
それとも、クライアント証明書が不要で、サーバ証明書のみが必要な場合の事?
どちらにしても、そういった場合には証明書関連で不都合が生じるとは思う。
でもそれはクライアントの実装等の問題であって、HTTP Proxyの問題ではないはず。
DNS Aliasを使う場合やIP Addressを直に指定する場合は、HTTP Proxyの有無に関わらず、
トラブルの原因になりがちだし、HTTPSのコンテンツフィルタリングを行う場合は、かなり問題になると思う。
でも >>142 はそこまでやりたいとは言っていないし、
とりあえずは、 >>144 の回答でほぼ問題がないかと。
それ以上となると、ネットワークというより、セキュリティ関連の方の話題になってしまうと思う。
簡潔に言うと >>146 の言うように、SSL/TSLに関しては単に中継すればいいだけ。
0148デフォルトの名無しさん
2006/10/12(木) 06:50:210149デフォルトの名無しさん
2006/10/14(土) 02:08:11wwwありのURLは、実在のホスト名を指すが、ドメイン名というのは本来実体のない
抽象的な存在だ。だから、wwwなしのドメイン名そのものをアクセス可能なURLとして
設定するというのは、従来の設定方法から比べると、ややトリッキーではある。しかし、
「もう時代は変わった。こっちのほうが便利だらかいいんじゃん?」というノリで変えて
しまうルーズさ、またそれができてしまうという、いい意味での仕様の曖昧さこそ、
インターネットの重要な本質ではないだろうか。インターネットが活力を失わずに進化を
続けられているのはガチガチに仕様が決まっていないこと。だとしたら、wwwなしがWeb2.0的だ。
0150デフォルトの名無しさん
2006/10/14(土) 03:57:47リンク先を見ると、
>(編集部 西村賢)
って奴が責任者なんだろうな。こいつ年はいくつなんだ?
恥ずかしい奴だな。wwwwwwwwwwwww
0151デフォルトの名無しさん
2006/10/14(土) 07:56:180152デフォルトの名無しさん
2006/10/14(土) 08:04:430153デフォルトの名無しさん
2006/10/14(土) 08:33:34wがあと2つ足りないんじゃないか
0154デフォルトの名無しさん
2006/10/15(日) 21:54:14send
recv
send
recv
HTTPで上のようにやりたいんですけど、2回目のsendで失敗します
どうすればいいんでしょうか…
0155デフォルトの名無しさん
2006/10/15(日) 22:01:32失敗しないように2回目のsendをHTTPでやればいいだけなのだと思うのですが…
0156デフォルトの名無しさん
2006/10/15(日) 22:36:010157デフォルトの名無しさん
2006/10/15(日) 23:26:070158デフォルトの名無しさん
2006/10/15(日) 23:43:17HTTP/1.1 って、Keep-Alive がデフォルトでしたっけ?
>>154 の環境が分からないですし、具体的にどういうことがやりたいのかもいまいちですが、
1つのHTTPリクエストを複数回に分けて送ろうとしているなら、考え直したほうがいいと思います。
コネクションを張りなおさずに複数のHTTPリクエストを出したいなら、リクエストヘッダに
Connection: Keep-Alive
Keep-Alive: 300
等のようなものを含めてみるとかでしょうか。
ただ、CGIのような動的コンテンツの場合などサーバーが、
Connection: close
で、コネクションを切断する場合もあるので、必ずしもうまくいくとは限りません。
0159デフォルトの名無しさん
2006/10/15(日) 23:52:46HTTP/1.1はKeep-aliveではなくpersistent connectionがデフォルト
(Keep-aliveはchunked encodingを許さないのでcontent-lengthが付けられないなら
closeで終了を知るしかない)
0160158
2006/10/16(月) 00:05:29難しいです・・・ Keep-Alive と persistent connection の違いを勉強しなおします。
Keep-Alive と chunked encoding は併用出来ないのですか。
それなら、動的コンテンツでサイズが分からない場合は、コネクションの切断で終了を知らせるしかなさそうですね。
0161デフォルトの名無しさん
2006/10/17(火) 05:40:04Keep-AliveはHTTP/1.0の拡張でRFC1945の付録に書かれてる。
HTTP/1.0だからchunked encodingは禁止(とRFC2616に書かれてる)
persistent connectionはHTTP/1.1の標準仕様だしデフォルト。
当然chunked encodingも使える。というかまさに
> 動的コンテンツでサイズが分からない場合
に終了を知らせるための機能なんだから。
0162154
2006/10/17(火) 18:51:27固定データだからといって自分で数えますた
皆さんの予想通り凡ミスです
すみませんでした…
0163デフォルトの名無しさん
2006/10/17(火) 18:56:120164デフォルトの名無しさん
2006/10/17(火) 19:03:370165デフォルトの名無しさん
2006/10/17(火) 19:38:140166デフォルトの名無しさん
2006/10/18(水) 07:18:030167166
2006/10/19(木) 04:29:17UDPのmanを見る限り
「UDP ソケットが生成されるとき、ローカルアドレスやリモートアドレスは指定されない。
正しい行き先アドレスを引数として sendto(2) や sendmsg(2) を呼べば、データグラムはただちに送信される。」
とあるので、やはりリンクローカルアドレスの使用は無理っぽいですね。。
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/udp.7.html
あるマシンがリンクローカルマルチキャストを送信して、同一リンク上の他のマシンが応答するようなプログラムを書きたいんですけど、なにかいい方法はありませんか?
0168デフォルトの名無しさん
2006/10/19(木) 09:10:12分かってるようで分かって無い日本語なので何をこたえりゃいいのか分からんwwwwwww
> sendto(2) や sendmsg(2)
0169デフォルトの名無しさん
2006/10/19(木) 10:22:08ローカルアドレスのローカルと、リンクローカルアドレスのローカルは意味というか、
範囲が違うぞ。
リモートのリンクローカルアドレスだってある。
IPv4だと普通にsocketつくって、setsockoptでマルチキャストグループに入って送受信すれば
いいだけだが、v6だと違うのか?
0170デフォルトの名無しさん
2006/10/19(木) 10:36:53つbind
0171デフォルトの名無しさん
2006/10/19(木) 10:59:59可能です。
0172166
2006/10/19(木) 20:34:13すいません。。
現状としては、クライアント側でsockaddr_in6.sin6_addr.s6_addrにサーバのグローバルアドレスを指定すると普通にsendtoして送信することはできます。
ここで、"ff02::1%[interface name]"などのリンクローカルマルチキャストアドレスを指定するとsendtoでエラーをはいてしまってどうしたものかと。。
ちなみに、"fe80::hoge"などのリンクローカルアドレスでも同様にエラーになってしまいます。
>>169
助言していただいてありがとうございます。
リンクローカルアドレスを指定する場合はsetsockoptすればいいんですかね?
>>170
サーバ側では、リンクローカルアドレスをbindしているんですがうまくいかなくて。。
>>171
ありがとうございます。
0173デフォルトの名無しさん
2006/10/19(木) 21:35:462. マルチキャストならさらにIPV6_MULTICAST_IF でちゃんとIFを指定する
とかくらいしか思いつかない・・・
0174デフォルトの名無しさん
2006/10/24(火) 16:11:22なぜか一定数接続したところでacceptが固まってしまいます。
短い間隔、長い間隔、複数ホストからの接続を試みてみましたが、
いずれも必ず合計382接続したところでacceptから反応が返ってこなくなってしまいます。
同じプログラムでWindowsでは問題なく動いているので、
Linux環境特有のなにかがあると思うのですが。。。
ちなみに他のスレッドから待ち受け用のソケットと閉じるとacceptから抜けました。
どなたかご存知の方いらっしゃいませんか?
LinuxのディストリはUbuntu Desktop、gcc 4.0.3で、
ttp://gimite.ddo.jp/gimite/cppmess.htm
のラッパを使用して以下の様にプログラムしました
0175174
2006/10/24(火) 16:11:55gimite::socket_stream s((gimite::socket_t)arg);
//hogehoge
s.close();
return NULL;
}
void accept_thread()
{
gimite::server_stream_socket ss;
if(!ss.bind(port)) return;
while(!terminate){
gimite::socket_t cs = ss.accept();
if(cs != -1){
pthread_t thread;
pthread_create(&thread, NULL, server_thread, cs);
}else{
break;
}
}
}
0176174
2006/10/24(火) 16:55:35一定数以上スレッドを作成すると、pthread_create() が
"Cannot allocate memory"を返してきました。
この状態になると accept() が固まるようです。
pthread_create() のあとに pthread_detach() を呼び出すことで解決できました。
0177デフォルトの名無しさん
2006/10/24(火) 16:57:48日本NO1MMO製作プロジェクト開始!
PG募集!
0178デフォルトの名無しさん
2006/10/24(火) 16:59:51スレッド数制限じゃねぇかな。PTHREAD_THREADS_MAXか、ulimitとか。
適時、死んだスレッドはpthread_joinで回収しろ。
それまでは、リザルトコード保持のために、スレッド情報が保持される。
スレッド終了時に自分の、pthread_tをキューにでも積んでいって、
適当なタイミングで、pthread_join()を回すとか。
0180デフォルトの名無しさん
2006/10/24(火) 21:02:14少なくともSunStudioのCCにはあるが。。。
0181デフォルトの名無しさん
2006/10/24(火) 21:18:580182デフォルトの名無しさん
2006/10/25(水) 02:15:43ほんのサンプルはなんか便利な関数使っていてわからないのですが、
GETとかPOSTとかコマンドは、実際に送っているデータもASCII文字列を
送っているのでしょうか。
send関数のバッファーbuffに、その文字列入れて
recvで待っていると"200"のASCII文字列が返ってくるということでしょうか。
0183デフォルトの名無しさん
2006/10/25(水) 07:26:530184デフォルトの名無しさん
2006/10/25(水) 08:36:30ttp://x68000.q-e-d.net/~68user/
こちらのページで、実際のコーディングでどんな文字列
送信してるのか詳しく書いてありました。
0185ACE
2006/10/25(水) 09:58:08ACE(ADAPTIVE Communication Enviroment)って言うのは実際には
使われているんでしょうか?
ソケットAPIに比べてとても優秀だと言われていますが、
やっぱり基本はソケットAPIですかね?
0186デフォルトの名無しさん
2006/10/25(水) 10:07:21そもそも同じ土俵に持ってくることが間違い
0187ACE
2006/10/25(水) 10:09:190188デフォルトの名無しさん
2006/10/25(水) 10:16:09http://www.cs.wustl.edu/~schmidt/ACE-overview.html
0189ACE
2006/10/25(水) 10:30:35ありがとうございました!!!!!
0190デフォルトの名無しさん
2006/10/25(水) 11:26:45VMwareの仮想NICなど複数のNICが存在する環境で、
bindしなければランダム?で使用するNICが選ばれてしまい、うまく動作しないことがあります。
bindするにしても、どのIPアドレスにbindすればWebサーバに接続できるのかがわかりません。
ブラウザなどはどうやって判断してるのでしょうか?
0191デフォルトの名無しさん
2006/10/25(水) 11:46:28ランダムではない。ルーティングテーブルを見てる。
0192デフォルトの名無しさん
2006/10/25(水) 12:08:20消極的な対処でよければ
bindしないでconnectしてみたら
0193デフォルトの名無しさん
2006/10/25(水) 12:48:11複数のNICを一つのサブネットにDHCPでアドレスを取って、接続してて、
OSがWindowsで、メトリックが自動メトリックになってるで、仮想環境をリブートしたり、NICの
ON/OFFをする度に、選ばれるNICがコロコロ変わっているんじゃないかと推測してみる。
なら、自動メトリックを切って、接続元として使いたいNICのメトリックを最少にする。
netstat -rあたりで、ルーティングテーブル見ればどのNICがbest interfaceとして選ばれる
か分かる。
それでも、HTTPクライアントで、接続元アドレスを気にする必要ってあるか?
サーバ側で、SRCアドレスでセッション管理してるとかかな。
よっぽどのことがなければ、クライアント側はbindせず、OSのルーティングに任せるのが普通。
0194デフォルトの名無しさん
2006/10/27(金) 06:25:58安全に、自分の好きなタイミング終了させたいのですが質問です。
C++builder使っているので、WINDOWSの場合
・flag変数を用意
・ボタンを押したらflagが変わる
で、終了処理に移ることができます。
linuxの場合はどのようにするのでしょうか?
標準入力(コマンド入力)を待つスレッドかプロセスを
作ってその入力によってflagを変えるというふうにするのがよいでしょうか?
0195デフォルトの名無しさん
2006/10/27(金) 06:32:42メッセージを全員に配信するというチャットプログラムを作りました。
これにサーバ側が好きなタイミングで全員にメッセージを送る機能を
付けたいのですが、サーバはrecvを呼び出した所で止まっているため
動けません。
一応クライアント側が数秒に1回ダミーメッセージを送るという方法で
動く奴は出来たのですが、こういう方法で良いのでしょうか?それとも
こういう場合、もっと良い実装方法があるのでしょうか?
Winsock2.0でマルチスレッドで作っています。
0196デフォルトの名無しさん
2006/10/27(金) 06:34:140197デフォルトの名無しさん
2006/10/27(金) 10:51:57linuxの場合は、ってlinuxで、ユーザーとのインタラクションはどうやるつもりなの?
TTYなら、SIGINTか、SIGTERMあたりの適当なsignal拾えばいいと思う。標準入力をトリガにしても良い
だろうし、RPCとか、別プロセスからnamed pipeでも良い。
ユーザーからのどのような動作で、終わらせたいのかが不明。
XでGUI組むなら、Windowsと同じようにGUIでも良いし、signalとかの手段でも良い。
>>195
サーバ側を非同期受信にする。
0198デフォルトの名無しさん
2006/10/27(金) 10:56:00というのはガセ
0199デフォルトの名無しさん
2006/10/27(金) 21:47:40>>195
「なるほど!その手があったか!」とコロンブスの卵的に感動して早速
プログラムしたのですが、新たに問題が出てきました。普段クライアン
ト側はメッセージ送信(send)をするまで適当にsleepしながら無限ルー
プで待っているのですが、そのためサーバがsendしてきてもrecv出来
ません。結局サーバ・クライアント共に普段はrecvで待ちながら、必要
な時だけ自分宛のsendでrecvを一度終了し、相手にsendしたあと、再度
recvに戻る…となってしまうようです。
なんか効率が悪い気がするのですが、こういうのが一般的なプログラム
方法なのでしょうか?
続きます。
0200デフォルトの名無しさん
2006/10/27(金) 21:55:10send用とrecv用の2つのスレッドに増やせば良いのでは?と思いつきました。
ただこの場合、SOCKET変数を外部変数なんかで共有し、2つのスレッドで
同時使用することになると思うのですが、これは問題ないのでしょうか?
recvスレッドがrecv()で受信中のソケットに対して、sendスレッドがsend()で
送信することが起こると思うのですが…特に問題なしですかね?
ちなみに>>197さんもこういう実装方法を指しているのでしょうか?
0201デフォルトの名無しさん
2006/10/27(金) 22:01:45>なんか効率が悪い気がするのですが、こういうのが一般的なプログラム
>方法なのでしょうか?
そんなことをしているプログラムは普通ではないです。
スレッドを使ってもいいのですが、性能面で問題がないなら
以下のようなループで十分では?
while (!quit) {
select で受信できるかどうか見てみる
-> 受信できるようなら、recv して queue なり buffer なりに追加
-> 追加した結果、メッセージが全部来ていたらそれを処理
何か他の必要なことをする
}
UDP なら recv1回でメッセージは全部取れるので少し簡単になります。
0202デフォルトの名無しさん
2006/10/27(金) 22:20:14に使うのですね!ヘルプも読んでみましたが確かに上手くいきそうです。
参考になりましたm(__)m
が、実はチャットは制作の第1段階で、最終的にはネットワークゲームを
作る予定でして、性能面もちょっと気にしております。それで確認なのです
が、
>スレッドを使ってもいいのですが
というのは>>200のようなやり方でOKと解釈して良いでしょうか?それとも
>>200では駄目でしょうか?またその場合、スレッドを使ったこういう時の
一般的な処理方法はどういうものなのでしょうか?
0203デフォルトの名無しさん
2006/10/27(金) 22:21:46サーバーにクライアント機能を入れなくてもいいんでね?
クライアントとして完全な別アプリにするとか
せめて別プロセス作ってそっちで動かすとかして
正規クライアントとして(もしくはバックドアから)接続
一緒に入れ込むと拡張とか保守とかしにくくなってくるよ
0204デフォルトの名無しさん
2006/10/27(金) 22:24:220205デフォルトの名無しさん
2006/10/27(金) 22:41:30送信と受信でスレッドを分けるやり方も可能ですよ。
同時にrecvとsendが呼ばれても問題ありません。
一般にsendはブロックする(処理が終わるまで時間がかかる)可能性がありますから、
前のsendが終わっていなくても何かrecvしたい・する可能性があるようなプロトコルならば、
送信と受信のスレッドを分ける必要が出てくるでしょう。
個人的にはこのあたりはバグが出ないように非常に単純に作っておいて、
後からチューニングした方が好ましいと思うけど。
0206デフォルトの名無しさん
2006/10/27(金) 23:32:39詳しい解説有難うございます。非常に参考になりましたm(__)m
とりあえずまずselectで作ってみて、パフォーマンスに不満が出れば
スレッド方式に移行してみようと思います。
>>203
はい、チャットだけなら確かにそうなのですが、最終的にネトゲを目指
しているため、例えばサーバから全プレイヤーにゲームデータを送る
等、いずれはそういう機能が必要になると思って質問しました。
何にせよ、返答してくださった皆さん、どうも有難うございましたm(__)m
0207デフォルトの名無しさん
2006/10/28(土) 07:00:23例えばHTTPの場合、サーバ側のポートは(一般的に)80になるかと思います。
クライアントから要求があり実際に接続された場合、実際に通信に使用される
サーバ側のポート番号は80かと思っていましたが、そうではなく内部的に
別のポート番号が割り振られるという話を聞きました。
本当なのでしょうか?
tcpdumpなどでキャプチャしたデータを見てみても、TCPのヘッダには80とありますが…
0208デフォルトの名無しさん
2006/10/28(土) 08:18:25<src IP, src port, dst IP, dst port>
の四つ組みで識別されています。
だから<dst IP, dst port>が同じでも何の問題もありません。
> 別のポート番号が割り振られるという話を聞きました。
誰が言ったか知らないが、気違いは無視しましょう。
0209デフォルトの名無しさん
2006/10/28(土) 08:21:130210デフォルトの名無しさん
2006/10/28(土) 12:31:26そういうハナシを混同してはいけない。
0211デフォルトの名無しさん
2006/10/28(土) 13:03:05src portが別のものになる、でよい?
この場合のsrc portの割り振りって誰がやってるの?
0212デフォルトの名無しさん
2006/10/28(土) 13:11:460213デフォルトの名無しさん
2006/10/28(土) 15:04:490214デフォルトの名無しさん
2006/10/28(土) 15:40:290215デフォルトの名無しさん
2006/10/28(土) 15:43:270216デフォルトの名無しさん
2006/10/28(土) 21:32:09全会一致で、そのようなことはないということですね。
大変為になりました。皆さん、ありがとうございました。
0217デフォルトの名無しさん
2006/10/28(土) 22:36:280218デフォルトの名無しさん
2006/10/29(日) 07:29:32既にNATでエンドツーエンドの通信は崩壊してるし。
ソース側のポートは不定ではないな。OSによって癖が出るから、OS判別に利用されやすい。
セキュリティのことを考えたら、癖を出さないプログラミング重要。
全プレイヤーにゲームデータを送るって仕様の時点でダメポ。
全プレイヤーが全く同一のネット環境なんてあり得ないし、全プレイヤーの中で一番遅くて遅延の酷い香具師に合わせるしかなくなる(遅いのを早めるのは無理。早く来たのを表示を遅らせるのは簡単にできる)
0219デフォルトの名無しさん
2006/10/29(日) 08:40:37これなんて井の中の蛙?
0220デフォルトの名無しさん
2006/10/29(日) 10:44:43通信速度が間に合わなくなった分は
パケットは破棄されるの?
それともキューにたまって後になってからやってくる?
0221デフォルトの名無しさん
2006/10/29(日) 11:11:30> キューにたまって
どこのレベルの話したいの?
0222デフォルトの名無しさん
2006/10/29(日) 11:14:35アプリケーション層でおねがいします
0223デフォルトの名無しさん
2006/10/29(日) 12:51:09なんで分かれる必要があるの?
0224デフォルトの名無しさん
2006/10/29(日) 12:56:42必要はない。
BSDソケットがそう設計されたってだけの話。
「ポート」と言っても、TCP/IPのポート番号じゃなくて、ソケットのことだし。
0225デフォルトの名無しさん
2006/10/29(日) 13:07:01バッファがあればある程度キューみたいなものに溜まって、
溢れたら無条件で破棄、となるのが一般的だが、結局UDPレイヤの実装依存。
0226デフォルトの名無しさん
2006/10/29(日) 13:48:51非同期ソケットって必要になりますか?
サーバーとして1000クライアント以下のものを考えてます。
0227デフォルトの名無しさん
2006/10/29(日) 14:29:52いずれにせよ、イベント駆動型のメインループになるんだから。
0228デフォルトの名無しさん
2006/10/29(日) 14:46:330229デフォルトの名無しさん
2006/10/29(日) 15:18:300230デフォルトの名無しさん
2006/10/29(日) 17:09:40非同期ってとてもじゃないが扱えないキガスル
0231デフォルトの名無しさん
2006/10/29(日) 21:29:210232デフォルトの名無しさん
2006/10/30(月) 10:29:060233デフォルトの名無しさん
2006/10/30(月) 18:29:41ノンブロック:忙しければ断られる
非同期:頼んでおけばいつの間にかやってくれる。
0234デフォルトの名無しさん
2006/10/30(月) 20:59:43そりゃ、トランスポート層の話でしょ。
>>222
アプリケーション層の話なら、貴方の実装しだい。
0235デフォルトの名無しさん
2006/10/30(月) 23:17:11TCPの送受信バッファもあるわけで、
2重持ちすることになってアホらしいような気がせんでもないのですが
みなさんどう考えますか
0236デフォルトの名無しさん
2006/10/30(月) 23:56:48持たせない手法になっていくよmmapとかsendfileとか果てはhttp.sysとか
0237デフォルトの名無しさん
2006/10/31(火) 00:15:40そのあいだにバッファが出来るのは
仕方がないと思っている。
まずは正しく動くことが大事かと。
0238デフォルトの名無しさん
2006/10/31(火) 14:16:03出す側はわりと簡単に zero copy 化できるんだけど、受ける側は結構問題だわな。
0239デフォルトの名無しさん
2006/11/01(水) 01:15:580240デフォルトの名無しさん
2006/11/01(水) 02:09:21反対側のインタフェースにそのまま送信するWindowsアプリを作りたいと思っています。
(http://hata.cc/products/linee/ ←要はこれのWindows版)
winsockだとL2が拾えない(と認識しています)ので、WinPcapを使ってみたのですが
フレームを送信しようとすると
データを送信側のデバイスに渡した == データが書き込まれた(フレームを受信した)
という状態になってしまいまい、フレームの転送が出来ることは出来るのですが、送信した
フレームを自分で受信した上にそのフレームを反対側のインタフェースに送信しようとするので
フレームが無限増殖してしまいます。
WinPcapのソースコードを追ってみるとファイルハンドルは"\\.\Global\NPF_{ifname}"で
CreateFileしており、送信/受信の区別が無くインタフェース名で一意になっていることが
原因のようでした。
で、このような状態を回避する方法があるか、WinpCapで無理なら他に何を使えば出来そうか
ご教示願えませんでしょうか。
(因みに、当方ドライバは書いたことがありません…)
0241デフォルトの名無しさん
2006/11/01(水) 02:38:00送信元MACアドレスが自分の持っているMACアドレスの1つと一致する場合は
転送処理を行わないとか、そういう単純な回避法では無理ですか?
ARPやDHCPでも送信元MACアドレスを入れないということは無かったと思いますけど。
0242240
2006/11/01(水) 03:35:23レスありがとうございます。
すみません、説明が足りませんでした。
ここではインタフェースをプロミスキャスにしていて、受信したフレームの
DMACが自分宛でなくても全て受信し、「そのまま」中継することが目的なので
SMACもDMACも自分のMACアドレスにはならないため、残念ながらフレームで
判断することはできないんですよ。
L2中継機ではなく、ネットワーク的に見れば単純なリピータハブとして動作
するようにしたいのです。
(もちろんARPやDHCPなどのL2マルチキャストもそのまま転送させたい)
ネットワーク構成は以下のような感じで。
アプリが動いてるPC
[PC1]-------------[ IF0 IF1 ]-------------[PC2]
PC2のDMAC → そのまま転送 → PC2のDMAC 逆方向も同様に
0243デフォルトの名無しさん
2006/11/01(水) 04:48:07こちらこそ、リンク先をじっくり読んだりしていなくてすみません。
IF0でPC1のSMACのフレームを受信した事を記録して、IF1からそのまま送信、
IF1でPC1のSMACのフレームを検出するけど、IF1で受信したわけではないと分かるので無視、
という方法はどうでしょうか?
残念ながら、私にはこれぐらいしか思いつきません。
0244デフォルトの名無しさん
2006/11/01(水) 09:39:12目的が違う。
0245デフォルトの名無しさん
2006/11/01(水) 14:45:36ドライバを含む WinPcap を再ビルドすることはできますか?
もしそうなら、こちらが解決策になると思います↓
ttp://www.mail-archive.com/[email protected]/msg00360.html
上記のMLでは他にこれといった解決策は投稿されていない模様です。
0246デフォルトの名無しさん
2006/11/02(木) 01:29:25accept後にforkして子プロセスに処理を行わせる
ものしか見かけないのですが、これは何故スレッド
にしないのでしょうか?
スレッドを新たに作って、そのスレッドに処理を行わせる
方が自然な気がするのですが。
それにforkはWinに移植しにくいのでポータビリティも
失われる気がします。
0247デフォルトの名無しさん
2006/11/02(木) 01:52:39・対してスレッドは新しく理解・経験・文献・ソースが不足している。
・子プロセスはこけても親に影響がない。子スレッドは親を道連れにしてあぼ〜んする。
・acceptするプロセスと実際のやりとりをする子プロセスの間で、密に設計する利点がそもそもない。共有するリソースがない。
0248デフォルトの名無しさん
2006/11/02(木) 02:03:180249デフォルトの名無しさん
2006/11/02(木) 02:14:460250デフォルトの名無しさん
2006/11/02(木) 02:17:130251デフォルトの名無しさん
2006/11/02(木) 02:25:48スレッドならWindowsにも移植しやすいのですか?
言語やライブラリによるのかもしれませんけど。
UNIX系の場合は >>247 の理由に加えて、
set(u|g)id プロセスの特権放棄に対応しやすいというのもあるかもしれません。
0252デフォルトの名無しさん
2006/11/02(木) 03:12:390253デフォルトの名無しさん
2006/11/02(木) 10:43:49逆にWindowsでスレッドだとWinnyみたいにどんどん使用メモリーが増えてって
1プロセスで500MBとか使う悲惨なことになる。
forkを使うUNIX版きぼんぬ。
0254デフォルトの名無しさん
2006/11/02(木) 11:31:210255デフォルトの名無しさん
2006/11/02(木) 12:11:18Winnyを作った作者がヘボプログラムなだけ
0256デフォルトの名無しさん
2006/11/02(木) 12:16:15遅延がものすごいことになるんだよ
即時応答を要求しないものはそれでいいのだけど、独自のPingのような
命令行動を実装していた場合、余裕でタイムアウトしちゃいますw
0257デフォルトの名無しさん
2006/11/02(木) 13:48:160258デフォルトの名無しさん
2006/11/02(木) 14:45:16周りにあわせるならfork
移植性考えるならthread
0259デフォルトの名無しさん
2006/11/02(木) 15:53:48>スレッドにしないと問題になるのが相手がおもいっきり通信中だと
>遅延がものすごいことになるんだよ
た め に な る な あ
0260デフォルトの名無しさん
2006/11/03(金) 02:46:350261デフォルトの名無しさん
2006/11/03(金) 03:21:320262デフォルトの名無しさん
2006/11/03(金) 03:55:170263デフォルトの名無しさん
2006/11/03(金) 20:21:30ファイアーウォールと、プロキシサーバの
違いを具体的に教えて下さい。
一通り検索しましたが、パケットをフィルタリング
できる点は機能的に似ている説明ばかりです。
これらの本質的な機能の違いは何でしょうか?
0264デフォルトの名無しさん
2006/11/03(金) 20:27:18proxy = 代理。別に検閲目的に立てるだけじゃないぞ。
例えばWebページのキャッシュとかして帯域を節約したりもする。
0265デフォルトの名無しさん
2006/11/03(金) 20:28:25まぁ、何かフィルタリングするのは確か
0266デフォルトの名無しさん
2006/11/03(金) 22:45:03両者間で、TCP PORTの通過は、どう違っているんでしょう?
例えば、httpsはPORT 400番台ですよね。
一方、httpはPORT 80だけど、プロキシでは8080へ変換して使うことが
多い。
こうしたTCP PORTは、それぞれ、ファイアウォール、プロキシで
どのような通過制限がかかるのでしょうか?
0267デフォルトの名無しさん
2006/11/03(金) 23:04:01もちろんパケットを通すか通さないかを決めるためにパケットの
中身を見ることはあるけどね。
プロキシサーバーは、代理サーバーなんだから基本的になんでも
ありあり。
ポート番号の変換だけでなく、プロトコルそのものを変えること
すら可能。たとえば、ftp サーバーをクライアントには web
サーバーのように見せるなんてことをやったりする。
0268デフォルトの名無しさん
2006/11/03(金) 23:11:50>ファイアーウォールは、基本的にパケットの中身は変更しない。
非常にここはわかりやすいです。つまり、TCP PORT制限を
かけ、応用層プロトコルは変化させない、と理解すれば。
しかし一方、>>265によれば、F/Wによっては、応用層プロトコルにも
介入するという話で、こんがらかるのです。
0269デフォルトの名無しさん
2006/11/03(金) 23:15:02ファイアウォールとプロキシーサーバーのどこが似ていて、
なぜ「どこが違うのか」という質問が出てくるのか
全然理解できないのだが。
0270デフォルトの名無しさん
2006/11/03(金) 23:26:47パケットをフィルタリングする・・・という(ネット上にある)説明内容が
両者の共通点に見えるためです。
0271デフォルトの名無しさん
2006/11/03(金) 23:29:06プロキシはパケットを意識するような層では動いてないよ
0272デフォルトの名無しさん
2006/11/03(金) 23:41:16プロキシが基本的に応用層プロトコル処理に介在しているのは
その説明でわかりました。
それではプロキシが、応用層にあるhttp port 80を 8080へ変換する目的(理由)は
どこにあるのでしょうか?
0273デフォルトの名無しさん
2006/11/03(金) 23:45:55何勝手な思い込みで変なこと言ってるわけ?
ちゃんとプロキシーサーバーってものについて、調べてみたのか?
0274デフォルトの名無しさん
2006/11/03(金) 23:59:22> しかし一方、>>265によれば、F/Wによっては、応用層プロトコ
> ルにも介入するという話で、こんがらかるのです。
そもそもファイヤーウォールは、「何かをブロックする」という
機能を実現するもの。
これに対してプロキシサーバーは「クライアントの代理でサーバー
に要求する」という仕組みを表すもんだから、比べること自体がお
かしい。
アプリケーションファイヤーウォールと呼ばれるものでは、プロキ
シサーバーがファイヤーウォールを実現しているものもあるしな。
そもそも、>>267 に書いた通りプロキシサーバーはなんでもありあ
りだから。
>>272
> それではプロキシが、応用層にあるhttp port 80を 8080へ変
> 換する目的(理由)はどこにあるのでしょうか?
それは、そのプロキシサーバーを設置しているところに聞いてくれ。
0275デフォルトの名無しさん
2006/11/04(土) 00:02:00調べが十分でない、理解が十分でなく、思い込みが
あると思われます。
しかし、無駄に80<->8080への変換をやるのではなく、
何か明確な目的(役割)があると思うのです。
必要がないなら、port番号を変換しないはずと思います。
書くのが大変だと思うので0時を回った故、後でよいです。
0276デフォルトの名無しさん
2006/11/04(土) 00:07:02ポート80はWebサーバーが使ってる。
気の利いた奴が別のポートを選ぶ際に
8080をプロクシサーバーのポートにして流行って定着したんだろうな。
いつからなのかは(´・ω・`)しらんがな
0277デフォルトの名無しさん
2006/11/04(土) 00:09:390278デフォルトの名無しさん
2006/11/04(土) 00:10:068080は人気杉なんで今じゃ不用意に指定しないようにしてるw
0279デフォルトの名無しさん
2006/11/04(土) 00:10:48まだmozaicしか無かった頃にどこかの大学が文字コード変換をするために建てたproxyが既に8080だったやうな
0280デフォルトの名無しさん
2006/11/04(土) 00:12:14だからお前がわかってないだけだろ。ちゃんと調べろよ。
プロクシーに対して"GET http://www.2ch.net/"を送れば80番に接続するし
"GET http://www.2ch.net:8080/"を送れば8080番に接続するだけだ。
変換なんて何もしてないっての。
プロクシーが何番で待っているかとは関係ない。
0281デフォルトの名無しさん
2006/11/04(土) 00:16:27「やっぱり、プロキシーサーバーとは変換するものですよね」と来る予感。
0282デフォルトの名無しさん
2006/11/04(土) 00:18:14えー('A`)
0283デフォルトの名無しさん
2006/11/04(土) 00:44:52下手したらループしちまうもんな。
0284デフォルトの名無しさん
2006/11/04(土) 01:24:14新しい知識知ったからってここに書くなよぼけ
0285デフォルトの名無しさん
2006/11/04(土) 01:59:520286デフォルトの名無しさん
2006/11/04(土) 02:01:480287デフォルトの名無しさん
2006/11/04(土) 02:38:28現代の釣り人は2チャンネルに行くものなんです。
0288デフォルトの名無しさん
2006/11/04(土) 03:29:390289デフォルトの名無しさん
2006/11/04(土) 11:46:57591, 8008もね。http://www.iana.org/assignments/port-numbers
8080や8008はCPUの型番に倣ってるんでしょうね。
> 例えば、httpsはPORT 400番台ですよね。
番台、えー('A`)
0290デフォルトの名無しさん
2006/11/04(土) 15:25:400291デフォルトの名無しさん
2006/11/04(土) 16:12:27日本NO1、MMO製作プロジェクトが開始されました!
プログラマ募集!力あるやつだけ来い!
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
0292デフォルトの名無しさん
2006/11/04(土) 16:18:530293デフォルトの名無しさん
2006/11/04(土) 16:36:01なるほど、プロキシはそういうものだったんですね。
詳細は省略しますが、自分の思い込みの部分も自分でわかってきました。
夜分遅くまで、ご教示と、ご協力ありがとうございました。
0294デフォルトの名無しさん
2006/11/04(土) 17:16:48肝心なコストのかかる担当が悉く空白なのが現実を反映していてよい。
やっぱ最初にちゃんと動くモノ出さないと歯牙にもかけられないよな。
0295デフォルトの名無しさん
2006/11/05(日) 21:28:12何で判断すればいい?
selectでwrite可能かどうか見る以外にスマートな方法キボンヌ
0296デフォルトの名無しさん
2006/11/05(日) 21:28:490297デフォルトの名無しさん
2006/11/05(日) 21:36:46>select(2) で書き込み可能になった後に、 getsockopt(2) を使って SOL_SOCKET レベルで
>SO_ERROR オプションを読み出すことにより、 connect() が成功したか、失敗したかを判断できる
汎用的には、やっぱりこれでね?
WinSockならFD_CONNECTとかが飛んでくるとか、ConnectExとかあるけどさ。
0298デフォルトの名無しさん
2006/11/05(日) 21:58:43こうしない理由がわからん
0299デフォルトの名無しさん
2006/11/06(月) 02:06:57selectが最もスマートな方法だが、どうしてもポーリングしたいと
いうのならば gepeername(2) を使いたまえ。
0300デフォルトの名無しさん
2006/11/06(月) 06:31:19ひょっとしてこれって絶対typedefされてる保証ないのですか?
0301デフォルトの名無しさん
2006/11/06(月) 07:52:340302デフォルトの名無しさん
2006/11/07(火) 02:57:550303デフォルトの名無しさん
2006/11/07(火) 14:12:400304デフォルトの名無しさん
2006/11/07(火) 15:13:230305デフォルトの名無しさん
2006/11/07(火) 20:58:23リンクローカルとグローバルしかないのなら
それってNATの向こうとこっちで分かれてる現状と変わらんキガスル
0306240
2006/11/07(火) 23:07:21返信遅くなってすみません。
リンク先の情報でOKでした。
ご存知の方もいらっしゃると思いますけど、一応解決方法を書いておきます。
winpcap\packetNtx\driver\Write.c
135行目あたりにNdisSetPacketFlags()を追加。
---
// Attach the writes buffer to the packet
NdisChainBufferAtFront(pPacket,Irp->MdlAddress);
NdisSetPacketFlags(pPacket, NDIS_FLAGS_DONT_LOOPBACK); // 追加 (XPのみ???)
// Call the MAC
NdisSend(
---
リコンパイルして正規のnpf.sysに上書きすればOK。
本当はWinPcapを入れなくてもinf実行でインストールできるようにしたかったんですけど
レジストリにうまく書けず断念…。
>>243さん
恐らくその方法でも行けるのではないかと思いますが、時間が無くて試していません。
SMACテーブルと検索処理を作るのが面倒だったというのが本音なんですけどw
お二人とも、ありがとうございました。
また何かあればよろしくお願いします!
0307デフォルトの名無しさん
2006/11/07(火) 23:23:25http://plusd.itmedia.co.jp/pcuser/articles/0611/07/news010.html
端末として持つには丁度いいな。
0308デフォルトの名無しさん
2006/11/08(水) 00:25:02グラ8mbって微妙だけどw
0309デフォルトの名無しさん
2006/11/08(水) 08:46:19Mobile IPがある。
それからルータが扱いやすいパケット形状で高速化が期待できる。
いずれにせよ、利用者側にはあまり関係ない。
0310デフォルトの名無しさん
2006/11/10(金) 05:28:22よろしくお願いします。
ソケットの接続数は限界があるみたいですが、
ネットで検索したらOSごとに違うともありました。
OSは限界か判断できるということは、OSは現在の接続数を知ってるんですよね。
そこで質問なんですが、そのリアルタイムの接続数を
取得する関数や方法などあるのでしょうか?
それとも、自分でプログラミングして接続数
管理しないといけないでしょうか。
接続数が知りたいということなんです。
よろしくお願いします。
0311デフォルトの名無しさん
2006/11/10(金) 09:58:460312デフォルトの名無しさん
2006/11/10(金) 12:11:46自分のプログラム内での接続数を知りたいんだったら、自分のプログラ
ムにカウンタを1つ設けるだけやん。
0313デフォルトの名無しさん
2006/11/10(金) 12:22:31たくさん”OS”という言葉が出てきているが、
現状は”OS”と呼ばれる領域が曖昧なので
SocketライブラリがOSに含まれるのか、付属品なのかはわからない
なので>>311ってこと
0314デフォルトの名無しさん
2006/11/10(金) 18:27:00なるほどです。
ソケッド開くたびにひとつ増やして、
閉じるたびにひとつ減らせばいいんですね。
ただ、自分初心者なので異常終了したときに、
きちんと処理できる自信なかったので一発で取得
する方法があれば良いと思いまして。
手元の本見ると異常終了するときは、サーバ側で
select関数使用して受信タイムアウト処理してますが
これで正確にカウントできるでしょうか。
他の条件分岐や気をつける処理などありますでしょうか。
switch(select(...)){
case -1:
//count--;
//ただし、割り込みあったときEINTRもう一回受信
case 0:
//タイムアウト切断
//count--;
default:
//recv関数
//countは、処理の内容次第
}
>>313
ファイルをロックするlock関数みたいに、
システムコールが用意されているのかと思いまして。
Socketライブラリにありますでしょうか?
0315デフォルトの名無しさん
2006/11/10(金) 18:37:32えーとそのコードで示した処理って完全に間違ってますよ。
なにか勘違いしてるんだと思います。
socket() で作ると 1 つ増える。
accept() で受け入れると 1 つ増える。
close() すると1つ減る。
それだけこことです。
0316デフォルトの名無しさん
2006/11/10(金) 18:48:34完全に違ってましたか。(汗
明快なアドバイスありがとうございます。
ちょっとわかってきました。
close()までたどり着けるようにきちんとすれば
カウントできるんですね。
0317デフォルトの名無しさん
2006/11/10(金) 20:08:09connect/accept 成功で +1
close/shutdown で -1
じゃないか?
0318デフォルトの名無しさん
2006/11/11(土) 00:32:03shutdownなら確実に減るけど
0319デフォルトの名無しさん
2006/11/11(土) 00:33:520320デフォルトの名無しさん
2006/11/11(土) 03:17:17資源管理は最初から組み込むか一切関知しないかの二者択一だ
0321デフォルトの名無しさん
2006/11/11(土) 09:14:44shutdown で片方向だけ禁止したのはどう数えるんだ?
0.5 個か? (w
0322デフォルトの名無しさん
2006/11/11(土) 15:51:48生きている状態と死んでいる状態が重なっており、それは
ソケットを調べてみるまではわからない。映画化決定。
0323デフォルトの名無しさん
2006/11/11(土) 16:54:220324デフォルトの名無しさん
2006/11/11(土) 18:02:19>>323 調べることにより系(システム)の状態が変化するから
ちょっと詳しく説明してくれないかな。
0325デフォルトの名無しさん
2006/11/11(土) 21:25:40監督はキューブリック。公開は2008年ごろになるらしい。
0326デフォルトの名無しさん
2006/11/11(土) 21:43:55相手が死んでしまえば自分が生きていようと死んでいようとそれは死んでいることと同義である。
「死にに行く訳じゃない。俺が本当に生きてるかどうか、確かめに行くんだ。」
カウボーイビバップ Session#26 「ザ・リアル・フォークブルース(後編)」より
0327デフォルトの名無しさん
2006/11/12(日) 01:27:37select で n 秒待ちし、抜けてきたら FD_ISSET で調べ、
タイムアウトで抜けたならまた select するという処理
をしているのですが、connect 成功後、相手の切断を
検知できず、ずっとこのループを繰り返してしまいます。
ほとんど同じ処理でテストプログラムを造ると、そっち
はちゃんと FD_ISSET でタイムアウト切れじゃない返り値
になり、その後の recv で 0 が帰るのですが・・・。
ライブラリのリンク順番とか関係あるのでしょうか・・・?
環境は Solaris9 上の C です。
0328デフォルトの名無しさん
2006/11/12(日) 01:34:04そのテストプログラムでも、LANケーブルを抜いたら検知できないよ?
やってみろ。 ライブラリは関係ないよ。
KEEPALIVEを設定するか、アプリ側でヘルスチェックをするようにするか
どっちかしかないよな。
ピピルマ ピピルマ プリリンパ
パパレポ パパレポ ドリミンパ
どっきんハートに瞬きショット
0329デフォルトの名無しさん
2006/11/12(日) 05:16:07selectでタイムアウト処理をしても、
LANケーブル抜くとrecv関数の切断が検知できないで
ずっと返り値が返ってこないということでしょうか。
なにか返ってくればわかりますし。
本見ると、recv関数待ちしているとき、
一定の時間がたって値が返ってこなかったら
切断するとあるんですが、どんなコードになるでしょうか。
時間を測るにしても、recv関数の値が返ってこないと、
そこで処理が止まってしまうので、時間を計るプロセスを
別に用意するとかでしょうか。
0330デフォルトの名無しさん
2006/11/12(日) 05:23:36切断ってのは相手から 「もう別れましょう」 という手紙がくることなんだ。
でも、LANが抜けてれば相手から何も来ないだろ。
つまり、お前はまだあの子と付き合ってると思い込んだままのわけだ。
本当はあの子はもういないのに。
これを防ぐには、毎日メールとか電話をやりとりするしかないよ。
「おはよう」のひとことでも構わない。 通信も恋もマメさが大事。
0331デフォルトの名無しさん
2006/11/12(日) 06:27:55レスありがとうございます。
パソコン2台無いので、わからないんですが
異常終了するとき(LANケーブル抜く)、
recv()ってなにを返すんでしょうか。
ずっとブロッキングされて、なにも返さない
という理解で良いんですよね。
>>これを防ぐには、毎日メールとか電話をやりとりするしかないよ。
もうひとつソケットで繋いで、定期的になにか
やり取りをするということでよろしかったでしょうか?
具体的には、ノンブロッキングなら、recv()が返るので
異常終了のときでもすぐに値返ってきますが。
でも、これだとはじめからほんとの通信を、ノンブロッキングに
すればいいんですよね・・・。
ブロッキングで、recv()の待ち時間判定して、
close,shutdownを呼ぶ方法ありますでしょうか。
当方初心者です。
0332デフォルトの名無しさん
2006/11/12(日) 11:43:45alarmを使うとか、SO_RECVTIMEOを設定するとか、recv前のselectの
タイムアウトを援用するとかの方法がある。
0333デフォルトの名無しさん
2006/11/12(日) 17:22:41>alarmを使うとか、SO_RECVTIMEOを設定するとか
やり方理解できました。
alarmという便利な関数があるんですね。
>recv前のselectのタイムアウトを援用するとか
こちらが全然わからないです。
switch(select(n,&fd_set,NULL,NULL,&timeout)){
case -1:
//エラー
case 0:
//タイムアウト切断
default:
if(FD_ISSET(soc,&mask)){
if(recv()<0){ }
}
}
この場合だとselect抜けたあと、LANケーブル抜くと
recvで止まってしまうんですよね。
どこにどのような処理を追加すればよいのでしょうか。
すみません。よろしくお願いします。
0334デフォルトの名無しさん
2006/11/12(日) 17:34:16そこのrecvでは止まらない。(中でrecvをループさせたりしてなければ)
ただ、例外的にselectが戻ってもrecvが詰まる場合もあり、
そういう場合のために、ノンブロック設定にする。
0335デフォルトの名無しさん
2006/11/12(日) 19:20:20ほんとバカで申し訳ないのですが、どういうふうに
解釈していいのか、わかりませんでした。
・select抜けたらLANケーブル抜いても、recvでは止まらない
だけど、LANケーブル抜くとかではなく、例外的な場合があり
selectが戻ってもrecvが詰まるときがある。
そういう場合のために、ノンブロック設定にする。
・LANケーブル抜くと、例外的な場合に当てはまり
selectが戻ってもrecvが詰まるときがある。
そういう場合のために、ノンブロック設定にする。
・その他
どちらでしょうか。
よろしくお願いします。
0336デフォルトの名無しさん
2006/11/12(日) 19:35:52LANケーブルが抜けてもわからないんだよ!
たとえば、お前が誰かとお話してたとする。
お前がなんかしゃべってるのに 相手が何も言わなかったら
寝てんのか 黙ってるだけなのか 区別付かないだろ。
そういうときは 「おい、聞いてんのかコラ 」 と一定時間ごとに確認するだろ。
そういうのが必要だということ。
0337デフォルトの名無しさん
2006/11/12(日) 20:45:52おいらが意図したのは一番はじめ。
0338デフォルトの名無しさん
2006/11/12(日) 21:36:37そのたとえ話、気に入った!
0339デフォルトの名無しさん
2006/11/12(日) 22:48:20>>337
レスありがとうございます。
336,337さんの言っていることが反対のような気がするので
混乱してしまいました。
>>333 のコードで、いつLAN抜いても
正常に動作するのでしょうか。
でも、select抜けたときは受信の準備が出来たときですよね。
・recv()呼ぶと受信がはじまる。
・終わるまで待ち状態。
・それで、受信中LAN抜いたら、なにも返事が無いので
recv()はLAN抜いたことわからなくて、
そのままリターンしないで待っている。
という風に思ってました。
本も見てみると、recv()はLAN抜いたときとか、わからないから
リターンしないって書いてあるんですよね。
>>333のコードで大丈夫なら、LAN抜いたら、
recv()はなにを返すんでしょうか?
すぐに何かのエラーを返してくれるんでしょうか。
recv()待ちのときLAN抜くとリターンしないので、
>alarmを使うとか、SO_RECVTIMEOを設定するとか、recv前のselectの
>タイムアウトを援用するとか
の方法があると思ったのですが。
あれれー。わからなくなってきました。
そもそも、何か前提の知識が間違っているのでしょうか。
0340デフォルトの名無しさん
2006/11/12(日) 23:15:16>・recv()呼ぶと受信がはじまる。
>・終わるまで待ち状態。
recv は、既に受信済みのデータをOSが管理するバッファからユーザが
指定したバッファにコピーし、コピーしたバイト数を返します。
1バイトも受信していない場合にはデータが受信されるまで待ちますが、
select で OK なら大抵の場合は少なくとも1バイトは読めて、すぐに
リターンします。
「受信が始まる」とか「終わる」とかいう動作はプロトコルスタックが勝手に
行っていて、APIからは概ね隠蔽されています。
0341デフォルトの名無しさん
2006/11/12(日) 23:18:56「詰まる」とは言えるかもな
0342デフォルトの名無しさん
2006/11/12(日) 23:21:52ってsendじゃなくてrecvは全部待ち指定しなきゃ足りなくても帰ってくるか
0343デフォルトの名無しさん
2006/11/12(日) 23:56:21ずばりの回答ありがとうございます。
select抜けるときは、受信済みだったんですか。
ようやく理解できました。
selectでOKなら大抵の場合大丈夫だけど、
リターンしない場合も無いわけでは無いので、
念のためalarmとかの処理をしておくということですか。
んー、2冊ぐらい読み直してみたんですが、
そこまで書いてなかったような。
やっぱり2chすごいなぁ。
0344デフォルトの名無しさん
2006/11/13(月) 01:34:45> selectでOKなら大抵の場合大丈夫だけど、
> リターンしない場合も無いわけでは無いので、
俺も昔コレではまったことあるんだけど、
なんでこんなことになるの?そういうもの?
0345デフォルトの名無しさん
2006/11/13(月) 02:08:31プロトコルスッタク蛾ぶっ壊れたから。
永遠待ちは避けて、1秒待ちの無限ループがお勧め
0346デフォルトの名無しさん
2006/11/13(月) 04:02:45alarmなりなんなり使ってやる必要があるだろうが、
通常のプログラムじゃそんなことまで考慮する必要は無い。
0347デフォルトの名無しさん
2006/11/13(月) 09:10:05あと、select の無限待ちはCPU食うからと10秒待ちにしてるんですが、
それを1秒に変えたら、切断を検知しやすくなったりしますかねぇ・・・。
0348デフォルトの名無しさん
2006/11/13(月) 09:46:12は?
> 切断を検知しやすく
へ?
相手がcloseしてきたこと?なわけないよね。
てことは、ケーブルが抜けたことを検知したいと?
0349デフォルトの名無しさん
2006/11/13(月) 20:33:15OpenSSLまたはVxWorks6.1
でクロスコンパイラ(gcc)を使って開発する場合、
どのような難しさがありますか?
たとえばスレッド・セーフにする問題とはより具体的に
どんな風に難しいでしょうか。
0350デフォルトの名無しさん
2006/11/13(月) 22:16:17> 私は、recvが0なら切断されたということにしています。
普通、誰でもそうしますが。
| man recv
| 返り値
| これらのコールは受信したバイト数を返す。エラーの場合は -1 を返す。
| 接続先が正しくシャットダウンを実行した場合は、返り値は 0 となる。
0351デフォルトの名無しさん
2006/11/14(火) 00:25:55ケーブル抜けたテストをやるときはハブを一段かませよう。
0352デフォルトの名無しさん
2006/11/14(火) 00:53:230353デフォルトの名無しさん
2006/11/14(火) 01:05:230354デフォルトの名無しさん
2006/11/14(火) 01:14:590355デフォルトの名無しさん
2006/11/14(火) 01:24:05ドライバしかそれを検知できないから
0356デフォルトの名無しさん
2006/11/14(火) 01:28:360357デフォルトの名無しさん
2006/11/14(火) 02:24:11ドライバがそれを制御しているから
0358デフォルトの名無しさん
2006/11/14(火) 02:40:460359デフォルトの名無しさん
2006/11/14(火) 02:53:080360デフォルトの名無しさん
2006/11/14(火) 03:35:18方法は無い事も無いな。 すごい方法がある。
まず、Webカメラを用意し、ネットワークカードの差込口を
0361デフォルトの名無しさん
2006/11/14(火) 03:35:25*nix だと ioctl()
OS によってインターフェース異なるけど…
0362デフォルトの名無しさん
2006/11/14(火) 10:24:210363デフォルトの名無しさん
2006/11/14(火) 11:09:24って本当?
だとするとM$はクズだな
TCP・IPというものをまったく理解していない
0364デフォルトの名無しさん
2006/11/14(火) 11:47:27つまり、PC側のケーブルを抜けば、ドライバが切断を検出できる。
けど、ルータ側を抜いたら検出できない。
0365デフォルトの名無しさん
2006/11/14(火) 17:06:130366デフォルトの名無しさん
2006/11/14(火) 19:19:28VC++がないので、VC++Express Editionではじめました。
http://www.knifeedge.org/?page_id=59
Windows 上での OpenSSL のビルド方法について、ネット上にはあまり情報がないようなので、
先日私がした方法を備忘録として残しておきます。
・・・ここを参考にコンパイルをはじめましたが、Windows.hがnot foundの
コンパイルエラーでとまったところ。
sslのサーバとクラインのテストプログラムを組んで
どの程度難しいのか調べようと思う。
こういうところが難しいとか知ってる人いたら教えてください。
OPENSSLのベースがコンパイルできたら、SOAP/XMLの応用ソフト
を上に載せたい。
http://x68000.q-e-d.net/~68user/net/
・・・ここにある
C言語: https クライアント
C言語: https クライアント サーバ認証版
C言語: RSA 暗号化 ライブラリに頼りきり版
C言語: RSA 暗号化 あまりライブラリに頼らない版
SSL: root CA 証明書
・・・これらの記事のサンプルプログラムを見るとSSLソケットがあれば
その接続ができれば簡単に上位の応用プログラムが書けそうに思うのは甘いですか?
0367デフォルトの名無しさん
2006/11/14(火) 20:24:19どーせExpressEditionに必須のPlatformSDKの環境を
セットアップしてないんでそ。
0368デフォルトの名無しさん
2006/11/14(火) 21:23:24当方、Windowsプログラムもほぼ初めてで難儀中かも。
Windows.hのincludeのパスは、SDK2003R2のものを、VC++EEの中で設定してるのですが
コマンドラインのclから呼ばれると、そのincludeパス設定が効いていないようで、not foundのようです。
とりあえずエラーとなる.cソースと同じところにwindows.hをcopyしてコンパイル
してみるつもりです。
RADのGUI操作で作ったFTPプログラムのコンパイル+実行は正しく動いたので、
多分、VC++EEのほうのインストールはうまく言っていると思う。
OpenSSLのコンパイルができたら、そのSSLソケットを使ったプログラミングで
難しいところは何かあるでしょうか?
0369デフォルトの名無しさん
2006/11/14(火) 21:28:390370デフォルトの名無しさん
2006/11/15(水) 00:07:440371デフォルトの名無しさん
2006/11/15(水) 03:24:19selectしてwrite,readする感じで数十バイトのデータを往復させただけでも、60msec位掛かってしまいます。
サーバとクライアントは同一PCで動かしているのですが、
TCPってこんなに時間がかかるものなのでしょうか?
0372デフォルトの名無しさん
2006/11/15(水) 04:39:450373デフォルトの名無しさん
2006/11/15(水) 04:44:510374デフォルトの名無しさん
2006/11/15(水) 13:57:41そうですよ。
数十バイトで60msecかかるので、数十キロバイトなら60sec、
数十メガバイトなら16時間くらいかかります。
0375デフォルトの名無しさん
2006/11/15(水) 17:24:17インタラクティブなやり取りをする時は、
つまりラウンドトリップタイムがメインファクタの時は、
Nagleのアルゴリズムに気をつけてくれ。
詳しくはソケットFAQを読め。
0376デフォルトの名無しさん
2006/11/15(水) 18:02:07・複数のクライアントが座標を入力して、サーバがそれを管理する。
・クライアントが使われている座標を入力したらその旨を表示する。
単一のクライアントからの入力なら、現在の座標を入力するとその旨を表示するところまで上手くいくのですが、
複数になると、例えばクライアントAの座標をクライアントBが把握できておらず、Aの座標にBが移動してしまいます。
調べたところ双方向パイプという処理を施せば子プロセス間で座標の判断ができると思うのですが、やり方が今一わかりません。
指針などどうかご教授お願いします。言語はCです。
0378デフォルトの名無しさん
2006/11/15(水) 22:43:32> 複数になると、例えばクライアントAの座標をクライアントBが把握できておらず、Aの座標にBが移動してしまいます。
この役目はサーバじゃない?クライアントBが把握する必要があるの?
> 調べたところ双方向パイプという処理を施せば子プロセス間で座標の判断ができる
うぇwwwwwwwwwwwwwww
0379デフォルトの名無しさん
2006/11/15(水) 22:46:06(;;'-')ゴクリ
0380デフォルトの名無しさん
2006/11/15(水) 23:18:510381デフォルトの名無しさん
2006/11/15(水) 23:23:380382デフォルトの名無しさん
2006/11/15(水) 23:24:060383デフォルトの名無しさん
2006/11/15(水) 23:43:09面倒だから?
0384デフォルトの名無しさん
2006/11/16(木) 00:04:440385デフォルトの名無しさん
2006/11/16(木) 00:20:03P2Pで一台だけホストしてゲームするとかなら効果はあるだろうけど移植性が無いし
0386デフォルトの名無しさん
2006/11/16(木) 00:20:35WSAAsyncSelect()で設定できるWindowハンドルに対してしかできないようです。
ソケット用のスレッドにPostThreadMessageするか、関数を呼んで欲しいのですが、
そのような関数が見あたりません。
やはり無いんでしょうか?
0387デフォルトの名無しさん
2006/11/16(木) 01:04:530388デフォルトの名無しさん
2006/11/16(木) 09:48:150389デフォルトの名無しさん
2006/11/16(木) 20:49:23WaitFor...Ex系でAPCを使うとかいろいろあるだろうに。
0390デフォルトの名無しさん
2006/11/16(木) 21:49:16ウィンドウ?
おまえさん偏ってないかい?
0391デフォルトの名無しさん
2006/11/16(木) 22:02:250392デフォルトの名無しさん
2006/11/16(木) 22:20:240393デフォルトの名無しさん
2006/11/17(金) 00:09:060394デフォルトの名無しさん
2006/11/17(金) 00:12:17内容見ればわかる
わからないアホが二人もいたか・・・
0395デフォルトの名無しさん
2006/11/17(金) 00:45:43直前のレスに対するレスじゃないものにアンカーをつけないのは
マナーその他何も考えてない、世界が自分中心に回っていると思っている証拠。
別に俺の知人じゃないから、俺は2chにそういう奴が居ても平気だけど。
0396デフォルトの名無しさん
2006/11/17(金) 00:47:58次のレスにエスパー募集中と書かれることになるわけだ。
0397デフォルトの名無しさん
2006/11/17(金) 00:59:050398デフォルトの名無しさん
2006/11/17(金) 04:30:39^^;;;;;;;;;
0399デフォルトの名無しさん
2006/11/17(金) 11:03:010400デフォルトの名無しさん
2006/11/17(金) 13:09:47まなー云々は同意するけど、わからないアホが2人もいたのは歴然たる事実。
0401デフォルトの名無しさん
2006/11/17(金) 21:28:30わからないというか、勘違いでしょ。
誰もが、常にスレの前後を見てるわけじゃない。
たまたま画面の一番上が >>388 からだったら、俺でも >>389 は
ちょっとノータリンだと思う。
そういうことを避けるために、アンカーというお約束がある。
「3個前ぐらい見るのは常識だろ」という奴は、自分の常識を語っ
ているだけ。
0402デフォルトの名無しさん
2006/11/17(金) 21:34:58恥の上塗りをいつまで続けるんだろう
0403デフォルトの名無しさん
2006/11/17(金) 21:51:50うん。常識だマナーだっていうあたりの論に関してはまるきり異論ないですよ。
でも「>>389を見て>>388への返答だと思う」ってのは勘違いの域を超えてるな、と漏れは思う。
だって内容にまるで関連性が無いんだから。
0404389
2006/11/17(金) 22:42:50一つ上のレスしか読まない人のことまで思い至らなかった。
今は反省している。m9(^Д^)プギャー!!
0405デフォルトの名無しさん
2006/11/17(金) 23:32:11> 勘違いの域を超えてるな、と漏れは思う。
俺から見ても「そう思う」のは正しいと思うが、誰もが常にそう判断
{する|できる} わけじゃないってこと。
徹夜明けでボケてるとか、>>404 じゃないけどむしゃくしゃしてるとか、
そもそも関連性が無い書きこする奴だっているわけだし、煽りたいだけ
の >>402 みたいな奴もいる。
ちょっと面倒だが、安全のために書いておくって言うのは、職業プログ
ラマとしては常識だと思う。
まあ、何も言っても聞かない奴とか、これぐらいは大丈夫と思ってる奴
とか、ルールを破ることをかっこいいと思ってるアフォががいるという
のも厳然たる事実なんだけどね。(w
0406デフォルトの名無しさん
2006/11/17(金) 23:40:260407デフォルトの名無しさん
2006/11/17(金) 23:43:310408デフォルトの名無しさん
2006/11/17(金) 23:44:30詭弁もほどほどにな。
0409デフォルトの名無しさん
2006/11/18(土) 00:42:07やっぱりでてきたね。(w
> 何も言っても聞かない奴
0410デフォルトの名無しさん
2006/11/18(土) 00:57:54>>409
お 前 が 言 う な wwwwwwwwwwwwwwww
0411デフォルトの名無しさん
2006/11/18(土) 01:02:520412デフォルトの名無しさん
2006/11/18(土) 01:23:41よぅ 厳然たる事実を目の前にしたか弱い子羊
0413デフォルトの名無しさん
2006/11/18(土) 04:07:59結局、pollは1024以上のソケット待ちたいときとか
conect完了待ちも読み込み待ちもごっちゃに待ちたいときとか
そういうときに使えばいいってことでおk?
0414デフォルトの名無しさん
2006/11/18(土) 09:18:56>>410-412
毎回3人セットで出てくるんだね。
3人も必死の奴がいるのか、自演かどうかは知らんけど、
ご苦労なこったな。(w
0415デフォルトの名無しさん
2006/11/18(土) 11:14:02> conect完了待ちも読み込み待ちもごっちゃに待ちたいときとか
これは関係ない。
大量のfdを扱う時、select(2)はbit操作がボトルネックになる。
>>5
>C10K ヘヴィーロードサーバ
> http://www.kegel.com/c10k.html
にそれを解説した論文がある。
0416デフォルトの名無しさん
2006/11/18(土) 12:08:49WindowsXPのアプリ1からrshコマンドをLinuxマシンに発行してLinuxマシン上で
アプリ2を動かすようなのを作りました。
今は、問題なく動いているのですが、例えばLinuxマシンがダウンしている場合には
当然rshがエラーを返します。
こういう場合に、事前に、Linuxマシンが正常動作しているとか、Windows-Linux間で通信が
正しく行えるかどうかとかを調べる一般的な良い方法などありますか?
0417デフォルトの名無しさん
2006/11/18(土) 12:52:130418デフォルトの名無しさん
2006/11/18(土) 12:55:25「Linuxマシンが正常動作しているとか、
Windows-Linux間で通信が正しく行えるかどうか」
の検査そのものになっていることに気づけ。
pingでも送るか?
たとえばping含む別の方法で「Linuxマシンはup状態」だと返されたとしても、
rshコマンドの実行に失敗したら意味ないだろ。
無駄に複雑にするより、rshコマンドの失敗原因を正しく取得する方法を
探すべきだろう。
0419デフォルトの名無しさん
2006/11/18(土) 13:07:40rshのタイムアウトと天秤にかければ、有益な場合がある。
All or nothingの思考に陥るべきではない。
0420デフォルトの名無しさん
2006/11/18(土) 13:15:59よく考えればわかるけど。
0421デフォルトの名無しさん
2006/11/18(土) 16:28:21たとえば、ファイルがない場合にファイルを作成してしまうようなプログラムは
何も考えずに
...ファイルの有無チェック...
...ファイルが無ければファイル作成...
などと書ける
しかし実際のところこのチェックは完全ではない
共有資源というのはそういうものだ
0422デフォルトの名無しさん
2006/11/18(土) 16:30:060423デフォルトの名無しさん
2006/11/18(土) 16:32:25ええ
それが
「ファイルを作成」
というもので
>>416は
「rshで接続」
というものです
0424デフォルトの名無しさん
2006/11/18(土) 16:36:030425デフォルトの名無しさん
2006/11/18(土) 17:11:06障害を発見したことにするしかないわけだけど、
単なるチェックのタイムアウトと、
rsh実行のタイムアウトによる中断では、
副作用のatomicityが全然違う。
事前にチェックできることはしたほうがいいことは結構多い。
0426デフォルトの名無しさん
2006/11/18(土) 17:34:40ここ詳しく
0427416
2006/11/18(土) 19:02:49私としては、rshがエラーでタイムアウトするまでに数秒かかるので、
それをもう少し早くしたいのです。
例えば、WindowsとLinuxはsambaでファイル共有しているので、Windowsから
Linuxのファイルがオープンできるかどうかで通信ができるかどうか
調べる作戦はどうでしょうか?これだともう少し早く調べられませんか?
0428デフォルトの名無しさん
2006/11/18(土) 19:30:49お前はもっと勉強してからこい
0429デフォルトの名無しさん
2006/11/18(土) 20:15:46別の監視スレッドを立てて、そいつでカウントダウンして
タイムアウトしたらrshをSATSUGAIすればいいと思う。
0430デフォルトの名無しさん
2006/11/18(土) 21:06:56たとえばsshなら接続タイムアウトがあるし、
rsh相当のことができるんだけどどう?
0431初心者です
2006/11/18(土) 21:50:14お尋ねしたいことがあります。
自分のノートパソコンにUbuntu 6.10 をVMware Workstation でインストールしました。
Unix C言語のネットワークプログラミングを学びたいからです。
そして、インストールが完了したのですが /usr/include/ に
C言語の標準ヘッダ(stdio.h等)がありません。
gccはインストールされています。
C言語のヘッダファイルはどうやって入手するのですか?
どなたか回答をよろしくお願いします。
0432(^-^) ◆MONSOON/qo
2006/11/18(土) 22:02:160433デフォルトの名無しさん
2006/11/18(土) 22:12:380434デフォルトの名無しさん
2006/11/19(日) 00:47:23入れたOSは何? Linux?
find / -name stdio.h -print
のコマンドを入れて探してみてや。
ヘッダファイルは、OSの関数を使うためのものだから、
OSを入れた時点であるよ。
gccの用意している関数ライブラリがあれば、
それ用のヘッダファイルは、新規にどっかにあるよ。
0435デフォルトの名無しさん
2006/11/19(日) 02:52:15ubuntuって書いてあるし
>>431
開発環境作るにはパッケージを別にインスコしなくちゃならんぜ
インスコした後でまだ出るってんなら、色々面倒だから再度ubuntu入れて見れ
0436デフォルトの名無しさん
2006/11/19(日) 08:51:55ubantuというのはLinux配布パッケージの一種か?
VineとかDebianとかRedhatとか何の知れた配布版のほうが
良いのではないか?
Linux配布版使ってみると、できの悪いと思えた
Win95やWinNT4のインストーラのほうが、Linux系より出来が良い
のを知ったよ。
初期のLinux配布版はX表示のための画面初期設定すら失敗
してしまう。
0437デフォルトの名無しさん
2006/11/19(日) 09:07:53あと >>431 の質問はネットワークプログラミングに何にも関係ないのでよそ行ってくれ
0438デフォルトの名無しさん
2006/11/19(日) 09:24:030439デフォルトの名無しさん
2006/11/19(日) 09:46:070440デフォルトの名無しさん
2006/11/19(日) 12:30:330441デフォルトの名無しさん
2006/11/19(日) 12:52:50クライアント1がクライアント2に戦闘を仕掛け、勝利したならクライアント2を強制的に切断させたいのですが、
クライアント1が戦闘する意思をサーバに伝えた後、サーバがクライアント2を戦闘を行う処理に飛ばす方法がわかりません。
クライアント1は関数で飛ばそうと思っています。どうすれば良いかアドバイスお願いします。
0442デフォルトの名無しさん
2006/11/19(日) 13:27:59これはひどい
0443デフォルトの名無しさん
2006/11/19(日) 13:54:26サーバがクライアントに通知を伝える仕組みはあるの?
どうもクライアント⇒サーバ方向しか考えてないように見える
0444デフォルトの名無しさん
2006/11/19(日) 15:00:390445デフォルトの名無しさん
2006/11/19(日) 15:04:01ubantuじゃなくてubuntuだよ?
そういう君にはgoogleってサイトがお勧めだよ★
「りなっくす」って検索すればいっぱい情報がでてくるんだよ☆
0446デフォルトの名無しさん
2006/11/19(日) 19:16:140447368
2006/11/22(水) 19:57:54WindowsXP用のOpenSSL ライブラリがビルドできました。
HTTP over SSLクライアントのテストプログラムを作って、
OpenSSLのSSLソケット関数をリンクするコンパイル+ビルドも成功。
VisualC++ExpressEdition使ってるのでただでできた。
アパッチHTTPSサーバと暗号化通信動作もOK。
こんどは電子証明書のサーバ認証実験を行う。
0448デフォルトの名無しさん
2006/11/22(水) 21:30:53まとめてうp
0449デフォルトの名無しさん
2006/11/23(木) 17:51:13OpenSSLのWinXP移植版に興味ある人いる?
いればインスコ方法やバイナリ、ソースも公開するけど。
やり方はすでにやってる人いて公開されてるし。
0450デフォルトの名無しさん
2006/11/23(木) 18:16:54俺は、興味は無いけど「ソース公開」してくれれば
ためになる人もいるだろう。
0451デフォルトの名無しさん
2006/11/23(木) 18:31:190452デフォルトの名無しさん
2006/11/23(木) 20:43:04似たようなことやりたかったんで、UPしてくれると助かる。
0453デフォルトの名無しさん
2006/11/24(金) 00:38:12スレ違いだからよそでやってくれ。
0454デフォルトの名無しさん
2006/11/24(金) 01:09:14ライブラリの話だからいいじゃないか
0455デフォルトの名無しさん
2006/11/25(土) 11:47:32スレ違いと判断する理由は何ですか?
迷惑ならば公開も止めます。
SSL/TLSによるネットワーク上の暗号化通信プログラミングの話なので、スレッドのカテゴリに
合わないということはなく、合致していると考えて書いています。
0456デフォルトの名無しさん
2006/11/25(土) 11:54:12フツウにOpenSSLビルドすると大概の人がミスってるから。
0457デフォルトの名無しさん
2006/11/25(土) 11:55:15喜んでくれる人、有難がってくれる人がいたら公開…みたいな
行動基準はあまりその手の話では上手くいかんよ。
とりあえず公開してみる->あとから喜んでくれる人が現れた…
みたい流れが成功するパターンかな。
まずギブしてからテイクだ。例え感謝の言葉一つであってもテイク
を確約してくれないとギブしない…みたいな人はネット上では相手
にされないよ。
0458デフォルトの名無しさん
2006/11/25(土) 15:44:09ライブラリの構築はネットワークプログラミングじゃないし、環境依存が甚だしい。
0459デフォルトの名無しさん
2006/11/25(土) 16:54:34ライブラリってレベルじゃねーぞ!
0460デフォルトの名無しさん
2006/11/26(日) 08:42:03いいなら専用サイト作ってライブラリ公開してほしいね
使いたい人いっぱいいると思うよ
0461デフォルトの名無しさん
2006/11/26(日) 09:35:01http://www.slproweb.com/products/Win32OpenSSL.html
スレ違いの話をやめろ、ググれもしない屑ども
0462デフォルトの名無しさん
2006/11/26(日) 10:45:28失敗するので、それだけの知識でOpenSSLを使いこなすことはできません。
0463デフォルトの名無しさん
2006/11/26(日) 11:42:07理解できないなら帰れ
0464デフォルトの名無しさん
2006/11/26(日) 11:44:070465デフォルトの名無しさん
2006/11/26(日) 11:46:25つまり何も語るなと
雑談スレがあちらにございます
0466デフォルトの名無しさん
2006/11/26(日) 11:55:14「リンクで失敗」するとかについて語るところじゃない。
0467デフォルトの名無しさん
2006/11/26(日) 12:10:420468デフォルトの名無しさん
2006/11/26(日) 12:14:12オープンソースなんだから
0469デフォルトの名無しさん
2006/11/26(日) 12:20:34プログラミングというよりも、設計のほうがこのスレの趣旨に沿ってるだろ?
上流工程の話題も多いし。
APIの些細な差異とかライブラリの設定とかリンク方法なんかは
下流工程やってるコーダどもにやらせとけばいいんだよね
場違いな馬鹿(おそらくコーダ)が、
リンク成功したとかしないとか日記風に語ってるのが現状。
0470デフォルトの名無しさん
2006/11/26(日) 14:29:18設計よりはプログラミングのほうがこのスレにあってるのは間違いない。
あまりにも何かに特化した話題は勘弁だが
そこは話題提供者が工夫すればいい。
0471デフォルトの名無しさん
2006/11/26(日) 15:04:41スレタイ「ネットワークプログラミング相談室」
0472デフォルトの名無しさん
2006/11/26(日) 15:17:07「プログラミング設計」とでもいいたいんでしょ
まあ個々のOSの話になると、ここでやるか専門スレに転送するかは
そのときの面子次第だろうけどね
0473デフォルトの名無しさん
2006/11/26(日) 15:22:17ここでやる話題なじゃいないな。
0474デフォルトの名無しさん
2006/11/26(日) 16:09:16けど、構築方法はスレ違い。
0475デフォルトの名無しさん
2006/11/26(日) 16:13:420476デフォルトの名無しさん
2006/11/26(日) 16:27:200477デフォルトの名無しさん
2006/11/26(日) 17:35:14じゃ何がメジャーなんだよwww
0478デフォルトの名無しさん
2006/11/26(日) 19:14:35私の調べた複数の文献では、OpenSSLが、SSL V2/3、TLS1.0の実装実例として説明されており、
現段階ではそれを破る手法が確立されていないという点で、電子商取引にも広く利用されている
実績と合わせて考えても、ネットワーク上のセキュアな通信を実現する上で重要な
ソフトウェアと思います。
0479デフォルトの名無しさん
2006/11/26(日) 19:18:10そうしたOpenSSLを応用するプログラミング手法を知る設計者は稀少です。
ここで攻撃に出てくる質の悪いプログラマは無視することが良いと思います。
0480デフォルトの名無しさん
2006/11/26(日) 19:52:220481デフォルトの名無しさん
2006/11/26(日) 19:56:17じゃね? 人間案外想像力ないものよ
0482デフォルトの名無しさん
2006/11/26(日) 20:26:19全員プロ意識もってもらわないと迷惑だってことだべ
0483デフォルトの名無しさん
2006/11/26(日) 20:31:43なんてことで書き込みしないでほしい
0484デフォルトの名無しさん
2006/11/26(日) 20:36:48IE,IISはOpenSSLを使っていないよ
IEのシェア率が8割超えてるのはご存知のとおり
サーバシェアもIISがApacheより上
ということは、Windowsの独自ライブラリが世の中のほとんどの
SSLトランザクションに関わってると見ていいんじゃないかな。
そうそうう、firefoxはOpenSSLを使わないよ。Mozilla独自ライブラリ。
Operaはどうだろう。
0485デフォルトの名無しさん
2006/11/26(日) 20:39:46だけどApacheも無視していいほど少なくはないぞ。
> Operaはどうだろう。
使ってるらしい。
http://internet.watch.impress.co.jp/cda/news/2006/09/22/13370.html
0486デフォルトの名無しさん
2006/11/26(日) 20:59:40へぇー、初めて知った。
さすがにSSLを作った自負があると見るべきところなのかな。
0487デフォルトの名無しさん
2006/11/27(月) 00:09:54SSL は HTTP だけの為にある物じゃないがな…
それにアクセラレータカードなんかは OpenSSL 経由が多いんじゃないの?
>>486
NSS は Netscape にルーツを持つサーバ製品でも良く使われているよ。
0488デフォルトの名無しさん
2006/11/27(月) 00:33:58そのほかだと、VPNソフトぐらいですかね?
OpenSSHを直接商取引に使うとは考えにくい・・・
アクセラレータは個々にプラグインを作るんじゃないかな。
たとえば
ttp://www.msol.co.jp/it/msolock/crypto/crypto-pci.html
は
>WEBサーバ:
>Apache WEB Server
>C2NET Stronghold
>iPlanet WEB Server
>Microsoft IIS / BackPffice
>Netscape Enterprise Server
>Netscape Proxy Server
>Netscape Directory Server
に対応するとある。(backpfficeってなんだよ)
逆にいうならこれだけSSL実装はあるってことだ。
つかいまどきIISに(というかWindowsに)対応しないってありえんだろ。
0489デフォルトの名無しさん
2006/11/27(月) 00:34:490490デフォルトの名無しさん
2006/11/27(月) 00:58:25それ、Apache は OpenSSL, iPlanet/Netscape は NSS だと思うよ。
IIS は良く知らないけど。
0491デフォルトの名無しさん
2006/11/27(月) 01:29:50上流工程の話ならマ板でやれ。
0492デフォルトの名無しさん
2006/11/27(月) 01:49:420493デフォルトの名無しさん
2006/11/27(月) 02:04:44rawmode.cgi自体を変更してどうすんだよ
0494デフォルトの名無しさん
2006/11/27(月) 22:07:58Win2003svrだとCALが必要になるのね。知らんかった。Orz
Linuxブームが下火になったんで好き勝手やってくれるのぅ。。
ところで、サーバ側からコネクションを張ったらCALが要らないなんて理論は通らないよな〜?
0495デフォルトの名無しさん
2006/11/27(月) 22:42:30妙な話だがな
ということでオレオレプロトコルをHTTPでwrapすればおk
0496デフォルトの名無しさん
2006/11/27(月) 22:55:28http://www.microsoft.com/japan/windowsserver2003/howtobuy/licensing/caloverview.mspx
この話ですね。
自作クライアントプログラムをWin2003にインストールして、Win2003の外にある
FTPサーバへコネクトをかける場合もCALのライセンス購入が必要でしょうか?
APIの使い方や動作結果に、CALの有無は影響を及ぼしますか?
0497495
2006/11/27(月) 23:31:59WIN2003で他人様の作られた(オリジナル)プログラムが、MFCの中で
Socket()の後に、Bind()を実行するとエラーコードが帰ってきます。
これはCALの取得の有無と関係がありますか?
0498デフォルトの名無しさん
2006/11/27(月) 23:40:552003svrではインターネットからの匿名アカウントでの不特定多数接続以外はCALが必要なそうだ。
サーバの中の人がクライアント側にアクセスしたりHTTPでラップしても駄目。
コネクトがサーバ、クライアントどちらから接続されたに関係なく2003svrに接続した時点でアウト!!
http://www.microsoft.com/japan/licensing/brief/default.mspx
マルチプレキシング (多重化) - クライアントアクセスライセンス (CAL) の要件の項目を参照。
2003svrでは同時使用ユーザー数モードが未だ有効なので同時接続が少なければ
これでいける。w
0499デフォルトの名無しさん
2006/11/28(火) 00:17:13同時使用ユーザー数モードを使うにはどう設定すればいいですか?
コンパネの何で設定すればよいですか?
0500デフォルトの名無しさん
2006/11/28(火) 00:24:460501デフォルトの名無しさん
2006/11/28(火) 00:30:050502デフォルトの名無しさん
2006/11/28(火) 01:25:34Linuxのカーネル再構築の話なんかもうざし。
0503デフォルトの名無しさん
2006/11/28(火) 01:31:32そもそも何で Linux のカーネル再構築が出てくるんだ。
0504デフォルトの名無しさん
2006/11/28(火) 02:16:17厳しいのう
0505デフォルトの名無しさん
2006/11/28(火) 12:57:12>コネクトがサーバ、クライアントどちらから接続されたに関係なく2003svrに接続した時点でアウト!!
Win2003PCで走るプログラムのWinAPIレベルで見たとき、bind()関数Callからの戻り値にエラーコードが帰るのですか?
それともListen()あるいはConnect()関数への戻り値にエラーコードが帰るのですか?
0506デフォルトの名無しさん
2006/11/28(火) 13:14:31ただのバグか設定ミスだと思うよ。
冷たいようだけど、WSAGetLastError で何のエラーが出てるのか調べて
書いてくれるまでは漏れはもう相手にしないから。
0507デフォルトの名無しさん
2006/11/28(火) 13:27:51そのお辞めになっている方のプログラムはWinXP、WIn2000で走らせると
正常にFTPサーバにコネクトしますが、Win2003ではBind()でエラー
コードが帰ってきます。
Win2003PCが手持ちにないので、持っている人に時間を割いてもらい、
トレースしてもらいました。
自分で調べたいのは山々ですが、Win2003PCもVisualC++も持っていない状態で
対策を漏れがとることになっています。
現在の状態では仮に原因がわかってバグであっても、パソコンもVC++もないので
ソース修正や再コンパイルができません。・・・という困難な有様です。
パソコンやWin2003やVC++を買う予算も現在ありません。
漏れは無理な仕事に思えますが、上の人はやれ!と言っています。
0508デフォルトの名無しさん
2006/11/28(火) 13:52:29アクティブモードのデータポートが変なポート番号決め打ちでbindしているとか。
2003 で ftp サーバとか動いていたら止めてみてはどうですか?
netstat -ab で Listen してるポートと実行モジュールの情報が得られるので、
そのアプリが何番のポートを使うのかを調べて、Windows 2003 でそのポートが
空いているかをチェックしてみてください。
0509デフォルトの名無しさん
2006/11/28(火) 18:15:52サーバ側のプログラムを終了したいとき、
サーバ側で accept でブロックされている部分を終了させるには
closesocket でソケットを閉じるしかないでしょうか。
一応終了はしますがエラーが帰ってくるので
ほかにきちんとした終了の仕方があるのでしょうか。
shutdown でソケットを閉じてもだめでした。
accept の関数は別スレッドで動いています。
0510デフォルトの名無しさん
2006/11/28(火) 19:42:37過去ログ嫁>>509
0511デフォルトの名無しさん
2006/11/29(水) 07:59:16ドキュメントとサンプルが貧弱で閉口してるんですが
event_init()で初期化した後
ディスクリプタごとにevent構造体を用意して
event_set()を呼び出し、event_add()で監視するリストに追加
最後にevent_dispatch()またはevent_loop()で監視開始
あとは適宜ハンドラから呼び出された後にevent_add()で再度追加
を繰り返す
こういう理解であってるかな
あとevent_dispatch()は呼び出したらシグナルで割り込まれない限り帰らないってことでOK?
event(3)の
The callback returns 1 when no events are registered any more.
って部分がよくわからんです
0512デフォルトの名無しさん
2006/11/29(水) 09:17:49この部分は無視して良い。
libeventのソースに、該当するコードは含まれない。
0513デフォルトの名無しさん
2006/11/29(水) 14:18:550514デフォルトの名無しさん
2006/11/29(水) 21:05:53仕事で使うところからはじめてます。今はiSCSIについて。
0515デフォルトの名無しさん
2006/11/29(水) 22:15:46Apacheユーザ会がMSKK相手にゴネたからだな・・・
0516デフォルトの名無しさん
2006/12/02(土) 00:31:280517デフォルトの名無しさん
2006/12/02(土) 00:47:35その節はお世話になりありがとうございました。
さて近日proxyへtelnet proxy名 8080 で接続し、パケットを見てみたところ、
httpプロトコルとは異なる応答が帰ることに気づきました。
すなわち、telnetからGET+CR+LFを送信しても、index.htm(l)の内容は
帰ってこず、続けてCR+LFを送ると、読めない化け漢字に文字化けしたパケットが
帰ってきました。
(proxyを介さないイントラネット上のWEBサーバ(アパッチ)は、
telnet httpサーバ名 80 で接続して、GET+CR+LFを送信すると、
若干のRESPONSE文字列の次に続いてindex.htm(l)の内容を応答してきます。)
そこで知りたくなったのは、proxyとMS-IEブラウザ間のプロトコル規定です。
http手順でないのはわかりましたが、このproxy⇔MS-IEブラウザ間の
プロトコルについて資料をご存知でしたらお教え願います。
知る目的」は、自作のプログラムでproxyを通過した簡易閲覧ソフト作成の
実験をしてみたいのです。そのため、proxyとどのように交信すれば
良いかそのプロトコルを知りたいのです。
GGGLE検索を試みていますが有効な情報が得られていません。
0518デフォルトの名無しさん
2006/12/02(土) 00:52:49http://www.y-adagio.com/public/standards/tr_http11_2068/toc.htm
・・・try&errorでやったらとりあえず本家を漁ろうよ
0519デフォルトの名無しさん
2006/12/02(土) 02:11:41HTTPを知らんとかプログラミング以前の問題じゃねーの?w
0520デフォルトの名無しさん
2006/12/02(土) 11:12:294G越えのファイル受けようとしたらノートンにひっかかったりとかろくなことがない。
0521デフォルトの名無しさん
2006/12/03(日) 01:27:51スイッチングハブ機能を持つルータについてお聞きしたいのですが、
NATのマッピングテーブルにはMACアドレスも記録されるんでしょうか??
それとも、スイッチで分岐する前にarpテーブルを参照してMACアドレスを準備し、
Ethernetフレームを書き換えた後でスイッチに渡すんでしょうか??
製品の実装によるかもしれませんがご存知の方いましたら教えてください。
考え方が根本的に間違ってる可能性もありますが・・・汗
0522デフォルトの名無しさん
2006/12/03(日) 02:16:33考え方が根本的に間違っている上に板違い。
0523521
2006/12/03(日) 02:29:34ごめんなさい・・・(^^;
NAT越えに関する実験的なプログラムを作ってみようかなぁと思っていまして。。
実験しようにも自宅にブロードバンドルータがなくて...orz
NAT越えに関する資料とかはIPアドレスのことに着目しているので、
MACアドレスはどうなっているのかな?と思った次第です・・・
0524デフォルトの名無しさん
2006/12/03(日) 03:07:23とりあえずwiki
http://tinyurl.com/y4mpt7
0525デフォルトの名無しさん
2006/12/03(日) 08:47:14さすがに環境用意した方がいいと思うよ
ルータなんて4000円しないし、
中古ならもっともっと安いのがある
0526デフォルトの名無しさん
2006/12/03(日) 08:56:060527デフォルトの名無しさん
2006/12/03(日) 12:12:28UDP hole punchingとか。
0528デフォルトの名無しさん
2006/12/03(日) 12:42:560529デフォルトの名無しさん
2006/12/03(日) 12:55:36ARPを実装しただけで息切れしたからなぁ。
自分で作ったDHCPはなんか動くのが奇跡に近い感じだったよ
0530デフォルトの名無しさん
2006/12/03(日) 13:10:26TCP/IPやNATを理解できてない人が、理解できないだけの話。
自分のネットワーク機器の設定が、Symmetric NATかどうかくらい見分けられないと。
0531デフォルトの名無しさん
2006/12/03(日) 14:03:27つ ports
0532521
2006/12/03(日) 14:29:27やっぱり実際に環境ないとダメですよね。(^^;
必要になる可能性があるので、どっちにせよ近々買おうかな〜と思っていたんですが、
貧乏学生なためになかなか踏み切れなくて・・・orz
>>526
VMがまともに動かないほどのスペックのマシンを使っております・・・。
ちょっと社名忘れてしまいましたが、(サーバを使わず?)あらゆるNATを越えられる技術を開発した!
っていう記事を読んだことがあるので「不可能ではないのか・・・」と思い、
自分も何か考えられないかなと周辺知識を勉強し始めている段階です。 無理そうですが・・・。
たしか↑の技術は特許出願中とか書いてあったような。
0533デフォルトの名無しさん
2006/12/03(日) 14:48:04UPnPは、まずシンメトリックNATには実装されてることが殆どないしで
結局あれがある限り、全てのNAT超えは無理じゃないか。
0534デフォルトの名無しさん
2006/12/03(日) 14:54:13←(そとがわ | うちがわ)→
133.x.x.x 192.168.1.x
を
1 内→外で www.google.co.jpに192.168.1.1が接続した
2 www.google.co.jpでは133.x.x.x/192.168.1.1に送信(IPAddress in IPAddress? ip in ip?)
3 ゲートウェイがてきとーに分散させる
4 ウマー
なんだが、動的に解決できるし何より直感的…だった希ガス
でも対応機器が無いと死ねるね
0535455
2006/12/03(日) 15:39:40一部に要望があったので、電子証明書によるサーバ認証つきHTTPSクライントプログラム(OpenSSL利用)の
ソースプログラム例を公開しました。
無償のVisualC++ Express Editionで出来ることと
Winsock2.0を使ってWindowsXP環境で暗号通信の実験ができる点が便利なところです。
日本のMSDNフォーラムのVisualC++ Express Editionにところへおいてあります。
0536デフォルトの名無しさん
2006/12/03(日) 16:05:50thx
0537デフォルトの名無しさん
2006/12/03(日) 17:58:560538デフォルトの名無しさん
2006/12/03(日) 19:11:06そんな簡単なものか?
UDPの上にTCP実装するようなもんでしょ?
これぐらいみんな楽々な人?
0539デフォルトの名無しさん
2006/12/03(日) 19:15:02*bsd系ならnetgraph出てるし、プロトコルがスタックできる形で組み込まれてれば別に何とでもできるぉ (^ω^)
0540デフォルトの名無しさん
2006/12/03(日) 21:18:54ネットゲームの通信解析をして遊ぼうと思い、ws2_32.dllのクローンを作成。
それにログとり機能を付与して、対象のゲームに食わせた上で
send
sento
WSASend
WSASendTo
recv
recvfrom
WSARecv
WSARecvFrom
を監視し、データをファイルに出力してみました。
ところが、明らかに受信データが少ないのです。
ゲームの内容は
・リアルタイム対戦格闘ゲーム
・UDP通信のみ。TCP/IP通信は無い
のため、かなりの量の受信が期待できるはずでした。
上記以外に、受信用関数は無いと思うのですが、もしかして存在しますでしょうか?
無かった場合、次はDirectPlayを疑うことになりそうなのですが…。
・チート対策のための複雑化の結果、winsockとDirectPlayを併用しているのでは?
・DirectPlayは内部でwinsock呼んでるんじゃないのかな?
という疑問が出ています。
0541デフォルトの名無しさん
2006/12/03(日) 21:26:08パケットモニター併用しろ亜歩
0542デフォルトの名無しさん
2006/12/03(日) 21:38:43スレッドとか全く考えてないんじゃないかと思う
>>541の言うとおりwinpcapを使うなりでパケットをモニタしやがれ
0543デフォルトの名無しさん
2006/12/03(日) 21:50:55Winnyは、IPアドレスを暗号化したノードを使ってますが、
LimeWireにはそれがありません。
まさか、IPアドレスを適当に作って相手がLimeWireを起動してるかチェックなんてことはやってないだろし。
0544デフォルトの名無しさん
2006/12/03(日) 21:56:33gnutellaプロトコル調べれ
0545デフォルトの名無しさん
2006/12/03(日) 22:00:15了解しました。早速試してみます
0546デフォルトの名無しさん
2006/12/03(日) 22:02:02さもなきゃどこかでリストを管理してるよな
はっはっは
0547デフォルトの名無しさん
2006/12/03(日) 22:15:52ws2_32.dllのクローンを作るなんて凄い技術力だな〜
0548デフォルトの名無しさん
2006/12/03(日) 22:37:51パケット監視をしたところ、これでもかというくらい大量にUDP通信していました。
どうやらwinsockを使わずに通信しているようです。
ぐぐってみたところ、DirectPlayはUDP通信を利用しているとのこと。
多分DirectPlayを使っているんでしょうね…。
しかし、DirectPlayは下請けとしてwinsockを使っていないのでしょうか?
>>547
ラッパーDLLというべきなのでしょうか。
偽DLLを作るためのツールで簡単に作ることができました。
使ったのは listexp2.exe です。
0549デフォルトの名無しさん
2006/12/03(日) 22:39:09> UDPの上にTCP実装するようなもんでしょ?
全然違うぞ。
そりゃUDP hole punching使ったプロトコルで、
TCP相当の機能が欲しければ実装する必要があるが、
>>527のお題じゃあICMP ECHOに毛の生えたくらいのプロトコルでもいいわけで。
0550デフォルトの名無しさん
2006/12/03(日) 22:40:25そりゃ、EPD使えば、パケット見れるだろけど、
WinSockのDLL自分で作って、関数使ったときにログ記録させてんでしょ?
それなら、ネトゲはみんなWinSock使ってるハズだし(DPlayもWinSock使ってるらしい)
ログは確実に取得できると思うけど、なんでできないの?
0551538
2006/12/03(日) 22:59:07>>DLLClone
ネトゲをまじめに遊んでる方からすると
こんなミジンコ相手にしてほしくないものだが。
0552デフォルトの名無しさん
2006/12/03(日) 23:01:220553デフォルトの名無しさん
2006/12/03(日) 23:08:15当たり前だろ?
特定の数値を入力したいのに+1ずつしかあげることが出来なくて
さらにその+1をするためだけに数時間もPCの前に釘付けられるなんて尋常じゃないぞ
0554デフォルトの名無しさん
2006/12/03(日) 23:53:11てか、今時のネットゲームって通信暗号化されてるんじゃないの?
send/recvのバッファ見ても意味ないんでない?
0555デフォルトの名無しさん
2006/12/03(日) 23:57:08あ、別にチートとかそういうわけではないです。
通信ゲームの通信を全部ログとって、それを今度は再生させることで
汎用的にリプレイとか作れないかなと思いまして。
0556デフォルトの名無しさん
2006/12/04(月) 00:00:43生パケットで送信してたら、それではログ取れないかも。
でもこの送信もWinSockの関数使ってると思ったので、そっちも調べれば?
0557デフォルトの名無しさん
2006/12/04(月) 00:03:01特定しました(w
0558デフォルトの名無しさん
2006/12/04(月) 00:09:55listexp2.exe 具具ってみた。面白そうなツールですな。
DirectPlayってDLL実装なのか?
インポートライブラリを使ってるのならDepends.exeでwinsock使ってるかどうかはわかるでしょう。
ダイナミックロードならprocexp.exeで。
0559あっこ
2006/12/04(月) 00:23:37ax^2+bx+c=0をもとめるプログラミングを作成せよという課題がでました。
学校ではflot??とか、SQRT関数を用いてや、ソースファイルの後にINCLD・・・
・・STIの後にhtm.hをつけろとかいてありました。字が汚くて最後の方は自分で
なんとかいたかわかりませんでした><どなたかわかる方いたらお願いします><。。
よろしくおねがいします!
0560あっこ
2006/12/04(月) 00:26:420561デフォルトの名無しさん
2006/12/04(月) 00:34:40"INCLD"は#include?
"flot"はfloatのこと?
"STI"はなんだろ。
"htm.h"は何かのヘッダファイルの名前?
何を言ってるのかわからないから課題に答えてあげられません。
学校で友達に聞きなはれ。
0562デフォルトの名無しさん
2006/12/04(月) 00:42:23釣り? ここはスレ違いなのでこちらへドゾー
C/C++の宿題を片付けます 77代目
http://pc8.2ch.net/test/read.cgi/tech/1164079451/l50
0563デフォルトの名無しさん
2006/12/04(月) 00:50:23どうみても釣り。
>"STI"はなんだろ。
stdio.h
>"htm.h"は何かのヘッダファイルの名前?
math.h
0564デフォルトの名無しさん
2006/12/04(月) 00:53:25だめだ。難しすぎる。
0565あっこ
2006/12/04(月) 02:08:120566デフォルトの名無しさん
2006/12/04(月) 02:11:500567デフォルトの名無しさん
2006/12/04(月) 02:13:40FD_SET(0,&read); ・・・(1)
FD_SET(3,&read); ・・・(2)
について質問なんですけど、(1)(2)を処理した後って&readはどうなるんですか?
誰か教えてください><
0569デフォルトの名無しさん
2006/12/04(月) 08:48:110や3がセットされる。
ていうか0や3を即値でセットするのか。すげーな。
0570デフォルトの名無しさん
2006/12/04(月) 09:27:370571デフォルトの名無しさん
2006/12/04(月) 10:55:55中がどうなってるかはキニシナイ
0572デフォルトの名無しさん
2006/12/04(月) 11:29:13FD_系ホクロって本気で見えた・・・orz
0574デフォルトの名無しさん
2006/12/04(月) 17:58:370575デフォルトの名無しさん
2006/12/05(火) 02:08:30どうすればいいか全く分かりません。なので、皆さんのアイディアを下さい。
0576デフォルトの名無しさん
2006/12/05(火) 02:23:20片方で popen("tail -F /tmp/send");
もう片方で /tmp/send になんか書く
0577デフォルトの名無しさん
2006/12/05(火) 02:24:37四の五の言わずにまずはやってみろ!
0578デフォルトの名無しさん
2006/12/05(火) 06:56:27犯すぞ!
0579デフォルトの名無しさん
2006/12/05(火) 07:00:06四の五の言わずにまずは>>577を犯してみろ!
0580デフォルトの名無しさん
2006/12/05(火) 10:06:220581デフォルトの名無しさん
2006/12/06(水) 18:40:140582デフォルトの名無しさん
2006/12/06(水) 23:07:25ただいま制裁発動中なのでポートを開くことは出来ません。
またのご利用をお待ちしております。
0583デフォルトの名無しさん
2006/12/07(木) 10:19:21通報しました。
0584デフォルトの名無しさん
2006/12/08(金) 03:41:36まともな暗号化がされてればその程度でリプレイできるとは限らない。
再生攻撃って知ってるか?
まあネトゲがまともな暗号化使ってるとも限らないけど
0585デフォルトの名無しさん
2006/12/08(金) 14:08:040586デフォルトの名無しさん
2006/12/08(金) 20:30:11リプレイしたいならキー入力でも再生しとけ
0587デフォルトの名無しさん
2006/12/09(土) 09:10:32ゲー板でも篭もってろヒッキー
0588デフォルトの名無しさん
2006/12/09(土) 09:33:52せっかく引き篭りを直そうとゲー板から出てきたのにw
0589デフォルトの名無しさん
2006/12/09(土) 11:27:460590デフォルトの名無しさん
2006/12/09(土) 11:37:14サンプルに毛が生えた程度の話しかしてないわなw
0591デフォルトの名無しさん
2006/12/09(土) 11:54:320592デフォルトの名無しさん
2006/12/09(土) 12:43:320593ヽ(・∀・)ノ◎ウンコー
2006/12/09(土) 15:52:59プロキシサーバの話は参考になったが
最近は粘菌のせいで糞スレ化してるね。
まともな人は沈黙中。
0594デフォルトの名無しさん
2006/12/09(土) 17:12:19技術板の話よろしく
0595デフォルトの名無しさん
2006/12/10(日) 10:47:29勉強しました!
「一部のユーザーがGnutella Networkサーバーを立ち上げ、そのIPをWeb等で公開している。それをGnutellaのホスト情報に登録することで、Gnutella Networkに参加できるのだ。」
やっぱサーバ必要なんじゃん。
0596デフォルトの名無しさん
2006/12/10(日) 10:56:340597デフォルトの名無しさん
2006/12/10(日) 12:42:56会社から自宅のWinXPへVPNでアクセスしたいのですが、
会社にはファイアウォールがあります。
F/WではVPNの通過を許さないのは普通でしょうか。
(自宅のルータはデフォルトでVPNがブロックされており
設定を変えないと外からXPをアクセスできません。)
0598デフォルトの名無しさん
2006/12/10(日) 13:14:50あと板違い。
0599デフォルトの名無しさん
2006/12/10(日) 18:28:48Winsock2.0系パケットキャプチャでプロミスキャスにせず、
自分の送受信パケットだけを取りたいのですができますか。
opt=3
ioctlsocket(s, SIO_RCVALL, &opt);
プロミスキャス設定を取ると、自分のパケットすら取得できなくなる。
PlatformSDKのサンプルとかあると嬉しいです。
0600デフォルトの名無しさん
2006/12/10(日) 22:51:33if( poll( &fds, nfds, timeout ) > 0 ){
if( fds[0].revents & ( POLLIN | POLLOUT ){
//いろいろrecv処理
//その後send
send( fds[0].fd, buf, buf_size, 0 );
}
という形で作ってるのですが、ソケットがPOLLOUT(送信可能かどうか)の判定は、
sendの直前でやるべきでしょうか?
というのも、「いろいろrecv処理」してる時にソケットが送信可能じゃない状態になってしまってたら。と考えてしまうんですが。
0601デフォルトの名無しさん
2006/12/10(日) 23:21:07つか1コマンド分の送受信バッファは要るんじゃなかろうか
0603デフォルトの名無しさん
2006/12/11(月) 02:07:090604600
2006/12/11(月) 17:16:47間違えてました。
普通にブロッキングソケットを使ってます。
0605デフォルトの名無しさん
2006/12/11(月) 21:46:02ノンブロッキングじゃダメな理由は?
0606600
2006/12/11(月) 22:49:55ノンブロッキングにします。
0607デフォルトの名無しさん
2006/12/11(月) 23:30:470608デフォルトの名無しさん
2006/12/11(月) 23:47:510609デフォルトの名無しさん
2006/12/12(火) 21:53:05始めようかと思っていてC++から始めようと思っているんですけど、
数ある言語の中でどれを選べばいいか迷ってます。
みなさんのご意見お願いしますm(_ _)m
0610デフォルトの名無しさん
2006/12/12(火) 22:01:33C++から始めようと思ってるならそれでいいと思う。
最短距離でメッセンジャー作りたいならJava, C#あたりかな。
どちらにしろ一から言語を覚える段階なら結構苦労すると思うので、
最終目標のことは意識しないで飽きずに頑張ることが大事
0611デフォルトの名無しさん
2006/12/12(火) 23:13:30後になって気づくだろうけど
> 自分でメッセンジャーを作りたいと思い、プログラミングを始めようかと思っていて
この考え自体がおかしいですのよ
0612デフォルトの名無しさん
2006/12/12(火) 23:18:36C++でもJAVAでも作れる物だけど、自分はC#がお勧めかな。
VisualC# Expressは無料で使えるし試してみたら?
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
がんばって。
0613デフォルトの名無しさん
2006/12/12(火) 23:28:15どこがおかしい?
0614デフォルトの名無しさん
2006/12/12(火) 23:55:35自分で作りたいと言ってる初心者向かって
考え自体おかしいと返す馬鹿は放置。
0615デフォルトの名無しさん
2006/12/13(水) 00:19:530616デフォルトの名無しさん
2006/12/13(水) 00:42:42弱いものいじめはよくないぜ。
0617デフォルトの名無しさん
2006/12/13(水) 01:13:120618デフォルトの名無しさん
2006/12/13(水) 01:48:18理由をきいてあげようじゃないか
0619デフォルトの名無しさん
2006/12/13(水) 05:39:42どこで間違っちゃったんだろうねw
0620デフォルトの名無しさん
2006/12/13(水) 08:48:44TCPの上に今では見るも悲惨なプロトコルのっけて通信してた。
0621デフォルトの名無しさん
2006/12/13(水) 09:09:01611 > 素人が何言ってんだ。その考え自体おかしいですよ。
若きゲイツ > すみませんでした。作るの止めます。
プログラマの給料は今の1.5倍ぐらい高くなってたかもね。
0622デフォルトの名無しさん
2006/12/13(水) 09:50:210623609
2006/12/13(水) 11:01:12C#かC++のどちらかに絞り込めました。
初心を忘れないようがんばります!
0624デフォルトの名無しさん
2006/12/13(水) 17:42:49VBじゃなかったか?
0625デフォルトの名無しさん
2006/12/13(水) 18:04:36N88Basic インタープリタ
0626デフォルトの名無しさん
2006/12/13(水) 19:30:44OSは確かどっかからか権利買ってIBMに売り込んだんじゃなかったかな。
0627デフォルトの名無しさん
2006/12/13(水) 21:07:11NG。アルテア用のBASICだよ
当時は実機がなかったので、ポール・アレンの書いた
8080エミュレータ上で開発したのは有名な話
>>626
シアトルコンピュータのQDOS
CP/Mの8086版互換OSとでもいえるモノで
これをベースにPC-DOSに仕立て上げた
0628デフォルトの名無しさん
2006/12/13(水) 21:28:57色々桁違いだが。
0629デフォルトの名無しさん
2006/12/14(木) 00:36:36スティーブンスくらいは読んでるんだろうな?全ページ。
0630デフォルトの名無しさん
2006/12/14(木) 00:45:18まずはsageを覚えような?前ページ。
0631デフォルトの名無しさん
2006/12/14(木) 01:14:11それに、sageは別にえらくはない
スティーブンス本はこの世界の常識なので、
このスレの住人なら一通り目を通しているor書いてあることを理解できるくらいは期待したいところだ。
0632デフォルトの名無しさん
2006/12/14(木) 01:22:000633633
2006/12/14(木) 01:27:35RTTの計測はwinsockでも可能ですか?
よろしくお願いします。
0634デフォルトの名無しさん
2006/12/14(木) 09:47:10これ、社で導入しそうなクライアント監視システムです。
閲覧したURLやUSBデバイスの接続など監視できるんですがクライアントPCに専用ソフトを
入れなくてもlocalセキュリティポリシィを変えれば監視できるんだそうです。
ファイル共有とかnetbios等使って実現していると聞きました。
具体的にどのようにしているのかわかる人いますか。自分でも作りたくなりました。
0635デフォルトの名無しさん
2006/12/14(木) 11:39:130636デフォルトの名無しさん
2006/12/14(木) 14:19:51FindWindowとかで検索掛けてクライアントからLOGとる方式で作った事ある。
けどクライアント側に専用ソフトなしでどうやっているのか知りたかった。
そけだけ。
>635さん 教えてください。
0637デフォルトの名無しさん
2006/12/14(木) 14:27:450638デフォルトの名無しさん
2006/12/14(木) 18:37:35開いて待ってれば入って来るのでしょうか?
今フリーソフトのクリップボード共有ツールを使わせて貰っていて、
非Win環境との簡単なデータのやり取りもこの共有ツールに打つ様に
すれば便利かなと思っているのですが、暗号化等されていなければ
ポート開いて入って来るパケットを観察、似た互換パケットをブロード
キャスト送信と言う手順で簡単に出来るのかな…
0639デフォルトの名無しさん
2006/12/15(金) 03:50:52案ずるより生むが易し
0640デフォルトの名無しさん
2006/12/15(金) 20:20:370641デフォルトの名無しさん
2006/12/15(金) 22:12:190642デフォルトの名無しさん
2006/12/15(金) 22:54:210643デフォルトの名無しさん
2006/12/15(金) 23:02:540644デフォルトの名無しさん
2006/12/15(金) 23:06:020645デフォルトの名無しさん
2006/12/16(土) 01:09:040646デフォルトの名無しさん
2006/12/16(土) 01:11:430647デフォルトの名無しさん
2006/12/16(土) 01:31:47別にRawパケットいらないし。
HTTPもどきのメッセージをSOCK_STREAMじゃなくてSOCK_DGRAMで投げるだけ。
0648デフォルトの名無しさん
2006/12/16(土) 11:40:24ほんと?
0649デフォルトの名無しさん
2006/12/16(土) 11:42:500650デフォルトの名無しさん
2006/12/16(土) 11:45:17って話ですよ。MSに言わせると。
0651デフォルトの名無しさん
2006/12/16(土) 12:02:22って単なるWinsockのラッパーだから無理か・・・
0652デフォルトの名無しさん
2006/12/16(土) 12:08:400653デフォルトの名無しさん
2006/12/16(土) 15:43:570654デフォルトの名無しさん
2006/12/16(土) 20:31:13OSでプログラミング手法を変えてなんとかするしか、今は通用しないと思う。
0655デフォルトの名無しさん
2006/12/17(日) 01:18:14ヒント ソケットペア
0656デフォルトの名無しさん
2006/12/17(日) 01:54:50どんだけパケット延滞してんだよ
0657デフォルトの名無しさん
2006/12/17(日) 04:06:510658デフォルトの名無しさん
2006/12/17(日) 05:02:590659デフォルトの名無しさん
2006/12/17(日) 10:32:340660デフォルトの名無しさん
2006/12/17(日) 11:52:330661デフォルトの名無しさん
2006/12/17(日) 12:12:180662デフォルトの名無しさん
2006/12/17(日) 12:46:49「ソケットペア」って何よ?
UNIXのsocketpair(2)のことじゃないだろうなw
0663デフォルトの名無しさん
2006/12/17(日) 14:18:20rfc793の"pair of sockets"を日本語でソケットペアと表記するのはよくあること。
英語でもsocket pairで通じるだろ。
0664デフォルトの名無しさん
2006/12/17(日) 15:36:52スティーブンスの43ページ嫁
悲しいほどのモグリがいたもんだwww
0665デフォルトの名無しさん
2006/12/17(日) 15:47:350666デフォルトの名無しさん
2006/12/17(日) 16:28:440667デフォルトの名無しさん
2006/12/17(日) 16:54:290668デフォルトの名無しさん
2006/12/17(日) 18:53:33乙
0669デフォルトの名無しさん
2006/12/17(日) 19:32:06ゴルァ!
0670デフォルトの名無しさん
2006/12/17(日) 21:36:310671デフォルトの名無しさん
2006/12/18(月) 19:54:47確立済みコネクションが使っている、ローカルインタフェースの
インタフェース名や、インタフェースインデックスを取得したいのですが、
よい方法はありませんか?
とりあえず思いついたのは、
1. getsocknameでIPを取得
2. sysctlとかで (winsockだとGetAdaptersAddresses?)
インタフェースリストを取得
3. 2.で取得したリストの中から、1.のIPにマッチするインタフェースを調べる
という方法なのですが、そもそもipv6の場合 IPアドレス -> インタフェース
でよいものなのでしょうか?
0672デフォルトの名無しさん
2006/12/18(月) 21:07:45routingがdynamicに変わりうることを忘れるな。
一時的にも使っているインターフェース=出ていくインターフェースでない。
0673デフォルトの名無しさん
2006/12/18(月) 22:53:34interfaceが勝手に変わったりすんの?
0674デフォルトの名無しさん
2006/12/18(月) 22:57:10出ていくインターフェースは変わりうる。
0675デフォルトの名無しさん
2006/12/18(月) 23:36:57確立してると思ってるのは、TCP より上の人だけで、
中の人には単なるパケットだから、その時に一番よさ
げなインターフェースを選ぶよ。
0676デフォルトの名無しさん
2006/12/20(水) 02:18:210677デフォルトの名無しさん
2006/12/20(水) 07:22:24TCPなら確率したコネクションにたいして
出て行くインターフェース(≒SRC-IP)は同じまま保持
しないとまずいんじゃないかと思うが。
0678デフォルトの名無しさん
2006/12/20(水) 07:34:57具体的にどこがどういう風に?
0679デフォルトの名無しさん
2006/12/20(水) 07:48:38ソケットを識別しているのに、勝手にSRC-IP換えたら
通信不能でそ?この4組は通信の間同じ値になる必要があるはず。
SRC-IPが同じ複数のインターフェースがあるという(チーミング)なら
話はべつだが、それって、複数で1つのインターフェースみたいな扱いでそ?
0680デフォルトの名無しさん
2006/12/20(水) 09:30:470681デフォルトの名無しさん
2006/12/20(水) 09:44:02もっと勉強しる
0682デフォルトの名無しさん
2006/12/20(水) 13:49:25確かにINADDR_ANYでbindする時のsrc ipはインターフェイスから拾われるが、
だからといって通信にそのインターフェイスを使わなければならない訳ではない。
0683デフォルトの名無しさん
2006/12/20(水) 14:47:54そういうプロトコルスタック (if とsrc ip addr の対応が固定) もあるのかもしれないが、
Windows や Unix や Linux ではパケット送出時の if はルーティングテーブルによって選ばれて、
ソケットの src ip や if のもつ ip addr は考慮されないですよ。
0684デフォルトの名無しさん
2006/12/20(水) 15:41:38サーバ側であるlinuxのプログラムはwindowsのときのそれと
まったくちがうんですか?
0685デフォルトの名無しさん
2006/12/20(水) 15:43:360686デフォルトの名無しさん
2006/12/20(水) 15:44:480687デフォルトの名無しさん
2006/12/20(水) 16:08:30マジで?BINDしたらインターフェイス固定されるんじゃ
と思ったけどインターフェイスは固定されないのか
固定されるのはIPとポートだけか
0688デフォルトの名無しさん
2006/12/20(水) 16:09:55ほしいな
0689デフォルトの名無しさん
2006/12/20(水) 16:45:15Windows 側で作るときに Windows でしか使えない関数を使えば
全く違うようになるし、互換性のある同じ名前の関数を使えば
似たようなものになる(パラメータとか動作が微妙に違うかも
知れない)。
0690デフォルトの名無しさん
2006/12/20(水) 18:47:25うーん、まだ腑に落ちない・・・
connect、sendto するときにルーティングテーブルによって選ばれるのはわかるけど、
確立済みコネクション(connectしたあと)のsendでもルーティングテーブルによって
選ばれるってことでですよね。
そういうシナリオってイメージできないです・・・
0691デフォルトの名無しさん
2006/12/20(水) 19:54:31細かいとこが違うからハマる可能性がある
ManpageとかMSDNをよく見ること
0692デフォルトの名無しさん
2006/12/20(水) 20:00:29接続中にroute changeされたり、interfaceのリンクが落ちたり。
0693デフォルトの名無しさん
2006/12/20(水) 21:07:410694デフォルトの名無しさん
2006/12/20(水) 21:21:51最初if0でTCPの3-wayを終えると、そのソケットのSRCIPは210.168.1.Xでそ。
んでもって、そこでルーティングテーブルが変更されてDST-IPに近いのがif1という
ことになったら、SRC-IPは210.168.1.Xのまま、if1を通ってパケットが発信されるわけ?
そんなルーティング変更がなされて、しかもきちんと通信できるような機械が
そんじょそこらにあるっていうの?
0695デフォルトの名無しさん
2006/12/20(水) 21:58:130696デフォルトの名無しさん
2006/12/20(水) 22:43:58そんじょそこらにあるよ。
そこまで疑うなら試してみれ。
0697デフォルトの名無しさん
2006/12/20(水) 23:11:40普通ip自体をifと称さない
0698デフォルトの名無しさん
2006/12/21(木) 01:27:48あんたが想像力貧困だからどうだっていうの?
0699デフォルトの名無しさん
2006/12/21(木) 07:22:280700デフォルトの名無しさん
2006/12/21(木) 13:47:15そのip addressを持つifだろ。
特に、それに起因して文章に曖昧さが発生してるわけでもなし。
0701デフォルトの名無しさん
2006/12/21(木) 14:10:08エラーが帰ってくるんだが(errno:65.EHOSTUNreach)
20秒ぐらいたつと数秒間正常が帰ってくる…。何故?
0702デフォルトの名無しさん
2006/12/21(木) 14:13:49そうかそうか
ifにipaddressを持たせるヤツも居るんだ
しらなかった
0703デフォルトの名無しさん
2006/12/21(木) 15:00:390704デフォルトの名無しさん
2006/12/21(木) 18:07:07char packet[LENGTH];
で中身の領域を確保して、パケットの中身を
struct {
uint8_t hage;
uint16_t hige;
uint8_t huge;
};
という構造体で表現したとき、packetへhageは代入はできるのですが、
higeの代入が機種依存になってしいます
x86だと
*(uint16_t*)(packet+1) = hige;
が動作するのですが、sparcだとbus errorになってしまいます。
アライメントの問題なのはわかっているのですが、こういうとき共通のコードではかけないのでしょうか
0705デフォルトの名無しさん
2006/12/21(木) 18:19:38とかって、gccでは使えたっけ?
0706デフォルトの名無しさん
2006/12/21(木) 18:38:29>アライメントの問題なのはわかっているのですが、こういうとき共通のコードではかけないのでしょうか
htonsしてmemcpy。
0707704
2006/12/21(木) 19:02:35solaris10のgcc3.4.3で使えますね
>>706
memcpyの存在をすっかり忘れてました(w
pragmaよりは泥臭いけど、処理系依存(sunstudioも念頭に入れておかなきゃいけない)なのはちょと考えてしまうので、memcpyにします。
型ごとにmemcpy呼ぶ関数作るときにTemplateってあるのかと今気づいたC++10日目の初心者
0708デフォルトの名無しさん
2006/12/22(金) 00:54:48普通に、
struct {
uint8_t hage;
uint16_t hige;
uint8_t huge;
} x;
x.hage = pakcet[0];
x.hige = ((uint16_t)packet[1]) << 8 | (uint16_t)packet[2];
x.huge = packet[3];
って書けばいいと思う。
あと、pragme pack(1) とかすると、68K とかで hige にそのままアクセスすると
アドレスエラーになるような気がするが...。
0709デフォルトの名無しさん
2006/12/22(金) 07:58:15そのメンバのアクセスには、バスエラーにならない方法を使うはず。
0710デフォルトの名無しさん
2006/12/22(金) 15:18:44そいつはにわかには信じられないほど凄いな。
そういえば昔の Alpha AXP 用の Linux ではカーネルがトラップして面倒を見てくれてた。
パフォーマンスは大いに低下する。
0711デフォルトの名無しさん
2006/12/22(金) 22:45:11そんな余計なことをするぐらいなら、素直にエラーにしてくれたほうがいいんだけどなぁ。
0712デフォルトの名無しさん
2006/12/22(金) 23:06:14配置についてはどうなるか全く分からないのが言語仕様です。
0713デフォルトの名無しさん
2006/12/22(金) 23:21:360714デフォルトの名無しさん
2006/12/26(火) 01:00:53Base64にしてから送信などせず、そのまま送信です。
cygwinからWINDOWSに、buf="hoge\nhoge"という文字列を送信
したのですが、受け取ると文字の長さがstrlen(buf)=4
の"hoge"だけになってしまいました。
これは、プロトコルか何か決まりで正常なのでしょうか?
base64でエンコードしてから、送信すれば大丈夫でしょうか。
どんなことが考えられるのかご教授お願いいたします。
0715デフォルトの名無しさん
2006/12/26(火) 01:08:550716デフォルトの名無しさん
2006/12/26(火) 01:17:45"hoge\nhoge"のまま
受け取れないとおかしかったですか。
ありがとうございました。
0717デフォルトの名無しさん
2006/12/26(火) 02:02:31改行を他の文字に変えたり、
Base64でエンコードして送信、受信後エンコード
したら大丈夫でした。
んー、プログラミング駆け出しなので、
どこのコードが悪いのか全然わからないです。
httpとかコマンド送信するとき\r\nを最後につける
って本にあったのでそれと関係してると思ったのですが。
自分で作ったやつなので関係ないですよね。
\nでも\r\nでもどちらでも、切捨てになってしまいます。
どこがおかしいかなにか思い当たる節のある方
いらっしゃいますか?
0718デフォルトの名無しさん
2006/12/26(火) 02:18:28電話で「体の調子が悪いんです治してください」って騒いでるようなものだ
0719デフォルトの名無しさん
2006/12/26(火) 02:44:220720デフォルトの名無しさん
2006/12/26(火) 06:11:47ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3285.txt
お試しプログラム(cygwin用)を作ってみた
良い点
・"Hello\nworld!\r\n"という文字を送信して受信してる
・なんとなくpositive接続からpassive接続へ文字列を送信し、passiveな方で表示できる
悪い点
・バッファとかそのへんは参考になりません
・全体的に汚いです。コーディングスタイルは真似るべきではありません
いじょぅ
0721デフォルトの名無しさん
2006/12/26(火) 06:12:19禁止ワード入ってて自分で見れない
0722デフォルトの名無しさん
2006/12/26(火) 06:15:57-コンパイル方法-
mv 3285.txt hoge.c #ダウンロード&改名
gcc hoge.c -o tcptect
-実行方法-
コンソール1: ./tcptest s
コンソール2: ./tcptest c
で大体おk
分からなくなったらソース見てちょ
0723デフォルトの名無しさん
2006/12/26(火) 06:56:40話はそれからだ
0724デフォルトの名無しさん
2006/12/26(火) 09:10:310725デフォルトの名無しさん
2006/12/26(火) 11:17:43終了方法がないと
0726デフォルトの名無しさん
2006/12/26(火) 11:23:55パケット1回しか受け取ってない?
2つに分かれてるかもよ
0727デフォルトの名無しさん
2006/12/26(火) 12:04:30ソースまでアップしていただき、ありがとうございます。
ソース見ながらずっと考えてました。
sizeof、strlenが目に入りまして、調べてみましたが、
受信側で、sizeof使ってたのが原因かもしれません。
"arere\narere"のサイズ調べると
sizeof=4
strlen=11
でした。改行以降切り捨てられますが、
おそらくこれが原因なんじゃないかと思います。
ちょっと今無理なので、夜、確認したいと思います。
0728デフォルトの名無しさん
2006/12/26(火) 12:19:17727です。
それも調べてみたいと思います。
アドバイスありがとうございます。
0729デフォルトの名無しさん
2006/12/26(火) 12:19:50sizeof はポインタのサイズを返すから常に4(=32bit)を返すぞ?
0730デフォルトの名無しさん
2006/12/26(火) 12:26:340731デフォルトの名無しさん
2006/12/26(火) 13:44:50C言語とネットワークプログラミングは切り離して勉強したほうがいいと思うよ
0732デフォルトの名無しさん
2006/12/26(火) 14:11:53sizeof とは何かをよーく調べろ。sizeof は演算子だ。関数ではない。
0733デフォルトの名無しさん
2006/12/26(火) 14:27:23なんじゃそりゃ!
0734デフォルトの名無しさん
2006/12/26(火) 14:42:01まあ今のところネットワーク関係無いから、これ解決したらまたおいで
0735デフォルトの名無しさん
2006/12/26(火) 15:08:03fgetsだと思った俺はまだまだだな
0736デフォルトの名無しさん
2006/12/26(火) 15:22:29根本的な知識が欠如しているというか。
0737デフォルトの名無しさん
2006/12/26(火) 15:40:45WaitFor〜系でネットワークイベントを待つとき、内部的には実行スレッドが
Sleepしている状態だと聞きました。
つまり送受信時に重複I/O処理するにしても、完了待機(Sleep)中は
同一スレッド内で動いている別処理は動かないわけですよね。
これって結局ブロッキングと同じでは?と思うのですが…
CUIで何かしながらネットワークイベントを待機したいときは
何にせよ別スレッドが必要、ということでしょうか?
0738デフォルトの名無しさん
2006/12/26(火) 16:06:56複数のイベントを同時に待てるというだけです。
UNIXのselect/poll/kqueue相当。
0739デフォルトの名無しさん
2006/12/26(火) 16:07:49何かを並行的に処理するにゃ、自力でイベントループを作ってポーリングするか、スレッド/プロセスにしちまうかしかないと思うんだが・・・
0740デフォルトの名無しさん
2006/12/26(火) 16:39:14なるほど、ありがとうございます。
いまいち理解が曖昧だったので助かりました。
>>739
やはりそうですか…
どうにも色んなI/O方式があるので混乱気味です。
スレッドが作れないのなら毎回ポーリングが適当っぽいですね。
0741デフォルトの名無しさん
2006/12/26(火) 19:16:40クライアントのほうで接続で拒否されてるみたいで・・
サーバ側でポート確認してもlisten状態になってるし
考えられる原因は何でしょうか?
0742デフォルトの名無しさん
2006/12/26(火) 19:22:00防火壁/NATの板ばさみ/ポートを他のプログラムが握ってる
くらいか
0743デフォルトの名無しさん
2006/12/26(火) 19:27:07話はそれからだ
0744デフォルトの名無しさん
2006/12/26(火) 19:31:04>>714
>cygwinからWINDOWSに、buf="hoge\nhoge"という文字列を送信
>したのですが、受け取ると文字の長さがstrlen(buf)=4
>の"hoge"だけになってしまいました。
ここには
strlen(buf)=4
って書いてあったんだよなぁ
漏れは >>714 と >>727 は別人だと思う
じゃなければ釣り死
0745741
2006/12/26(火) 19:33:58ttp://hp.vector.co.jp/authors/VA003991/kouza/senior/kouza_socket.html
ここのサンプルをそのまま使ってみたんですが・・・
0746デフォルトの名無しさん
2006/12/26(火) 19:38:14どの関数を呼んだら何が返ってきたか書いてくれ。
0747教えて君
2006/12/26(火) 20:27:49さて、質問です。tcpの再送タイマの実装について教えてくださいな。
僕はいままで再送タイマは、送信中のパケットすべてに対してセットされているものだと考えていたんだ。
でも、詳解TCP/IP vol.2を見た感じじゃt_timer[TCPT_REXMT]の一個で実装されてるよね。
これは、つまりパケットが送信される度にタイマが上書きされるのかい?
RFC793,2001,2581を見る限り、詳しく指定されていないってことは細かい所は実装者のお好きなようにって事なのかな?
ってことはBSDがこうなだけで、他のOSになったらまた変ってくるのかな?
質問連続でごめんね。でも反省はしてないよ。
「ソース読め」とか言わないでね、吐血しそうになるから。
0748741
2006/12/26(火) 20:28:180749デフォルトの名無しさん
2006/12/26(火) 20:43:420750741
2006/12/26(火) 21:04:00よくネットワークのことはわからなくて
0751デフォルトの名無しさん
2006/12/26(火) 21:07:19やめてしまえ
イライラする
0752デフォルトの名無しさん
2006/12/26(火) 21:10:44大変申し上げにくいのですが。。。
if((p=strpbrk(buf,"\r\n"))!=NULL){
*p='\0';
}
受信してから、改行があったら'\0'代入して、
そこまでで切ってしまうという処理してました。
コピペして書き換えていたのですが、残っていたようです。
送信したり受信したりのサイズの件は、sizeofでした。
サイズもおかしくて、改行で消えたのでパニックになりました。
ほんとお騒がせしました。m( _ _ )m
レスくれた方ありがとうございました。
0753デフォルトの名無しさん
2006/12/26(火) 21:18:27イライラすんなって
相手は厨房だぞ
0754デフォルトの名無しさん
2006/12/26(火) 21:22:420755デフォルトの名無しさん
2006/12/27(水) 02:11:08いきなり降参かよ。
質問するにしても、詳解TCP/IP vol.2の分らない所か、RFCに沿って質問しろよ。
RFC 793, RFC 2001をちゃんと読め。
それからRFC 1581って、お前本当にRFC読んでるのか?
RFC 2525 TCP Implementation Problems
2.10 Failure to back off retransmission timeout
RFC 2988 Computing TCP's Retransmission Timer
は読んだのか?
0756デフォルトの名無しさん
2006/12/27(水) 02:11:51ぱけっときゃぷちゃ、しろ。
つーるは>>6
0757デフォルトの名無しさん
2006/12/27(水) 07:44:29Symmetricな挙動をするNATルータの機種を知っている方いますか?
それがあるとすごく助かります。
0758デフォルトの名無しさん
2006/12/27(水) 07:51:41安物だからか
0759デフォルトの名無しさん
2006/12/27(水) 07:56:58TCP/IPについてじっくり考えてみなか?
http://pc8.2ch.net/test/read.cgi/network/1014429970/
0760デフォルトの名無しさん
2006/12/27(水) 08:02:20ありがとん
困ったなあ
0761デフォルトの名無しさん
2006/12/27(水) 10:06:08CygwinとC言語でソケットを使ってサーバを書く勉強をしているのですが、
画像データの送信でつまいづいております。
表示したいページのHTMLソースに
<img src="hoge.jpg">などが「単独で」書かれている場合は
この画像がふつうに表示されるのですが、
<td background="hoge.jpg">などと「背景として」要求された画像だけは表示されません。
サーバにとって、両者には何か違いがあるのですか?
画像データの送信の際には、
レスポンスヘッダに「最初の行、Content-Type, Content-Length」の3行を書き、
fopen(...)でバイナリとして読み出したデータを本体としてくっつけて
send(socket, ...)で送っています。
原因や怪しいと思われるところなど、教えていただけるとありがたいです。
0762761
2006/12/27(水) 10:24:11背景画像が表示されないのは<td>に限らずすべてのタグ、
あるいはスタイルシートのbackground-image:url("...")もです。
0763デフォルトの名無しさん
2006/12/27(水) 10:26:180764デフォルトの名無しさん
2006/12/27(水) 10:27:20パケットキャプチャと関数の戻り値チェックは最低限してるの?
0765デフォルトの名無しさん
2006/12/27(水) 10:48:54なんというか、原因はその作ったサーバになるプログラムとクライアントになるプログラムの協調プレイによるものでしかないのでは?
と思う
具体的なのはサッパリだです
0766デフォルトの名無しさん
2006/12/27(水) 12:47:51>>714==>>761
0767741
2006/12/27(水) 13:07:09ダメでした。
他に考えられる原因はなんでしょうか?
0768デフォルトの名無しさん
2006/12/27(水) 13:14:57>>756
俺らがエスパーするより>>741がなんとかしたほうが効率がいい
回答を貰いたいなら具体的にどんな環境で何をしてどうなったかを書くべき
0769741
2006/12/27(水) 13:42:450770デフォルトの名無しさん
2006/12/27(水) 13:54:030771741
2006/12/27(水) 15:02:34クライアントwindows,サーバvine linuxでtcp ソケット通信をしたいです
とりあえず文字列を送るプログラムをやっています
サーバ側のプログラムは↓を使っていて,エラーはないです
ttp://hp.vector.co.jp/authors/VA003991/kouza/senior/server.c
ポートはサンプルのまま9000番使ってます
クライアントの方でconnect関数のところで,接続されてないと出ます
tcp/ip builderのソフトでためしにipとポート指定して
送ってみても,rejectされます.
0772741
2006/12/27(水) 15:04:14解決しません.webminのほうで全て許可にしました
0773デフォルトの名無しさん
2006/12/27(水) 15:09:170774デフォルトの名無しさん
2006/12/27(水) 15:21:29全然情報足りない
間にルータ等をかましてるかどうか
pingは通るのか
ローカル同士でのテストなのにグローバル経由で接続しようとしてないか
>tcp/ip builderのソフト
ってなに?よくしらないんだけど。
後は皆が言うようにパケット追うのが基本
0775デフォルトの名無しさん
2006/12/27(水) 15:49:10telnet 192.1.1.2 9000 とかして reject されるようなら、
ネットワークやWindowsの設定の問題。
telnet で繋がるようなら、クライアント側のコードの問題。
0776デフォルトの名無しさん
2006/12/27(水) 15:59:360777デフォルトの名無しさん
2006/12/27(水) 16:22:38とりあえずこれはまとめてうpして
・マシンとネットワーク構成
・再現できる最低限のソース
・再現方法
>>720 >>722
とか参考にしてみて
0778デフォルトの名無しさん
2006/12/27(水) 16:45:21あと、サーバ内で
telnet localhost 9000
も併せてやるとええね。
あと、
tcpdump port 9000
やらんと。
0779741
2006/12/27(水) 18:24:09ネットワーク構成は特に秘すべきなのですが。
0780デフォルトの名無しさん
2006/12/27(水) 18:38:04本読んで勉強しろ
質問者の義務を果たせない様なら質問する資格はない
0781747
2006/12/27(水) 19:00:08レスありがとうございます
質問の仕方は反省しとります
rfc2525,2988はまだ読んでないんで、読んでみます
0782デフォルトの名無しさん
2006/12/27(水) 20:23:31お勧めの開発環境はありますでしょうか?
(OS,言語,DB)
漠然とした質問で申し訳ありません。
0783デフォルトの名無しさん
2006/12/27(水) 20:29:080784デフォルトの名無しさん
2006/12/27(水) 20:34:500785デフォルトの名無しさん
2006/12/27(水) 20:42:30できれば一から構築して運営したいという内容なのです。
内容的には既存のノンアダルトのライブチャットシステムと
全く同じでいいのですが、どんな言語を使うと実現可能なのか
とっかかりがほしかったところでございました。
0786デフォルトの名無しさん
2006/12/27(水) 20:46:03>telnet 192.1.1.2 9000
それローカルアドレスじゃないんですけど
0787デフォルトの名無しさん
2006/12/27(水) 20:48:08守秘義務があるようなプロジェクトに関わってる香具師が
こんなレベルだとは発注者は夢にも思ってないだろうな。
0788デフォルトの名無しさん
2006/12/27(水) 21:23:240789デフォルトの名無しさん
2006/12/27(水) 23:02:150790デフォルトの名無しさん
2006/12/28(木) 00:17:520791デフォルトの名無しさん
2006/12/28(木) 00:53:360792デフォルトの名無しさん
2006/12/28(木) 01:04:170793デフォルトの名無しさん
2006/12/28(木) 06:23:51> 自力でイベントループを作って
WaitFor〜ってそのためにあるんじゃないの?
なんかビジーループのほうがマシだとか思われてそうで心配なんだけど
0794741
2006/12/28(木) 11:40:31OSの種類やサービスパックの有無なども守秘義務の範囲です。
ウィルス対策ソフトに何を使っているかなんて、言えるわけありません。
常識を知ってください。
0795デフォルトの名無しさん
2006/12/28(木) 12:05:59ここでそれ持ち出して詳細を伏せる
やつはガチでアホ
0796デフォルトの名無しさん
2006/12/28(木) 12:08:55ならば、こういう open なコミュニティーで解決しようとすること自体がNG
0797デフォルトの名無しさん
2006/12/28(木) 12:14:410798デフォルトの名無しさん
2006/12/28(木) 12:15:25まあ答えたいけど守秘義務で答えられません、とか
0799デフォルトの名無しさん
2006/12/28(木) 13:06:07このような問題を解決しなければならなくなってしまいました。どうか教えてください。課題を教えてくださるスレッド(?)が書き込みできなくなっていたので、
こちらに書き込ませていただきました。
【質問テンプレ】
[1] 授業単元:基礎情報処理
[2] 問題文:縦100横100のマス目(点)に分けられた紙の各点が、白と黒に塗り分けられたものを考える。この中に、下にある様な黒い点で囲まれた図形が1つだけある。図形は必ず、黒い点で囲まれており、
内部は白い点で埋め尽くされている。この「囲まれている」とは、各黒い点の上下左右および8つの点のどれかが黒い点となっているものと考えよう。
□□□□□□□□□□
□□■■■■■■□□
□■□□□□■□□□
□□■□□□□■□□
□□■□□□□■□□
□□■■■■■■□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
この図形は整数値の2次元配列(例えばC言語ならa[y,x])で表されている。x軸は左から右、y軸は上からしたとするので、a[1,1]は一番左上の点になる。この配列はプログラムに入る前に何らかの方法で、白い点は0、黒い点は1になっているものとする。
さて、図形の面積、つまり黒い点で囲まれた内部の「白い点」の数を数えるプログラムを考えよう。ただし図形は必ず紙の上に1つだけ存在し、また必ず紙の端から点1つ以上ずつ少し離れた位置にあるとする(つまり黒い点は紙の上下左右の端には存在しない)。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: すみません、よくわかりません
[3.3] 言語: なんでもかまいません。
[4] 期限: 2007年1月5日0時まで
[5] その他の制限:まだ何も習っていません。具体的に回答を提示してくれると助かります。
0800デフォルトの名無しさん
2006/12/28(木) 13:19:240801デフォルトの名無しさん
2006/12/28(木) 17:16:15倉庫番?
0802デフォルトの名無しさん
2006/12/28(木) 18:14:340803デフォルトの名無しさん
2006/12/28(木) 22:11:50嘘も体外にしろ。
最近こういう奴が多いな。
新手の荒らし?
0804デフォルトの名無しさん
2006/12/29(金) 03:44:53宜しければここで質問させて下さい。
現在、携帯電話で独自ドメインのメールアドレスを使用したいと思い
以下の様な事を行っています。
[受信]
サーバー側で、メール転送の設定を行い
携帯のメールアドレスへ転送される様にしている。
[送信]
サーバーに送信フォームを置き、発信元を独自ドメインのアドレスにした
cgiスクリプトを介して目的のアドレスへ送信する様にしている。
と、以上の様な感じなのですが、やはり携帯で無理やり
独自ドメインのアドレスを使用するには、この様にするしか方法はないでしょうか?
携帯のメーラーで、色々アドレスが取り扱えれば一番良いのですが…
0805デフォルトの名無しさん
2006/12/29(金) 03:46:550806デフォルトの名無しさん
2006/12/29(金) 04:39:24レスどうも!二つお聞きしたい事があるのですが、宜しければご教示下さい。
1. 勝手サイトと承認サイトとは具体的にどういう事なのでしょうか?
2. iアプリで作成可能というのは、携帯で使用出来るメーラーを新たに作成可能だという事でしょうか?
また、iアプリとは一般的にどの言語で記述するものなのでしょうか?
0807806
2006/12/29(金) 04:59:32そういう物がフリーとかで公開されてるって事ですよね。
ちょっとVectorにでも行って探して来ます。
0808デフォルトの名無しさん
2006/12/29(金) 05:16:362チャンネル(ですよね?)初めての投稿なのですが…。
荒らしがいっぱいいると聞いたので、来たことがなかったのですが…
投稿してみました。
JAVA言語で、ネットワークを利用しつつACCESS利用した、
プログラムサンプルのサイトありませんかね?
説明ならもっと助かります。よろしくお願いいたします。
ググレよ〜とかはやめてください。探したので…一応ですが…。
0809デフォルトの名無しさん
2006/12/29(金) 07:21:150810デフォルトの名無しさん
2006/12/29(金) 09:02:05> JAVA言語で、ネットワークを利用しつつACCESS利用した、
> プログラムサンプルのサイトありませんかね?
条件限定しすぎ
あるのかどうかはしらないが、そんなサイトを探すより、
それぞれ3つを扱えるようにした方が早いだろう
あと、何がわからないのかをはっきりさせた方がいい
> ググレよ〜とかはやめてください。探したので…一応ですが…。
やめてくださいって…言われたくなかったら、
どんなこと調べたのかは書くべきだろ
0811デフォルトの名無しさん
2006/12/29(金) 09:43:26Access って、MS-Access 自体のことなのか、Jet のことなのかがよくわからんが、
Jet なら、jdbc + access あたりでググレば、いくらでも出てくるぞ。
Access 自体を操作したいなら、java + "common object model" あたりでググれば
いいと思う。あまり、そんな奴を見たことないけど。
0812808
2006/12/29(金) 11:07:12すいませんでした。わかりずらかったですよね。
えっと、AccessはMS-Access使っております。
現在はMS-Access のSQLのデータを直接JAVAで呼び出すことが出来ており、
SQLのデータをネットワークを経由してJAVAの方へ持って行きたいのです
が…。一応OSはWindows(XP)使いたいと思います。
※文章が不慣れな点がありましたらすいません。
0813デフォルトの名無しさん
2006/12/29(金) 11:30:57お、新語だ。
0814デフォルトの名無しさん
2006/12/29(金) 11:45:06わかりずらくなかったけどわかりづらかったです。
0815デフォルトの名無しさん
2006/12/29(金) 14:50:02>スレッドしていただき
どういう意味なんだろうな
0816デフォルトの名無しさん
2006/12/29(金) 14:59:280817デフォルトの名無しさん
2006/12/29(金) 15:55:130818デフォルトの名無しさん
2006/12/29(金) 16:11:41> 直接JAVAで呼び出すことが出来ており
なんで、それを先に書かないの?
> ※文章が不慣れな点がありましたらすいません。
文章が不慣れと思うなら、なおさらその直接呼び出している部分の
コードを晒した方が話は早いと思う。
0819デフォルトの名無しさん
2007/01/04(木) 16:09:430820デフォルトの名無しさん
2007/01/04(木) 18:18:510821819
2007/01/04(木) 21:17:25レスありがとうございます。
例えば iph->ip_src が "192.168.0.1" かどうかというのを
具体的にどのように比較すればいいのかがわからないのです。
if (iph->ip_src == "192.168.0.1") {}
ってなわけにわいかないですよね。
if (iph->ip_src.s_addr == hogehoge) もなんか違うような気がするし、、、
そのへんを具体的に示していただけると助かります。
0822デフォルトの名無しさん
2007/01/04(木) 21:25:48if (iph->ip_src.s_addr == inet_addr("192.168.0.1") ) {}
0823デフォルトの名無しさん
2007/01/04(木) 23:06:35daytime が利用可能なインターネット上のホスト(サーバ)を
教えていただけませんか。
例えば,コマンドプロンプト上で
telnet * 13
とやって反応が出てくるような * です。
ある UDP サンプルプログラムを試しているところなのですが,
telnet で反応してくれるホストがみつからずにいます。
そこで telnet でうまくいけば,サンプルプログラムでも
試すことができるのですが,そのホストが見つからない,という
状況です。
0824デフォルトの名無しさん
2007/01/04(木) 23:42:56telnet と udp ... 釣りと言うことでいいか?
0825デフォルトの名無しさん
2007/01/04(木) 23:50:32恐れ入ります。
釣りのつもりはないのですが。
telnet と udp を使っていますが,要はサンプルプログラムで
daytime サービスを試しに使ってみたい,しかし,ホストが見つからない
ので,提供しているホストを教えてください,という趣旨の質問です。
検索をかけてみたところ,セキュリティ上,daytime は off にしている
サーバも多そうな感じがしたので,利用可能なホストがあれば
教えてくださいというものです。
0826823
2007/01/04(木) 23:53:13825の「> 823」は「>824」の間違いでした。すみません。
0827デフォルトの名無しさん
2007/01/04(木) 23:55:49ローカルでdaytime動かす方が確実かも。
(そもそも余所様の鯖で実験するなよw)
Winは知らない。LinuxならxinetdのdaytimeをONすればおk。
インストールするのが面倒ならKnoppix。
0828デフォルトの名無しさん
2007/01/05(金) 00:47:34> telnet と udp を使っていますが
ますます釣りにしか見えない...。
マジなら、まず TCP とは何ぞやから勉強し直したほうがいいと思う。
>>827
Win2K なら、Windows コンポーネントの ネットワークサービスの
中に 簡易 TCP/IP サービスがあるので、それをインストールすれ
ばいい。(ただし、Character Generator, Discard, Echo,
Quote of the Day も一緒にインストールされてしまうが。)
WinXP にもあったと思う。
0829デフォルトの名無しさん
2007/01/05(金) 00:58:47udp の実験をするつもりなんだろうと解釈した。そして
telnet は繋がったけど udp のプログラムが動きません><
ってのを密かに期待www
0830823
2007/01/05(金) 01:15:36telnet も udp のサンプルプログラム もうまくいけました。
827 の方の書かれた通り,xinetd で daytime を on にして試しました。
ちなみに,件の「UDP のサンプルプログラム」は David A. Curry 著,
アスキー書籍編集部監訳『UNIX C プログラミング』に
載っているものです。
0831デフォルトの名無しさん
2007/01/05(金) 01:24:30漏れはあなたが捕まらないことを祈ります
0832デフォルトの名無しさん
2007/01/05(金) 01:28:34フイタ
0833デフォルトの名無しさん
2007/01/05(金) 01:38:28中国?
0834デフォルトの名無しさん
2007/01/05(金) 08:37:30昨今はこういうの開いてるところ無いだろね。
0835デフォルトの名無しさん
2007/01/05(金) 09:30:360836デフォルトの名無しさん
2007/01/05(金) 12:48:240837デフォルトの名無しさん
2007/01/06(土) 06:30:54readは排他制御しないとまずそうなのはわかるんですが
writeするときにも排他制御するべきでしょうか?
0838デフォルトの名無しさん
2007/01/06(土) 08:49:03おそらくやってないと思うが、writeの戻り値もちゃんとチェックしとけよ。
0839デフォルトの名無しさん
2007/01/06(土) 11:05:07readとwriteが同時に一つのソケットに対して行われるのは大丈夫なんでしょうか?
0840デフォルトの名無しさん
2007/01/06(土) 11:35:47同時に出来ないからおk
0841デフォルトの名無しさん
2007/01/06(土) 14:32:35同時にできないということは
readでブロックしている間はwriteもブロックされるということでしょうか?
0842デフォルトの名無しさん
2007/01/06(土) 16:38:57いや、同時に行われるよ。
でも、それが何か問題あるかね?
0843デフォルトの名無しさん
2007/01/06(土) 16:42:36よほどテキトウな実装じゃないかぎりブロックしないと思うけども。
0844デフォルトの名無しさん
2007/01/06(土) 17:04:260845デフォルトの名無しさん
2007/01/06(土) 17:20:26読み書きのたびにブロックするようなプログラムを書いてるかどうかは別の問題
0846デフォルトの名無しさん
2007/01/06(土) 17:19:52どの部分でもいいだろ。本質じゃねーよ。
0847デフォルトの名無しさん
2007/01/06(土) 17:25:13本質は何?
0848デフォルトの名無しさん
2007/01/06(土) 17:26:24複数のスレッドから同時に利用したとしても構わないような設計になっているはず
でFA
0849デフォルトの名無しさん
2007/01/06(土) 18:37:42詳解TCP/IP Vol.2の917pの図29.5の892行に
tp->t_dupacks > tcprexmtthresh
という部分があるのですが、これは
tp->t_dupacks >= tcprexmtthresh
ではないのでしょうか?
この図の892-894行における処理は、高速リカバリにおいて最初の重複ACKで
ないACKを受信して、高速リカバリを終了する際のcwndをssthreshの値に設定
し直す部分だと理解しています。しかし、
tp->t_dupacks > tcprexmtthresh
だと、例えば重複ACKの閾値が3だとして、きっちり重複ACK3つで高速再送、
高速リカバリが行われた場合、cwndがssthreshに設定されないと思うんです
が、これは正しいのでしょうか?
0850デフォルトの名無しさん
2007/01/06(土) 19:30:07正しくは無いが、なんとかなる
0851デフォルトの名無しさん
2007/01/06(土) 20:48:06レスありがとうございます。
やっぱり正しくはないんですね。
0852デフォルトの名無しさん
2007/01/06(土) 20:57:000853デフォルトの名無しさん
2007/01/06(土) 21:31:09> すくなくともTCP/IPは全二重だから読み書きは同時に行える。
プログラムから読み書きが同時に発行できることと、データが
送受信同時にできるかは全然別の話だよ。
(例えば) 無線 LAN は半二重。
0854デフォルトの名無しさん
2007/01/06(土) 21:37:25どの部分でもいいだろ。本質じゃねーよ。
0855デフォルトの名無しさん
2007/01/06(土) 23:59:11たとえLANが同時に送受信できようが、ソケット系関数の中で内部で持ってる(かもしれない)
ステータスとかいろんな変数の扱いがスレッドセーフじゃなきゃアウトだろ、ってこと。
逆にLANが同時に送受信できなくても、関数の中できちんと排他処理してたりするなら問題ないだろ。
つまり、調べるべきはソケットライブラリの仕様であって、
TCPの仕様や物理層の仕様ではない。
0856855
2007/01/07(日) 00:05:56>>837 は Windows を対象にしてるなら
ttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html
この 3.9 とか読むといい。
UNIX の場合は知らないから識者キボンヌ
0857デフォルトの名無しさん
2007/01/07(日) 00:43:54状況がよくわからんのだが。
受ける方はどうやって受ける気なんだろう...。
0858デフォルトの名無しさん
2007/01/07(日) 00:50:23送るのも届くのも受けるのも全部気まぐれだろ
0859デフォルトの名無しさん
2007/01/07(日) 01:30:38> プログラムから読み書きが同時に発行できることと、データが
> 送受信同時にできるかは全然別の話だよ。
2行目にほぼ同じ意味のことを書いてると思うんだが
どうしてそこだけ削除して引用してるの?
0860デフォルトの名無しさん
2007/01/07(日) 01:47:170861デフォルトの名無しさん
2007/01/07(日) 03:30:40> すくなくともTCP/IPは全二重だから
指摘する部分だけ引用するのは当然だと思うが。
全二重の意味理解して無いだろ。
0862デフォルトの名無しさん
2007/01/07(日) 03:53:190863デフォルトの名無しさん
2007/01/07(日) 03:58:180864デフォルトの名無しさん
2007/01/07(日) 07:13:160866デフォルトの名無しさん
2007/01/07(日) 21:37:42送受信じゃなくて読み書きと書いたのが気に食わないってことですか
0867デフォルトの名無しさん
2007/01/07(日) 23:15:13どっからそんな変な知識仕入れたんだ?
0868デフォルトの名無しさん
2007/01/07(日) 23:29:20http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/debugging-tcp.html
データリンク以下の層も全二重かどうかはそれこそ別問題だろ
0869デフォルトの名無しさん
2007/01/08(月) 00:01:570870デフォルトの名無しさん
2007/01/08(月) 00:49:48どっちでもいいだろ。本質じゃねーよ。
0871デフォルトの名無しさん
2007/01/08(月) 00:49:580872デフォルトの名無しさん
2007/01/08(月) 01:29:290873デフォルトの名無しさん
2007/01/08(月) 01:47:170874デフォルトの名無しさん
2007/01/08(月) 02:14:110875デフォルトの名無しさん
2007/01/08(月) 02:27:400876デフォルトの名無しさん
2007/01/08(月) 10:39:270877デフォルトの名無しさん
2007/01/08(月) 18:12:11ほかのスレッドからacceptを終わらせるにはどうしたらいいですか
0878877
2007/01/08(月) 18:38:20Winsockだとclose()を呼び出してやればうまく
acceptを抜けてくれるけれどもLinuxだとうまくいかない
0879デフォルトの名無しさん
2007/01/08(月) 19:18:33スレッドとシグナルの相性がよくないという噂は別にして。
0881デフォルトの名無しさん
2007/01/08(月) 20:27:30half duplex = 単線
っていう感じでしょうか?
0882デフォルトの名無しさん
2007/01/08(月) 20:33:57full duplex は受信と送信が同時にできることを意味する。
half duplex は受信も送信もできるが、同時には送受信できないことを意味する。
別の表現をするなら full duplex は携帯電話みたいなもんで
half duplex はトランシーバーみたいなもんだ。
0883デフォルトの名無しさん
2007/01/08(月) 20:53:450884デフォルトの名無しさん
2007/01/08(月) 23:08:26TCP/IP層は 全二重バッチコーイ! な仕様なんだから
どうでもいいだろ。本質じゃねーよ。
0885デフォルトの名無しさん
2007/01/08(月) 23:13:130886デフォルトの名無しさん
2007/01/08(月) 23:22:290887デフォルトの名無しさん
2007/01/08(月) 23:52:400888デフォルトの名無しさん
2007/01/09(火) 01:03:470889デフォルトの名無しさん
2007/01/09(火) 01:06:180890デフォルトの名無しさん
2007/01/09(火) 02:57:130891デフォルトの名無しさん
2007/01/09(火) 09:17:540892デフォルトの名無しさん
2007/01/09(火) 10:23:00イーサネット層を意識する必要はない
つまり全二重だと思って使ってれば問題なし
0893デフォルトの名無しさん
2007/01/09(火) 16:35:411. TCPは送信だけ。受信は不要。
2. UDPはSRC PORT 53の受信だけ欲しい。
というフィルタはどう書けますか。
0894デフォルトの名無しさん
2007/01/09(火) 16:45:520895デフォルトの名無しさん
2007/01/09(火) 17:07:560896デフォルトの名無しさん
2007/01/09(火) 17:14:040897デフォルトの名無しさん
2007/01/09(火) 17:33:43(src host A.B.C.D and tcp) or (dst host A.B.C.D and udp src port 53)
A.B.C.Dは自ホストIPアドレス。
0898デフォルトの名無しさん
2007/01/09(火) 18:15:53TCP/IPじゃなくて、TCPだな。全二重なのは。
>>877>>879
そのUNIXにPOSIX realtime拡張のpthreadがないとダメ。
そうじゃないとthreadにsignalを送れない。
(realtime拡張がないと対象はprocessのみ)
0899デフォルトの名無しさん
2007/01/09(火) 21:31:490900デフォルトの名無しさん
2007/01/09(火) 22:55:09環境が分からないけど、WindowsならWinPcapを使うことになると思う。
UNIX系ならPF_PACKETとか。
0901デフォルトの名無しさん
2007/01/14(日) 04:53:28俺も昔それで悩んだけど、acceptの前のselectで一秒ごとにwait抜けてキャンセル
フラグを見るようにしてる。ポーリングの効率の悪さと、キャンセル処理に最悪
一秒かかるけど、許容してる。
0902デフォルトの名無しさん
2007/01/14(日) 04:59:45用意しておけばいい気もする。
あと試してないけど、pollだとcloseで抜けたりするといいね。。
0903デフォルトの名無しさん
2007/01/14(日) 14:17:16他のスレッドがconnectしにいけばいいんでないか
0904デフォルトの名無しさん
2007/01/14(日) 14:56:20って感じだな。ネットワークってホラーだよな。 殺しのシグナルとか。
0905デフォルトの名無しさん
2007/01/14(日) 17:48:11なんか、あまり美しくないなあ...。
0906デフォルトの名無しさん
2007/01/16(火) 15:12:31ができるライブラリはありますか?
グラフィックスでいうOpenGLみたいな。
0907デフォルトの名無しさん
2007/01/16(火) 15:16:000908デフォルトの名無しさん
2007/01/16(火) 15:28:48もう一段階上のがホスィ。
けど、その解答からするとナイみたいね。Thx
0909デフォルトの名無しさん
2007/01/16(火) 15:33:130910デフォルトの名無しさん
2007/01/16(火) 15:44:42あと、Boost.Socketってまだ存在しないんだっけ?
0911デフォルトの名無しさん
2007/01/16(火) 19:41:290912デフォルトの名無しさん
2007/01/17(水) 09:01:530913デフォルトの名無しさん
2007/01/17(水) 13:48:19kansuu(
0914デフォルトの名無しさん
2007/01/17(水) 13:55:27でも普通はそういうものは一々書かないよね。
0915デフォルトの名無しさん
2007/01/17(水) 14:01:01それ以上に行く人間は少ないんじゃないかと思ってる
0916デフォルトの名無しさん
2007/01/18(木) 05:46:22RogueWave
ttp://www.grapecity.com/japan/roguewave/sourcepronet.htm
ACE
ttp://www.cs.wustl.edu/~schmidt/ACE.html
とかあるね。俺はSocketラッパー程度の薄いライブラリは他人の使わない
方針だけど。
0917デフォルトの名無しさん
2007/01/21(日) 22:59:11あまりの文献の少なさと難解な呼び出し手順に早くも敗北の悪寒。
早速詰まってしまいましたのでご助力をお願いします orz
SnmpSendMsg()でSNMP_GETした後のパケットの一連の受信処理で何故か
1回置きにエラーが出ます。
このときアナライザでGetRequestパケットとそれに対して対象のターゲット
機器からResponseパケットが来る所までは確認しています。
擬似コード的にはこんな感じです
{
SnmpSendMsg(); //GetRequestパケット送出
Slppe(500);
SnmpRecvMsg(); //ここでSNMPAPI_SUCCESSが返ってる = パケットは取得できてるはず
SnmpGetPduData(); //VBLのハンドルを取得(ここでも常にSNMPAPI_SUCCESSが返ってる)
SnmpGetVb(); //一つ上で取得したVBLから値を取得しようとすると一回おきにSNMPAPI_VBL_INVALID(VBLが変)が帰ってエラー
/*値を取得したら表示処理*/
/*SnmpRecvMsg()で取得したハンドルを解放*/
}
上記のコードをループさせると、SnmpGetVb()を呼んだときに何故か一回おきで成功->失敗を繰り返します。
SnmpGetVb()に渡すVBLのハンドルはSnmpGetPduData()で取得していますが、これの戻り値は
SNMPAPI_SUCCESSにも関わらず、VBLハンドルの値を見ると1を返したり0を返したりしています。
(0の時がSnmpGetVb()でエラー)
なんかの呼び出し方が間違っているのでしょうが自分には判別できず頭を抱えてます。
間違いが判れば指摘下さい。
宜しくお願いします。
0918デフォルトの名無しさん
2007/01/22(月) 15:42:12エラー時のエラーコード (GetLastError で得られるもの) とか、
その辺の話も書けばより真剣な質問としてとられると思います。
0919デフォルトの名無しさん
2007/01/22(月) 21:45:550920デフォルトの名無しさん
2007/01/23(火) 16:05:57Windows XP にて。
IPヘルパAPI でNICの情報を取得するコードを書いています。
GetIfTable()
●複数NICがある場合、GetIfTable() で取得する順番は
どのように決定されるのでしょうか?
GetIfTable(&IfTable, &size, FALSE)
IfTable.table[n]に格納される順番です。
●あと、NICが一枚もない場合はGetIfTable()が失敗するのでしょうか?
それとも取得テーブル数が0なのでしょうか?
事情によりNIC外せないので・・・実証できません。
ネットで情報をうまく探せずここに書き込ませていただきました。
よろしくお願いします。
0921デフォルトの名無しさん
2007/01/23(火) 17:46:35まずこれをなんとかしろ。
手元で試せないのに「解決」したつもりになってどうする?
0922デフォルトの名無しさん
2007/01/23(火) 18:41:192つ目の件はデバイスマネージャで無効にしてみるとかはどうでしょうか?
XPなのでマシンの構成が変わったと判定されて面倒でしょうけどね w
GetIfTable() を使ったサンプルプログラムを見つけたのでちょっと試してみましたが、
私の環境では無効にしているNICは列挙されませんでした。
NICが1つも無い場合にどうなるかは、その環境でも GetIfTable() を試してみれば想像付くと思います。
0923デフォルトの名無しさん
2007/01/24(水) 16:27:32>NICが1つも無い場合にどうなるかは、その環境でも GetIfTable() を試してみれば想像付くと思います。
イメージトレーニング?
0924デフォルトの名無しさん
2007/01/27(土) 17:09:340925デフォルトの名無しさん
2007/01/28(日) 00:59:250926デフォルトの名無しさん
2007/01/29(月) 23:48:17以下の要件を満たすサーバを作りたいと思ってます。
[要件]
1. 他のプロセスがすでにポートを使っていたらエラーにしたい。
2. サーバを再起動してもすぐに同じポートを利用したい。
[やったこと]
setsockopt で SO_REUSEADDR を指定して bind。
[結果]
他のプロセスがポートを利用していてもエラーにならない。
[質問]
検索すると以下のような記述を見かけました。
Windows では SO_REUSEADDR は使わないのが一般的なんでしょうか?
1. Windows では SO_REUSEADDR をつけると
他のプロセスがポートを利用していても bind できる。
2. Windows では TIME_WAIT 状態でも SO_REUSEADDR なしに普通に
bind できる
0927デフォルトの名無しさん
2007/01/29(月) 23:57:33冷やかされて終わり
0928デフォルトの名無しさん
2007/01/30(火) 00:29:21WindowsだってTIME_WAITは待たなきゃ駄目なのだよ。
でも、ちゃんと綺麗に終了すればREUSEしなくたって
へっちゃらなはず。
まあ大抵は汚く終わるから必要だけどな。
0929デフォルトの名無しさん
2007/01/30(火) 00:34:45「も、もう電話切っちゃうからね!」 とFIN送信したあと、
相手の 「ああ、おやすみ」(FIN,ACK)発言 を待つ。 (=TIME_WAIT状態)
相手から おやすみ を聞くまで ずーーっと待つ。
20分くらい無言の受話器を抱えて途中から涙目で待つ。
でもそのうち疲れて、そっと受話器を置く。
0930デフォルトの名無しさん
2007/01/30(火) 00:42:210931デフォルトの名無しさん
2007/01/30(火) 00:44:10FIN_WAITと混同してない?
0932デフォルトの名無しさん
2007/01/30(火) 17:01:110933デフォルトの名無しさん
2007/01/31(水) 01:31:12winsockでTCPを使って複数のデータを送るプログラムがあるのですが
sendのエラーチェックをしていないとWSAEWOULDBLOCKなどで送るデータに漏れが生じることがあります。
それは理解できるのですが、送信されたデータを受信するとデータの順序が変わっているときがあるのです。
TCPなら途中でデータの順序が入れ替わるようなことはありえないと思うので
おそらくは送信する時点で既に順序が入れ替わっていると思うのですが、
順番にsendを呼び出しているのに、何故このようなことが起こるのでしょうか?
0934デフォルトの名無しさん
2007/01/31(水) 01:45:590935デフォルトの名無しさん
2007/01/31(水) 01:47:54とりあえずパケットダンプしてみて、何も無ければアプリケーション側のバグを疑って、それでもなんとも無ければOS変えてみる
むしろとりあえずブロッキングにして実験してみるのが手っ取り早いな
0936デフォルトの名無しさん
2007/01/31(水) 09:40:40送信のときのデータを表示させて見てみたら?
アマチュアだけど、自分のときはそうしてるよ。
0937デフォルトの名無しさん
2007/01/31(水) 10:19:00>>933はプロだからとっくにその程度のことはしてる
0938デフォルトの名無しさん
2007/01/31(水) 10:33:01> とりあえずパケットダンプしてみて、何も無ければアプリケーション側のバグを疑って、
> それでもなんとも無ければOS変えてみる
どんな戦略だよw
ダンプがおかしかった場合(一番ありうるケースだと思うが)の対処はなしかよ。
100%アプリのバグだから良く見直せ。>>933
0939933
2007/01/31(水) 14:39:00これまでもそういう事例がないもんかなと思って聞いてみたのですがやっぱりアプリの問題ですよね。
見直してみます。
0940デフォルトの名無しさん
2007/01/31(水) 14:52:51一番ありうるケースがパケットダンプがおかしい場合なのに
100%アプリのバグなのか・・・
0941デフォルトの名無しさん
2007/01/31(水) 15:12:420942デフォルトの名無しさん
2007/01/31(水) 15:14:34エスパー認定
0943デフォルトの名無しさん
2007/02/01(木) 08:21:00おられましたら、お教えください。
自作の簡単なプロクシサーバーを作って、ちょっとしたフィルタリングを
するソフトを作ろうとしています。
自作ソフトは、ブラウザーから受け取ったヘッダをもとにWANにアクセスして
その情報を単純にブラウザーに返すだけのものです。
ブラウザーのプロクシ設定を自作ソフトに設定をして、普通にブラウジングが
できるなりました。
この時に、text/htmlなどの任意のContent-Type以外はプロクシを使わず
直接アクセスさせるような方法というのはあるでしょうか?
なにか案がありましたら、お教えください。
説明がわかりづらいようでしたら申し訳ありません。
0944デフォルトの名無しさん
2007/02/01(木) 19:25:090945デフォルトの名無しさん
2007/02/01(木) 22:58:51DSR構成は・・・私には難しすぎて、すぐに理解ができませんでした。
もう少し、DSR構成を勉強してみます。
0946デフォルトの名無しさん
2007/02/02(金) 02:07:36Content-Typeで判断できるかは分からないけど
PACファイルを使えばURL中の特定文字列から直接接続かProxyかに切り替えることができるよ
0947デフォルトの名無しさん
2007/02/02(金) 06:05:28プロキシ経由でアクセスするかどうかの判断に使えるわけないだろ
0948デフォルトの名無しさん
2007/02/02(金) 06:15:46Content-Type調べて該当のURLへアクセスしなおすようレスポンスを生成してそれを返せばいけるんじゃねーの?
0949デフォルトの名無しさん
2007/02/02(金) 06:23:440950デフォルトの名無しさん
2007/02/02(金) 17:15:33ということをプロクシやサーバが返せたんだけど、HTTP 1.0 になるときに無くなったんだよね。
0951デフォルトの名無しさん
2007/02/03(土) 00:12:09質問させていただきます。
WebブラウザからフォームデータをPOSTで受け取り、制御をする簡単なプログラム
を書いています。Firefoxからフォームを送信した時、
(1)HTTPヘッダ、プロパティ類
(2)Content-Type
(3)Content-Length
(4)フォームデータ
の順で、それぞれを送信しているように見えます。
こういった場合、firefoxから送られてきたデータがどこで終わったのかを判断
するにはどうしたらよいのでしょうか?
今はrecvが無くなるまで読み溜めているのですが、最後のrecvの後に不要な
Timeout 待ちが発生してしまっています。
IE は (1)〜(4)を一気にまとめて送信してくるので何も考える必要は無かったのですが・・・
おそらく、どこでデータ完了とするかなどネットワークプログラムのセオリーがあると
思うのですが。
以上、よろしくお願いいたします。
0952デフォルトの名無しさん
2007/02/03(土) 00:52:25HTTPのやつだけで良いから
0953デフォルトの名無しさん
2007/02/03(土) 02:41:42え〜っと、ちょっと今はプログラムを組んでいないので検証していませんが、
recvの返値を加算していって、受信したデータ量とContent-Lengthの
送信データ量が同じになったらrecvしないようにするのが吉だと思います。
0954デフォルトの名無しさん
2007/02/03(土) 06:02:39HTTP/1.1になったときだよ。HTTP/0.9にはステータスコード自体なかった
0955デフォルトの名無しさん
2007/02/03(土) 16:41:19助言に従いRFC2068邦訳版を読んでみました(関係ありそうなところだけですが)
>>要求の中でのメッセージ本体の存在は,要求のメッセージヘッダの中にContent-Length又
>>はTransfer-Encodingのヘッダフィールドを含むことによって通知される。
という文を読む取ることができましたが、先の例のとおり Content-Length 自体が3回目の
recvで得られますので、それまでは本体の存在がわかりません。
これは Method が POST であれば、メッセージ本体があると信じて recv しにいくと
言うことでよいのでしょうか?
0956デフォルトの名無しさん
2007/02/03(土) 18:53:33バイトストリームで \r\n\r\n が来るまでがヘッダ。
0957デフォルトの名無しさん
2007/02/03(土) 22:06:14どうやら1回のrecvでレスポンスヘッダをすべて受信できると決めつけていたらしい。
その後プロクシを自作してみてわかった。もちろん自作のやつは>>956のようにしてる。
ただし世の中には\n\nを送ってくるサーバもあるので(それもamazonとかの
超有名どころ)考慮せざるを得なかったが
0958デフォルトの名無しさん
2007/02/03(土) 22:58:29ありがとうございます。
なんか色々迷走しちゃいましたが、けっきょくは\r\n\r\nまで読んで、
そこに Content-Length が含まれていれば、メッセージ本体を
取りにいくというようにしました。
いや、そんな真面目に実装する気は無かったんですが(ただの個人使用のユーティリティなんで)
有用なお話が聞けてよかったです。
0959デフォルトの名無しさん
2007/02/04(日) 05:42:410960デフォルトの名無しさん
2007/02/05(月) 12:18:36> ただし世の中には\n\nを送ってくるサーバもあるので(それもamazonとかの
> 超有名どころ)考慮せざるを得なかったが
head ブロックの改行コードが全て LF ?
(CR なら1文字先読み LF で改行確定 || LF なら改行確定) のような処理になるんかな
0961デフォルトの名無しさん
2007/02/05(月) 13:19:230962デフォルトの名無しさん
2007/02/05(月) 13:36:25Amazonとか楽天、Yahooくらいに有名なところで(何処だったか忘れた)
改行コードが全部LFと言うのを見たことがある。
その時は知識がなく、そんなものだと思っていた。
そのおかげで当時の自分のシステムが全部改行コードをLFだけに
してしまった。
0963デフォルトの名無しさん
2007/02/05(月) 14:17:29PGP/MIME で同じように CRLF/LF 問題で嵌ったことあるけど、
HTTP でそういうことがあるのか…
0964デフォルトの名無しさん
2007/02/05(月) 14:23:52だからCR/LF/CRLFの3種類全部対応するはめになった
0965デフォルトの名無しさん
2007/02/05(月) 15:24:010966デフォルトの名無しさん
2007/02/05(月) 18:19:41税金の話かとオモッタ。
0967デフォルトの名無しさん
2007/02/05(月) 19:17:500968デフォルトの名無しさん
2007/02/06(火) 01:49:35それ以前に、会話の基本だったりするが...。
0969デフォルトの名無しさん
2007/02/06(火) 01:57:250970デフォルトの名無しさん
2007/02/06(火) 09:52:20改行はCRLFにする事って読んだ事はある。
CRやLFの奴もあるから注意と書かれているのでしょうか?
いや、マジ教えて。
0971デフォルトの名無しさん
2007/02/06(火) 09:59:570972デフォルトの名無しさん
2007/02/06(火) 20:54:43スレッドでaccept関数を呼んでいるのですが、
プログラム終了時にスレッドを終了させたいと思っています。
その場合、acceptを終了させるにはどうしたら良いのでしょうか?
0973デフォルトの名無しさん
2007/02/06(火) 20:58:580974デフォルトの名無しさん
2007/02/06(火) 21:04:58なるほど、ありがとうございました。試してみます。
0976デフォルトの名無しさん
2007/02/06(火) 22:17:44...
>The line terminator for message-header fields is the sequence CRLF.
>However, we recommend that applications, when parsing such headers,
>recognize a single LF as a line terminator and ignore the leading CR.
0977デフォルトの名無しさん
2007/02/06(火) 22:38:26それはメディアタイプ"text"のボディの話でヘッダには適用されない。むしろ
> a bare CR
> or LF MUST NOT be substituted for CRLF within any of the HTTP control
> structures (such as header fields and multipart boundaries).
とか書かれてるぞ。アマゾンアソシエイトが全滅しても弾かなくちゃいけないらしい
0978デフォルトの名無しさん
2007/02/06(火) 22:39:50HTTP Request Smugglingとかで足元をすくわれかねないし。
0979デフォルトの名無しさん
2007/02/06(火) 22:57:36パースじゃなく生成しちゃだめって意味なのかな?
0980デフォルトの名無しさん
2007/02/06(火) 22:59:47プロトコルとしては、ヘッダの改行は必ずCRLF。それ以外はダメ。
高可用アプリケーションは、それ以外が送られてきても受け付けるべき。
と書かれている。
0981デフォルトの名無しさん
2007/02/07(水) 01:07:19HTTPに限らなければ、メッセージの途中で種類が切り替わることもあったし、
LFCRという腐った物を送りつけるものもある。
0982デフォルトの名無しさん
2007/02/07(水) 01:13:26> HTTPに限らなければ、メッセージの途中で種類が切り替わることもあったし、
HTTPでもhtmlの途中で改行の種類が変わるとかふつーにあるぞ。
ユーザーがアップロードしたhtmlと埋め込まれた広告で改行の種類が違うとか。
0983デフォルトの名無しさん
2007/02/07(水) 01:49:580984デフォルトの名無しさん
2007/02/07(水) 02:07:160985デフォルトの名無しさん
2007/02/07(水) 12:22:47そういうのもあるんだ。
CR LF x [2nd char]
CR 2 1 1
LF 1 2 1
改行個数がこうなるわけね。
0986デフォルトの名無しさん
2007/02/07(水) 14:17:26section 3 は entity body と関係ないよ。
0987デフォルトの名無しさん
2007/02/07(水) 22:57:340988デフォルトの名無しさん
2007/02/08(木) 00:01:590989デフォルトの名無しさん
2007/02/08(木) 12:31:551改行→CRLF 固定
1改行→CR (コード切り替わりに続いて) 1改行→LF
とかの区別つかないのか。 後者の改行1つロストされるのはしかたないよね…
0990デフォルトの名無しさん
2007/02/08(木) 13:25:39関連リンクは>>3-6のままでいいですか?
0991デフォルトの名無しさん
2007/02/08(木) 13:34:150992デフォルトの名無しさん
2007/02/08(木) 21:48:47etherealはテンプレから消したほうがいい。
0993デフォルトの名無しさん
2007/02/08(木) 22:30:33なんで?シャー区嫌いなんだけど
0994デフォルトの名無しさん
2007/02/08(木) 23:25:210995デフォルトの名無しさん
2007/02/09(金) 00:16:48「Yes? or NO?」 「あ、あうぁぅ・・・ い・・・の・・・ ぉ、ぉ、オア!」
って感じだなオイ
0996デフォルトの名無しさん
2007/02/09(金) 00:27:45「あんど」という解決を思いつけないのか。
問題先送り野郎といって安堵しているんじゃねぇ。
0997デフォルトの名無しさん
2007/02/09(金) 04:06:150998デフォルトの名無しさん
2007/02/09(金) 05:55:30Etherealのページしか見てなかったから知らなかった。
どおりで去年からずーっと更新がないわけだ。
リンクはWiresharkの旧版というのを明記するか、消したほうがいいでしょう。
0999デフォルトの名無しさん
2007/02/09(金) 09:17:47使ってるんだから消すな という声も多いよ
1000デフォルトの名無しさん
2007/02/09(金) 09:43:46| 丿 ヽ
/ ー ー | レスを読んでも理解できませんので
| ( _●_) ミ ROMってます
彡、 ヽノ ,,/
/ ┌─┐´
|´ 丶 ヽ{ . }ヽ
r ヽ、__)ニ(_丿
ヽ、___ ヽ ヽ
と____ノ_ノ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。