[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 07/09 08:15 / Filesize : 78 KB / Number-of Response : 298
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:04:56 ]
主にソケットに関しての質疑応答スレッドです。

Programming UNIX Socket FAQ (日本語訳)
 www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
 www.kt.rim.or.jp/~ksk/wskfaq-ja/

関連リンクは>>2-10辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port18
pc10.2ch.net/test/read.cgi/tech/1159692799/

2 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:05:58 ]
過去スレ:
Port17 pc8.2ch.net/test/read.cgi/tech/1148944560/
Port16 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

3 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:07:20 ]
図書コーナー:
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
 www.amazon.co.jp/exec/obidos/ASIN/4894712059/
 そのソースコード
 www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
 www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
 www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
 www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
 〈Vol.1〉原理・プロトコル・アーキテクチャ
  www.amazon.co.jp/exec/obidos/ASIN/432012054X/
 〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
  www.amazon.co.jp/exec/obidos/ASIN/4320028007/
 ?Linux/POSIXソケットバージョン
  www.amazon.co.jp/exec/obidos/ASIN/4320120841/
 ?Windowsソケットバージョン
  www.amazon.co.jp/exec/obidos/ASIN/4320029992/

4 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:08:04 ]
マスタリングTCP/IP RTP編
 www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
 www.amazon.co.jp/exec/obidos/ASIN/4894714671/
Webプロトコル詳解?HTTP/1.1、Webキャッシング、トラフィック特性分析
 www.amazon.co.jp/exec/obidos/ASIN/4894715414/
WinSock2.0プログラミング
 www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
 www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
 www.amazon.co.jp/exec/obidos/ASIN/4756142362/
Visual Basicではじめるネットワークプログラミング超入門
 www.amazon.co.jp/exec/obidos/ASIN/4839917523/

5 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:08:42 ]
URL抜粋:
★規格
RFC 日本語版リスト
 www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
 rfc-jp.nic.ad.jp/link/
RFC Editor
 www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
 www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
 www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html
IANA Well known port numbers
 www.iana.org/assignments/port-numbers
★プログラミング
C10K ヘヴィーロードサーバ
 www.kegel.com/c10k.html
MSDN
 msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
 www.whitefang.com/rin/
Java で packet capture
 netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
 www.faqs.org/rfcs/rfc1750.html
BoostSocket
 www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
 www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
 X68000.q-e-d.net/~68user/net/

6 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:09:33 ]
★ツール類
ethereal - www.ethereal.com/
Wireshark - www.wireshark.org/
tcpdump - www.tcpdump.org/
Windump - netgroup-serv.polito.it/netgroup/tools.html
WinPcap - www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - www.employees.org/~bmah/Software/pchar/
Packetyzer - www.networkchemistry.com/products/packetyzer/
libevent - www.monkey.org/~provos/libevent/

★プロトコル
TTCP
 www.sean.de/Solaris/ttcp.html
 www.kohala.com/start/ttcp.html
UDP Hole Punching
 homepage3.nifty.com/toremoro/p2p/firewall.html

★IP, TCP実装
www.iti.fi/documentation/miniip.html
www.sics.se/~adam/uip/
www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
www.geocities.jp/bruce_teller/security/garakuta.htm

7 名前:1 mailto:sage [2007/02/09(金) 23:15:50 ]
前スレ >>990-1000
前スレと同じテンプレで立てさせてもらった。

次スレを立てる人へ
>>5のRFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳のアドレスは
www.studyinghttp.net/cgi-bin/rfc.cgi?2616 に変わっているから立てるときに変えてください。

8 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 00:02:51 ]
チャンスを掴む入口⇒ luckygame.tv/

9 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 01:15:47 ]
関連かな?

Java ネットワークプログラミング 【教えて!】
pc10.2ch.net/test/read.cgi/tech/1086238859/

10 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:35:11 ]




11 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 14:15:40 ]
教えてください。
send/recvを使ってHTTP通信したいのですが、ブロックしてしまうのを回避するために
・send/recv前に毎回selectして調べる
・非同期でsend/recvしてh_errorを調べる
の方法は適切ですか?

12 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 14:30:19 ]
・非ブロックソケットを使う

13 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 14:36:55 ]
>>11

・無限ループのスレッドでずーっとread、メインはセマフォ待ちで待機。
・改行の受信か相手側のクローズを検知したらセマフォを解放

これが正しいモデルだと思うけど、どうよ。

14 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 15:09:40 ]
無条件に正しいモデルなんてものはない。

15 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 15:57:44 ]
無限ループのrecvなんて、最悪だな。

16 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 16:04:37 ]
read/recvはCPU負荷率が下がるので逆に推奨。
最悪なのはI/O待ちもsleepもない計算だけのループ。

17 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 16:23:51 ]
I/O待ちだけでブロックしてるようなスレッド作ると、他所から
そのスレッドを綺麗に終了させる手段がないじゃん。
イベントとI/Oの両方を待機させるような作りにするのが定石じゃないの。

18 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 16:43:28 ]
>>17
I/Oにイベントを流してやる

19 名前:11 mailto:sage [2007/02/17(土) 17:45:45 ]
レスありがとうございます。
後出しになって申し訳ないのですが、実はApache + C++CGIとして動作させています。そのため、スレッドの生成は避けたいと思っています。
CGIの待機中プロセスが増えすぎてしまわないためにタイムアウトを設けたいと思って質問しました。

少なくとも毎回selectするくらいなら非ブロックモードにするべきのようですね。
非ブロックでsend/recvし、ソケットが閉じられるまでループさせる方法で試してみます。

20 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 18:34:48 ]
> イベントとI/Oの両方を待機させるような作り

そうそう、
socketのイベントとpthread_cancelを同時に待つ方法が知りたい。



21 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 18:47:00 ]
>>20
スレッドでソケットでセレクト

22 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 00:35:09 ]
>>19
> 少なくとも毎回selectするくらいなら非ブロックモードにするべきのようですね。

なことはない


23 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 15:55:13 ]
何でRFCはあんなに読みにくいのかと。

24 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 08:43:58 ]
読みやすいよ。規格書としては抜群に。
ITU, IEEE, ISOに比べればね。

25 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 11:37:13 ]
Can't Conceive Intelligent Thoughts Today

26 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 03:40:15 ]
Content-Dispositionでさあ、IEってfilename="c:\abc\def.txt"
みたいに送ってくるけど、\はquoted-pairになるから、これって違法な
気がするんだが・・

27 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 11:07:40 ]
プログラムとちょっと外れるけど
環境はWindowsXPです
名前解決を変更するのにHostsをいじればいいわけですが
ドメインではなくて実際のIPにフィルターかけることって出来ますかね?
192.168.1.90 -> 192.168.1.100
90へのリクエストはすべて100へ行くようにしたいわけです
ソケットフックするしかない?

28 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:38:18 ]
static arpを登録すればいける気がする。
(IP->IPのマッピングじゃないけど。)

29 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:39:49 ]
書き込んでから気づいた。受け取り側がよっぽどアホでない限り、
自分のIP宛でないパケットが来たところで無視されるのがオチだな。

30 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:16:24 ]
・/28あたりでネットマスク切って、あとは自力構成したルータの
パケットフィルタで書き換える

・振り替えを実行したいマシン毎で、192.168.1.90に対して、192.168.1.100のMACを
static ARPとして設定する。そのうえ、192.168.1.100のマシンで、ループバック
インターフェースに、192.168.1.90/32を割り当てる。100のマシンのホストモデルが
「強力」なら「弱い」にしておく。

くらいしか思い浮かばないな。



31 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:18:53 ]
というか、それがいわゆるNAT。

32 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:24:44 ]
宛先を書き換えるわけだから、逆NATでないの。まーどーでもいいけど。

33 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 16:18:26 ]
ちなみに100のほうは変動するので
90内でだけで解決しないといけない

34 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 18:19:00 ]
>>32
裏と表がひっくり返った50円玉やるよw

35 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 19:55:51 ]
ジャイアン乙

36 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 23:55:52 ]
>>27
リクエスト元が192.168.1.90、100と違うサブネットなら、境界のルータで
NATかければいい。
同じサブネットなら、無理やりな方法になるけど>>30 かな?

>>32
(NAPTじゃない)NAT、それも固定NATなら、対称なんだから逆も何もない。

37 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 11:48:19 ]
100のほうは正確にはグローバルIPになる
ローカルから接続する対象をリアルタイムで変更したいわけ
ソフトによってはIP固定で通信してるからそれに対応したいということ
NATってあて先変更できたっけ?
90のほうにNATソフトいれたら出来るんだっけ?
そういう機能があるソフト知ってたら教えて下さい

38 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 14:37:41 ]
とりあえず、>>6にある
UDP Hole Punching
 homepage3.nifty.com/toremoro/p2p/firewall.html
の中のNATの説明読んでから出直してくれ。
そしてプログラミングに関連づけて質問し直してくれ。

39 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 17:08:33 ]
技術的に出来ることは十分わかってるんですが
ソケットをフックするよりドライバ書いてるほうがはるかに手間がかかるので
NATの原理で出来るというアドバイスは愚の骨頂です
最初に書いた通り、こちらの最も望むものはフックするより手間の掛からない方法です

40 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 17:53:01 ]
>>39=>>27なの?
馬鹿だなあ。
知識足りないんだから、大人しく教えを乞えばいいのに…




41 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:00:56 ]
なんだなんだ、ネトゲの改造か何かか?

42 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:02:01 ]
チートツールじゃないですよ。健全な目的です。

43 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 19:17:26 ]
rtspとかmmsのパケットをキャプチャするプログラム作りに挑戦始めました。

ttp://www.jptm.net/memo/index.php?cmd=read&page=WinPcap%A4%F2%BB%C8%A4%C3%A4%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0&word=winpcap

とりあえずこのページのサンプルを実行してみましたが、
いまいちよくわからず・・・

このサンプルではrtspとかmmsとかをキャプチャできるのでしょうか?

というか全然知識が足りないので
読んだ方がよいページとかありましたら
紹介お願い致しますm(_ _)m

44 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 22:16:38 ]
RFC 2326(rtsp)
www.ietf.org/rfc/rfc2326.txt

mms、mmshはmplayer、xineとかのコードとかでしょうか。


45 名前:43 mailto:sage [2007/02/27(火) 07:27:19 ]
ありがとうございます。

というかまだ全然プロトコル解析の段階にいってません・・・orz

メディアプレイヤーで以下のアドレスを再生させると
mms://wms.g2.cdn.bcast.co.jp/yahoo/ystream/kad/10193/kad1019300001100000b929.asf?session_id=b4d2575ccae7b6b454cece0e68ea0860&product_id=
取得パケットの中には
202.93.94.14
という外部アドレスだけが見つかりました。

ttp://www.cman.jp/network/support/ip.html
で調べたところ、
wms.g2.cdn.bcast.co.jp
というのは
202.93.94.16
というアドレスであると出たのですが

逆に
202.93.94.16
を調べたら
wms06.g2.bbt.bcast.co.jp
と出ていました。

46 名前:43 mailto:sage [2007/02/27(火) 07:28:53 ]
202.93.94.14
を調べたら
wms04.g2.bbt.bcast.co.jp
と出ていました。

でももう一度改めてパケット取得してみたら

202.93.94.15
というアドレスだけが見つかりました。

wms.g2.cdn.bcast.co.jpというドメイン名からは
正確なIPアドレスはわからないものなのでしょうか?

47 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 07:40:33 ]
% dnsip wms.g2.cdn.bcast.co.jp
202.93.94.16 202.93.94.15 202.93.94.18 202.93.94.17

「正確なIPアドレス」の定義がよくわからんが、1つのDNS名が
複数のIPアドレスを持つのは、負荷分散的によくあること。

48 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 06:05:23 ]
>>46
DNSラウンドロビンだのぉ。

49 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 07:12:46 ]
マルチスレッドのスレからきました。
winsockのプログラミング勉強してます。

recv関数でよくselect使用して、タイムアウト処理すると思います。
同じようにして、accept関数のタイムアウト処理をしたいと思ってますが、
accept関数呼ぶ前に、select関数使えないんでしょうか。

FD_ZERO(&readfds);
FD_SET(soc,&readfds);
select(width,&readfds,NULL,NULL,&timeout)

socは、きちんと渡せていたんですが、接続試しても
select抜けられずに、全部タイムアウトになります。
accept呼んでからじゃないと、ソケットの読み取り可能か
わからないのでしょうか。

やりたいこと伝わりませんでしたら、
補足させていただきます。

50 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 07:49:08 ]
selectの最初の引数が気になるけど、それでOK.



51 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 09:32:35 ]
>>50
WSAStartup->socket作成->bind->listen->accept->select呼んでrecv
よくあるrecvのタイムアウトは、こんな順番だと思います。

accept関数もずっと待ち状態になるので、recvのときと同じように
タイムアウトの機能を、追加できないかと考えてます。
WSAStartup->socket作成->bind->listen->select呼んでaccept->recv
なぜか、クライアントから接続してもselectから、抜けられないんです。
タイムアウトだけでしか抜けられません。

・acceptした後でないと、ソケットの読み取り可能かわからず
select関数使え無い。ということがあるのかと思いましたが
気のせいでしょうか。

>selectの最初の引数が気になるけど、それでOK.
selectにも、きちんと引数渡せてるようなので、
どこがおかしいのかわからないです。

もうちょっと、ポイントしぼれるようにがんばってみます。
レスありがとうございました。

52 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 10:04:44 ]
51です。
あれれ、ソースコード特にどこも変えた覚えないのですが、
listenのときのソケットディスクリプタと
acceptの返すディスクリプタの値比べて、
同じ値が表示されてるの確認作業したりしていたら、
いつのまにかタイムアウトの処理できていました。

んー、ほんとにどこも変えた覚えは無いのですが・・・
原因説明できなくて、すみません。
acceptもrecvとほぼ同じコードで、タイムアウト処理できました。
どうもお騒がせいたしました。
ありがとうございました。

53 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 10:19:20 ]
acceptのタイムアウトが出来ると、
アプリの終了処理の時に使えますね。

54 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 11:58:52 ]
poll( )なプログラムを、pollを持ってないWIN32環境にselect( )で移植しています。
selectを使ったpollの実装ってどこかに転がってたりしませんでしょうか?
ぐぐったのですがいいのがなくて。
既出だったらスマソ

55 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 13:25:26 ]
pollって1024以上オッケーだっけ?

56 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 16:07:36 ]
>>54
WSAEventSelectで登録して、WaitForMultipleObjectsがWinSockの作法。
WaitForMultipleObjectsの上限に引っかかるぐらいのスケールなら、IoCompletionPort。

57 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 16:38:26 ]
>>54
手抜き移植でソースをなるべく変えずにpoll()を使いたいってこと?
cygwinは、WaitForMultipleObjects()を用いてselect(), poll()を
エミュレートしてるはずなので、cygwinのソースを読むと良い。
つか、移植の手間を一切掛けたくないのなら、ぶっちゃけcygwinで
コンパイルすればいいだけなのだが。cygwin1.dllには依存するけどな。

一から自分で書くなら、>>56の言うようにIOCPがWindowsではもっとも
効率がよく、しかも色々応用が利いて便利だ。NT系のOSでしか使えないが。

58 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 03:37:06 ]
書籍スレで聞くべきかも知れませんが、
中級ネットワークプログラミングみたいな本で
お勧めの本はありませんか?
英語でも構いません。

amazon.co.jpや、お勧め書籍スレ/ページは色々見てみましたが
基礎的なソケットの使い方などの本が多いようです。
それなりに実用的なネットワークソフトの解説のようなものがあれば幸いです。
ソース嫁ってことになるのかも知れませんが、よろしくお願いします。

59 名前:デフォルトの名無しさん [2007/03/04(日) 18:32:12 ]
板違いなのですが、おそらくこちらのスレの方のほうが詳しいと思いますので、
質問させてください。

環境:Windows2000/XP

会社で営業部ドメイン(EIGYO)と、技術部(GIJYUTU)があります。
自分のPCは、GIJYUTUに属してます。
UNC(\\EIGYOU\フォルダ名の形式)を使って、営業部ドメインの
共有フォルダにアクセスする事は出来るのですが、
「マイネットワーク」を開いて、営業部ドメイン(EIGYO)にアクセスする事が
出来ません。営業部ドメイン(EIGYO)自体表示されない。
「マイネットワーク」に、自分が所属していないドメインを表示させる方法って
ありますでしょうか。



60 名前: ◆Z4QrFDzwrY mailto:sage [2007/03/04(日) 20:53:07 ]
>58
プロトコルをヘッダ込みで実装してみるとか
メーラーを作ってみるとかするのがいいと思う
プロトコルのコマンドやフォーマットはネットで探せるし
Etherealを使えばアプリがやり取りしているパケットも見れる
ドライバ、apacheなどのモジュールを作るのもいい
中級を目指すならこれから作るものを定めておいたほうがよいのでは
などといってみる
レベルが上がるにつれて道程は細分化していくから



61 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 22:26:31 ]
\\EIGYOU

62 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:21:29 ]
54です。
>>56 >>57 dクス
手抜き移植と言うか、今後のメンテを考えて、
unix/linux版とwin版でできるだけ統一ソースにしておきたいんですよねぇ...

socketのラッパーみたいなのがあるといいなぁとオモタのですが、
自分で書くことにしますです。

63 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:28:21 ]
$(GLIBC)/sysdeps/unix/bsd/poll.c じゃダメかい? > selectのpollラッパ

64 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 15:00:24 ]
>>63
$(GLIBC)/sysdeps/unix/bsd/poll.c 使えそうですね。どもです。

65 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 16:38:00 ]
>>57
cygwin.com/snapshots/cygwin-src-20070301.tar/cygwin-snapshot-20070301-1/winsup/cygwin/poll.cc
にそのものずばりのselectをつかったpollの実装がありますた(・∀・)
cygwin_selectを使っているのでこの部分をwin32sdkの_selectに移植する必要がありますがだいぶ参考になりそうです。


66 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 20:13:17 ]
>>65
for (i = 0; i < nfds; ++i) {
fds[i].revents = 0;
if (!cygheap->fdtab.not_open (fds[i].fd)) {

sysdeps/unix/bsd/poll.c ってこんな実装になってるんですね... 総当り(笑)

やはり発想変えてpollになっているところをselectに直すほうがいいのかなぁ。
教えてエロイ人

67 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 20:15:50 ]
根本的にlibevent使って書くとか、
どこでも使えるselectにするとか
するしかないんじゃないの。

68 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 11:11:56 ]
BASIC認証について質問です。

サーバのあるディレクトリにアクセスすると、はじめの1回目の認証で
ダイアログボックスが表示されますが、2回目以降はそのディレクトリ以下に
アクセスしても表示されなくなります。
この機能は、サーバとクライアントどちらの機能で実現されているのでしょうか。

Basic認証では、ログインではなくて、毎回ID、PASSを送信しているということなので
「サーバの方では特に何もせずに、クライアントの方でアクセスしたURLのアドレスを記録しておいて、
2年目以降は、その下のディレクトリにアクセスするときは、初めからリクエストのヘッダに
”Authorization: Basic hogehogehoge”を付けるようにしている。」というふうに考えたんですけど、
どうなのでしょうか。

よろしくお願いします。

69 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 11:39:03 ]
>>68
パケットモニタで調べてみますた。
クライアント側で毎回送ってますね。
Authorization: Basic hogehogehoge
をつけないでGET/POSTすると、応答に
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic realm="Login"
みたいなのが帰ってきます。

70 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 12:03:29 ]
>>69
調べていただいてありがとうございます。

BASIC認証で一回アクセスしたら、何らかの仕組みで、
ブラウザの方でそのアクセスしたURL(ディレクトリ)を覚えておいて、
2回目以降そのディレクトリ以下にアクセスするときは、自動的に
ヘッダーにAuthorization: Basic hogehogehoge を付けてるんですね。
ふむふむ。それで、2回目以降はダイアログが出てこなくなると。

BASIC認証できるhttpサーバもどきを、勉強の課題で作ってますが、
サーバ側でなにか大掛かりな仕組みでもあるのかと、心配になりまして。

パケットモニタというのも、知らなかったので勉強になりました。
どうもありがとうございました。



71 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 13:28:19 ]
>>70
そういう調査技能もあると便利だが
HTTPに関してはRFC2616とかに全部定義されている

72 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 17:16:40 ]
winsockの勉強中に疑問に思ったことの質問です。

sockB = accept(sockA, &addr, &size)のような形で子スレッドで
動かしていて、acceptでブロックされてます。アプリケーション終了時に
親スレッドでclosesocket(sockA)という風に処理していいのでしょうか?

73 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 17:30:20 ]
>>72
「処理していいのでしょうか?」の意味が、

処理して正しく動作するのでしょうか?
→知らん。試せばわかる。>>72が期待している動作(acceptを抜けるか/抜けないか、
 抜けるときのsockBの値、GetLastErrorの値、etc) を知りようがないのに
 正しい動作も何もない。

一般的にそのような処理をするものなのでしょうか?
→マルチスレッドを真面目に考えたプログラムなら、イベント使って、
 非同期Acceptをするので、このような状況に陥らない。


74 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 10:21:30 ]
>>73
回答ありがとうございます。

もっとマルチスレッドやイベントについても勉強しないといけないようでした。

75 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 18:56:05 ]
レジュームダウンロードについて教えてください。
サーバ側:ダウンロードしたファイル
クライアント:ダウンロードの途中のファイル
こういう状況だったとします。

1.接続しクライアントに途中のファイルがあるかどうかを確認。
2.クライアント:ファイルを読み込んでハッシュ値を出し、「ファイルの名前:読み込んだ文字列の長さ:ハッシュ値」を送信
3.サーバ:「ファイルの名前:読み込んだ文字列の長さ:ハッシュ値」を受信します。
4.サーバ:読み込んだ文字列の長さ分(Nとします)、ファイルから文字列を読み込んでハッシュ値を出し、クライアントからのハッシュ値を比較
5.ハッシュ値が一致した場合は、seek関数でファイルのポイントをN個移動して、そこから読み込んで順番にデータを送信

こういう感じでしょうか?
修正、追加する場所、その他気をつけることなどありましたら
アドバイスよろしくお願いします。

76 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:26:23 ]
なんでハッシュが出てくるのか分からん

77 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:57:35 ]
Range:bytes=100-

78 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:05:40 ]
REST 100

79 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 03:24:23 ]
FTPの場合REST 100で100バイト目から取れる根拠は実はRFC959にはないけどな。
もっと新しいRFCがあるのか?

80 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 07:57:54 ]
>>76
同じファイルか、確認のため比較する容量が大きいと転送が大変だと思いまして。

>>76
>Range:bytes=100-
httpのヘッダー情報に、こういうのがあったとは。
でもブラウザは、途中からのものをダウンロードできても、
上書きだけみたいですね。

>>78
ttp://www2s.biglobe.ne.jp/~hig/tcpip/HostReq_Appl.html#HREQAPP_4_1_3_4
サーバ FTP は、データストリーム中の都合の良い箇所に再開マーカ <ssss> を付ける
buf="hogehoge";を送信するとき、
"<ssss>hogehoge"を送信して、
・サーバ側では、send()するとき、<ssss>をbufのどこか適当な位置に挿入して送信
・クライアント側では、recv()するたびに、制御ファイルの(ssss,rrrr) を更新。
・再開するときは、<ssss>を送信。

とリンク先見てこいうことかと想像してたんですが、実際の実装で
送られてくるクライアントに、送信される文字列bufって、どんな形なんでしょうか。
RFCでどこに書いてあるのか探してるんですが、よくわかりません。



81 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:01:48 ]
80です。
通信の中身は、パケットモニタで見るという方法がありました。

82 名前:デフォルトの名無しさん [2007/03/10(土) 09:15:33 ]
>>80
> とリンク先見てこいうことかと想像してたんですが、実際の実装で
> 送られてくるクライアントに、送信される文字列bufって、どんな形なんでしょうか。
> RFCでどこに書いてあるのか探してるんですが、よくわかりません。

とにかくRFCを読んで。
解説ページに惑わされないで。

83 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:18:57 ]
>79
まだdraftだけど。
www.ietf.org/internet-drafts/draft-ietf-ftpext-mlst-16.txt

84 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:00:50 ]
>>83
おお。5.1でSTREAMモードでの再開が規定されとる
> Expiration Date: March 2003
が気になるけど

85 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:59:47 ]
>>75
なにげに、この方法よいのかも?

86 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 18:03:11 ]
負荷おおすぎねえ?

87 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 18:51:57 ]
>>86
確かに大きそう。まあSSL通信に比べれば
そんなでも、ないかもしれないけど。

88 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:53:00 ]
アホか
手順4見てみろ

89 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:56:01 ]
DDoSされたら終わりだな

90 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 00:05:22 ]
ハッシュ値持たせるならサーバ側はブロック単位で最初から持っとけよ
クライアント側で計算させて一致しないのだけやり直しが普通の発想だろ



91 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 03:00:14 ]
>>88
w

>>89-90
同意

92 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 05:51:09 ]
同じファイルかどうかなんてクライアントがETagでも覚えとけよそんくらい。

93 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:28:22 ]
ブロック毎に32bitCRC値を持たせるとしたら、
ブロックの長さはどれぐらいが適当でしょうか。
仮に64kByte毎だと1MB辺り64Byteで済みますが、
これは冗長でしょうか。

94 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:06:46 ]
残りの長さの全部のハッシュを求めないで、
サーバとクライアントでそれぞれ2,3箇所ピックアップして、
ハッシュ求めれば十分じゃん。
あとダウンロードは、なんも処理しないでいいんだし。

ただ、これをいうと、ハッシュじゃなくてもいいんだよな。w
どれだけ'同じファイルであるかの確かさ'を求めるかだ。
毎回なんか処理しながらダウンロードって、しないに越したことは無いでしょ。
突っ込みの嵐の予感。

95 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:37:08 ]
>>94
> ただ、これをいうと、ハッシュじゃなくてもいいんだよな。w

>>76

96 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 00:53:50 ]
>>93
ブロック長が長くなるほど衝突が増える。
ブロック長が長くなるほど再送に無駄が増える。

後は自分で考えて。

>>94
普通、まずサイズや最終更新時間を調べるでしょ。
そんなわけでFTPだってSIZEとMDTMコマンドがある。


97 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 01:05:38 ]
まあそれも>>83だけど

98 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:11:12 ]
udpでメッセージを交換する簡単なプログラムを作っているのですが、
可変長文字列で詰まってしまいました。

struct message{
int size;
char buf[1];
}

struct message *p;

p = (struct message *)malloc( sizeof(struct message) + strlen(input) );

送信したい文字列をinputに格納して、その長さに合わせてこのmessage構造体をmallocしているのですが、
受信側ではなぜか文字列が途中で途切れてしまいます。
可変長を実装するにはこのやり方は間違っているのでしょうか?

99 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:31:48 ]
MTUよりでかくなってないか?

100 名前:98 mailto:sage [2007/03/13(火) 01:03:07 ]
MTUが1500で、送信サイズが20byte程度でしたので、MTUを越えてはいないと思います。
今色々デバッグしてみたところ、sendtoで送信できているサイズが、sizeof(struct message)と同じ値でした。きちんとmallocはしているはずなのですが…



101 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 01:41:23 ]
送信側のsendのところと受信側のrecvのところのコードを晒せ

102 名前:98 mailto:sage [2007/03/13(火) 02:16:30 ]
sendとrecvのサイズを設定する引数が間違っていました。

send:
sendto( s,p,sizeof(struct message) + strlen(input),0,(struct sockaddr *)pfrom,fromlen );

recv:
recvfrom(s,p,sizeof(p)+20,0,(struct sockaddr *)pfrom,fromlen);

といった感じに改造したところ、短いメッセージならきちんと受信できるようになりました。ただ20という数字が適当なので、この部分をきちんとinputの長さに合わせたいです。

103 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:24:59 ]
sizeof(p)がstruct message *pなんだろうなぁ
C言語のテキスト見直ししる。

104 名前:98 mailto:sage [2007/03/13(火) 11:23:32 ]
受信側をsizeof(struct message *p)としましたが、やはり適当な値を受信サイズに加算しないと駄目なようなので、この方法でやろうと思います。
ありがとうございました。

105 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 12:46:23 ]
>>103
> sizeof(p)がstruct message *pなんだろうなぁ

これは>>98のミス原因をつぶやいただけだろ。
Cの勉強し直してくれ。Cが分からないから>>103を誤読する。

106 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 12:49:16 ]
それからC99から、
struct message{
int size;
char buf[0];
}
と定義できるぞ。
これで出来ることは増えないが、サイズ計算が単純になる。
seclan.dll.jp/c99d/c99d04.htm#dt19990726

107 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 14:00:49 ]
>>103
recvfrom(s,p,sizeof(p)+20,0,(struct sockaddr *)pfrom,fromlen);
で、pの宣言がstruct message *pなら
sizeof(p)+20=24ぐらいになるってことでしょ?
paddingとか32bit環境とかは置いといてね。

108 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 20:20:03 ]
> これで出来ることは増えないが、
C99以前は配列の最終要素を踏み越えるのは厳密には未定義じゃなかったっけ

109 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 20:57:03 ]
UDPはパケット境界保持されるんだから小細工しなくていいんでない?


110 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:00:07 ]
UPNPのnat traversalで空けたポートに
"本当に"外部ネットワークからアクセスできるか確かめる方法って
外部にそれようのサービス立てておいてそれを叩くしかないよね?



111 名前:デフォルトの名無しさん [2007/03/13(火) 21:03:34 ]
>>110
携帯電話からアクセスしたら?

112 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:05:53 ]
すまん言い方が悪かったかな
ポートを空けたプロセス自身から確かめる方法

113 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 19:50:51 ]
ちょっと基本的な事ですいません。
[サーバ(accept側)]−[クライアント(connect側)]
こんな感じで繋がっている時、
1秒間にサーバからsendできるデータの限界量=上り帯域
1秒間にクライアントからsendできるデータの限界量=下り帯域
という概念で合ってるでしょうか。

114 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:51:36 ]
sendがsocket apiのsendのことをさしているなら違う。
sendはtcpの送信バッファにコピーするだけ。

115 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 02:01:58 ]
udpだったらクライアントからはsendできたように見えても
どんどん捨ててるだけということもあり得るし

116 名前:113 mailto:sage [2007/03/15(木) 20:53:07 ]
では、
1秒間にサーバ/クライアントから送信できるデータの限界量=上り/下り帯域(/sec) 
という事でしょうか?

117 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:07:50 ]
ごはんつぶは糊として使えるが
糊=ごはんつぶというわけではない

118 名前:58 mailto:sage [2007/03/16(金) 00:04:01 ]
>>60
さんざん遅れて申し訳ありませんが、ありがとうございます。
しばらく仕事に忙殺されていて死にかけていました。

119 名前:113 mailto:sage [2007/03/17(土) 02:47:41 ]
なんとなく自己解決しました。

120 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:54:02 ]
ソケット通信でどっかのHPのCGIに引数を渡すときはどういう応答すればいいんですか?
HTMLで言うところのformからPOSTでCGIを呼ぶってことです。



121 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:04:51 ]
RFC 2616を読む

122 名前:デフォルトの名無しさん [2007/03/18(日) 09:58:27 ]
ここってライブラリの質問もあり?

123 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:05:24 ]
前スレでOpenSSLの話はダメという結論になった

124 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:14:56 ]
じゃあ、このスレ限定でおk

125 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 14:22:26 ]
>121
まとめてください。

126 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:21:00 ]
おらさっさとまとめろやクズ。

127 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:17:47 ]
みなさん。スルーで。

128 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:29:29 ]
急ぎませんので、今日中にまとめておいてください。それでは。

129 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 21:00:24 ]
わろたw

130 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:02:54 ]
windowsとlinuxの間で、C/C++でソケットプログラミングしてます。
チャットソフトです。

・print、strcpyとか気を付けるのと、ほかになにかあるでしょうか。
・もしも、WEBサイトに文字列を表示させる場合は、メタキャラクタのエスケープ処理ですよね。
検索したところ、これぐらいかと思ったのですが、まだまだたくさんあるでしょうか。

アドバイスよろしくお願いします。



131 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 20:13:39 ]
>>130
ttp://www.freebsd.org/ja/security/#spg
ここが参考になるよ

132 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:57:22 ]
>>131
ありがとうございます。
参考にさせていただきます。

133 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 04:01:45 ]
便乗質問させてください。recv関数は受信される最大サイズが
決まってると思いますが、プログラミングしてて
長さがわからなくなるときって、どんなときですか。

134 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 04:41:28 ]
日本語でおk

135 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 04:43:10 ]
つかマジで機械翻訳なのかな
TCPなら繰り返し受信すればいい
UDPだったら1つのパケットに入りきらないメッセージが来ること自体あり得ない

136 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 16:02:47 ]
>>133
長さがわからなくなるときは、無い
長さは必ず返却される

137 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:24:33 ]
>>136
レスありがとうございます。
ネットワークプログラミングでは、バッファ・オーバー・フローは
気にしなくても大丈夫なんでしょうか。

気を付けて使ってるのかわからないですが、猫でもわかるとか、
他の本でもstrcpy使用してみるみたいです。
strncpy、snprintfは全然見ないような。

138 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:38:07 ]
返された長さにもとづいてやればオーバーフローしないよ
長さを無視してるとダメだけど、
それはネットワークに限った話じゃないし

139 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:01:20 ]
>>137
バッファオーバーフローは無論あってはならない。特にネットワークプログラミング
においては重大なセキュリティホールに繋がりかねないので、強く意識すべき。

C++を使えるのなら、Cなんぞ使わずにstringやvector<>を使うことを薦める。

140 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:02:44 ]
ていうかさ、そんな事を質問している時点で
基本を何も分かってないって事だろ。

まず系統的に解説してある入門書読めよ。



141 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:56:11 ]
サンプルソースうpして聞けばいいよ

142 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 02:26:15 ]
>>138-141
レスありがとうございます。
>それはネットワークに限った話じゃないし
>C++を使えるのなら、Cなんぞ使わずにstringやvector<>を使うことを薦める。
とても勉強になりました。ありがとうございました。

143 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 01:22:19 ]
webアプリはクライアントがどのプログラムからhttpリクエストを出してるかということを
判別できるんですか?
ブラウザ(IE)に偽装した形でhttpリクエストを出したいんです。

144 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 01:34:49 ]
>>143
スレ違い
pc11.2ch.net/php/

145 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 11:49:08 ]
>>143
ajax使うしかないな
だが単純に普通にIE使ってたら最初の一発目は偽装不能

146 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:16:33 ]
ひとつのコネクションでデータの送信と待ちうけを行うには
ポーリングするのが一般的でしょうか?

147 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:58:48 ]
俗に言うselect系

148 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:02:27 ]
selectもブロックしてしまいますよね?


149 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:06:18 ]
>>148
ブロックさせたいんじゃねーのかよ

150 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:17:50 ]
ブロックしちゃうと任意のタイミングで送信ができないと
思うわけです。



151 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:52:30 ]
selectはポーリングにも使えるが?

152 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:00:53 ]
送信可能な時はブロックしないで戻るしね。

153 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:09:14 ]
selectの改良版はpollって名前だしね。

154 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:13:41 ]
ちょっと詳しく教えてくれないか?

155 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:20:08 ]
>>150
その任意のタイミング発生装置(ttyとかXのイベントとか)も
selectに含ませてブロックさせる。

156 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:27:59 ]
>>155
なるほど

あなた、もしかして天才?

157 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:48:32 ]
何、通りすがりのサラリーマンさ。 単身赴任のね

158 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:58:46 ]
>>157
すみません。本当はよく意味がわかってません。

しかーし、外部からselectを抜けさせればよいということですよね!

159 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 13:00:22 ]
こんな感じですよね?
www.geekpage.jp/programming/linux-network/select-eintr.php


160 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:28:56 ]
スレッド1:selectで受信待ち
スレッド2:問答無用でsend



161 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 21:39:18 ]
>>160
( ・∀・)イイ!!

162 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 04:21:50 ]
1つのコネクションを複数のスレッドから使えるんだっけ?

163 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 04:25:43 ]
>>162
今解らないことだらけでしょ?>プログラム作ってて
ソケットとかスレッドとか。
もしそうなら本買って勉強したほうがいいと思うよ

164 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 04:43:26 ]
>>146とは別人なんだけど。
たとえばWinsockはスレッドセーフであることは保証されていない
www.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html

165 名前:デフォルトの名無しさん [2007/03/29(木) 12:01:30 ]
女(socket)は一人、男(thread)が複数。

同時に複数の男が出し入れすることはできない。
一人がIOしているときは、他の奴が待つように作らないとバグるよ。

166 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 12:21:35 ]
>>165
その説明だと、1 socketに対し、3 thread同時にI/Oできるように読めるが?
また、thread同士でもI/Oできることになるので、適当な例えではない。

167 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 12:29:17 ]
>>166
(゚Д゚)ハァ?

168 名前:デフォルトの名無しさん [2007/03/29(木) 12:33:50 ]
3Pはできたとしてもそれでも「同時に」IOできるのは一人の男と言いたかった。
(もう一つ穴があるだろ、はなしね)

socket自体はスレッドセーフではないが、スレッド間で同時にIOを
行わないように制御すれば、複数スレッドで単一socketを使うことは可能じゃね?

しかし、それでもデータ内容がごちゃごちゃになる可能性があったりするし、
あまり良い方法とは思わないが。

誰の子供かわかんな〜い、になっちゃう。

169 名前:165 mailto:sage [2007/03/29(木) 12:37:39 ]
あ、165=168 ね

170 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 12:54:30 ]
>>168
別の板でやれ



171 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:26:08 ]
さて、そろそろパケットをティッシュに送信してから寝るかな

172 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 05:45:21 ]
winsockでTCP通信するプログラムを作ってますが、クライアントがconnectする時に
接続先のIPアドレスに自分のマシンのプライベートアドレス指定しているときは、正常に動作しますが
グローバルアドレスを指定すると、connectからエラーコード10061 (接続が拒否された)が返ってきます
Windowsファイヤウォールによるブロックは、されてない様子です

ネットワーク初心者ですが、どういうケースが考えられるでしょうか
よろしくお願いします

173 名前:172 mailto:sage [2007/03/31(土) 08:18:29 ]
自分自身のグローバルIPには接続できないって事ですかね
テストを行うには、リモートマシンを使わないといけないんでしょうか

174 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 08:43:37 ]
ルータやファームのバージョンによるのでは
うちはファームのバージョンあげたらできるようになった

175 名前:172 mailto:sage [2007/03/31(土) 10:20:27 ]
ポート4123番を開放して、自分のマシンでサーバを起動して、外部からクライアントで接続を試してもらったんですが
同じくconnectでエラーコード10061が発生します。何がいけないんでしょうか

176 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 10:55:02 ]
サーバって何?自作?
もしそうならbind呼び出しのところのコードを晒せ

177 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 11:21:02 ]
>>172 NATとかIPマスカレードの問題では。あるいはルータに
折り返し機能がないか(>>175はこの問題と関係ないが)。
どっちにしても、ルータの設定の見直しが必要だと思います。

178 名前:172 mailto:sage [2007/03/31(土) 11:30:34 ]
ポートを開放できてないのが原因でした。ありがとうございました!

179 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 14:12:13 ]
穴という穴に漏れの精子を流し込んだら、鯖が発狂しちゃった。
壊しちゃってごめん。

180 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 07:11:29 ]
コマンドラインだけのチャットプログラムを作って、
ネットワーク勉強したところです。

もっと、複雑な通信規則のアプリを作りたいとき、
なんの命令待ちか状態の推移の管理の仕方で、
わかりやすいサンプルプログラムや本などないでしょうか。
本屋に行ってもいい本みつからないです。

・データを送信したので、OKを待っている状態
・データを待ってる状態
どんどん何を待ってるか、変わってくると思うんです。
よろしくお願いします。



181 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 09:50:10 ]
linuxからWINDOWS2000に、20000バイトの文字列送信したら
WINDOWSの方で、2回に分けてrecv()が呼ばれているようでした。

■linux
send(soc,buf,strlen(buf)); //20000バイトの文字列を送信
WINDOWSのグローバルIPアドレスを指定して送信。
ブロッキングモード

■WINDOWS
while(1){
recv(soc,buf,sizeof());
}
ブロッキングモード
//2回に分けてrecvが呼ばれました。16000文字と4000文字

サイズが大きいときは、分けてrecv関数が呼ばれることを
想定してプログラミングしないとだめでしょうか。
16000バイトというのは、環境関係なく決まった数字ですか?

182 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 11:40:49 ]
FAQよむことをおすすめする。
TCPならどこで切られるか、どこでくっつくかは予想できない。
UDPで2回に分かれたというなら、バグじゃね?

183 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 23:11:47 ]
UDPの場合1回で送信し切れなかったら単純に捨てられる

184 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 23:35:54 ]
>>182
>>183
レスありがとうございます。
今回はTCPでした。UDPはそうでしたか。ふむふむ。

図書館で調べたら、パケット一個分だっり8000ぐらいのときもあったり
ばらばらなんですね。
ブロッキング、ノンブロッキング、ローカルホスト、リモートホスト
でも違うみたいです。

勉強になりました。
ありがとうございました。

185 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 23:46:37 ]
>>184
というか、TCPはストリームベースのプロトコルだから、そういうことは
一切仮定してはならない。
TCPは、実際にはいくつかのIPパケットとして送られるデータを
区切りの無いただのバイト列のように見せる。

TCPで「メッセージの区切り」のようなものが欲しければ、自分で(アプリ層で)
仕掛けを作りこまなければダメだ。

186 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 00:10:26 ]
>>185
大きなデータもらうときは、
std::string s;
s+=buf;
で、終わるまでこれを繰り返すようにして
解決できました。
勉強になりました。ありがとうございました。

187 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 00:55:21 ]
std::stringって\0含むデータでもまともに動いたっけ?

188 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 01:32:02 ]
内部では動く。ただしもちろん、operator+=(const char*)は引数の終端を見る。

189 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 05:37:59 ]
bufに\0が含まれてると破綻するわけですね

190 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 09:42:44 ]
ACEってライブラリ使ってる方居ますか?昔ここで薦められましたが



191 名前:デフォルトの名無しさん [2007/04/06(金) 14:02:00 ]
windows環境で一台の管理端末から複数の制御端末を制御する
プログラムを開発したいのですが
この場合、制御される側にサーバアプリを置くのが一般的だと思っています。

しかし、それによって制御される側にWindowsファイアフォールを
開ける必要があると思うのですが、それをしたくないとしたら
管理端末にサーバアプリを置いて、制御端末にクライアントアプリを
置けばいいと考えています。

具体的にどのように考えているかというと
@制御端末は管理端末にsendメッセージを送信したあとrecvメッセージがあるまでひたすら待ち続けます。
Aそして管理端末の操作によりrecvメッセージが返り、そのメッセージの指示に従い動作します。
の繰り返しを行うのです。

この考え方に非現実的でないとか不備がありましたら、
指摘してもらえますでしょうか?よろしくおねがいします。

192 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 15:21:25 ]
問題ないでしょう

193 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 16:29:31 ]
制御端末ってのは「制御される端末」って意味なのか?
変な言葉の使い方だな。

194 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 16:43:07 ]
制御端末というと普通はunixの制御端末(/dev/tty, controlling terminal)のことだがな。

195 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 09:59:29 ]
まああれだ
世間様の常識と自分の常識は必ず一致するとは限らないわけだな

196 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:48:07 ]
すみません、初心者です。[ADSLモデム]-[ルータ]-[PC]と繋いでいるんですが、
ルータのWAN側グローバルIPを取得したいのですが、直接ルータに聞く方法ってありますでしょうか。

197 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:25:39 ]
ADSLモデムのWAN側グローバルIPだろ?

・ADSLモデムのスレに行って、方法を聞く。
・tracedumpを使う。
checkip.dyndns.org/などを使う。

というかそれプログラミングの話題と言うより、
ネットワークそのものの話題だな。

198 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:14:15 ]
>>197
Windowsアプリのプログラムの中で取得したかったんです。
httpでルータの管理画面にアクセスして、取得すると、機種依存するんで、
何か決まった方法があるのか知りたかったんです。
直接ルータではなく、一度、外にアクセスするのが一般的なんでしょうか。

199 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:24:08 ]
まずUPnPを試す。
GetExternalIPAddressをサポートしてなかったら機種依存するか
外部に接続する方法しかない

200 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:43:37 ]
>>199
ありがどうこざいます。UPnPのサンプルが見付かりました。
ひとまずは、UPnP対応ルータみたいなので、これでいけそうです。



201 名前:デフォルトの名無しさん [2007/04/10(火) 18:32:35 ]
ネットワークアプリ開発の勉強をしている者でございます。

MFCのCAsyncSocketについて教えてください。
クライアントのOnSendハンドラがコールされるときって
接続直後、ネットワーク障害発生以外に
どのようなケースがあるのでしょうか?



202 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 03:18:27 ]
受信側がさばききれないくらいの勢いで送信しまくって
送信バッファがいっぱいになったとき
もちろん送信バッファのサイズを仮定するプログラムを書いてはならない
(つまりいつでも呼ばれうると考えるべき)

203 名前:デフォルトの名無しさん [2007/04/11(水) 09:26:49 ]
>>202
ありがとうございます。


204 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 01:00:07 ]
ネットワークプログラミングできる香具師って少ないの?
知り合いの人買いが人足りないって困ってた。

まあ派遣になんて人集まらなくて当たり前と心の中で思ってたが。

205 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 01:31:47 ]
どんなアプリの?

webアプリなら死ぬほど転がってると思うが

206 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 03:20:47 ]
>>205
ネットワークアプリだっつってんだろ
webアプリなんざネットワークプログラミングじゃねーよ

207 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 07:41:32 ]
ライブラリでACEとboost::asioとRakNet、OpenTNL、HawkNLどれがいい?

208 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 08:53:53 ]
用途は?

webアプリか?

209 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 20:40:30 ]
mmoかな、あと暗号認証も

210 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:23:15 ]
暗号系はCPUパワー食うし遅延も発生するから辞めておいた方が。
ネットワークを隔離して閉網で構成した方がパフォーマンスもセキュリティも高い。



211 名前:デフォルトの名無しさん [2007/04/13(金) 22:13:10 ]
今日から勉強をはじめました。
環境はWindowsXPでVisualStudio2005です。
手始めにwinsockの初期化と終了処理ということで、

#include <winsock2.h>

int main()
{
WSADATA wsaData;

WSAStartup(MAKEWORD(2,0), &wsaData);

WSACleanup();

return 0;
}

というプログラムを書いてみたのですが、
コンパイルする時に

error LNK2019: 未解決の外部シンボル_imp_WSACleanup@0 が関数_mainで参照されました。
error LNK2019: 未解決の外部シンボル_imp_WSAStartup@8 が関数_mainで参照されました。

というエラーが出て、いきなり躓いてしまいました。
これは、どうすればいいのでしょうか?

212 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:19:47 ]
>>211
ライブラリは?

213 名前:コッチェビ [2007/04/13(金) 22:21:52 ]
(´・ω・`)コッチェビ・・・ws2_32.lib・・・

214 名前:211 [2007/04/13(金) 22:30:11 ]
プロジェクトのプロパティのリンカ→入力→追加の依存ファイルのところでしょうか?
選択のところにws2_32.libがないのですが、これはネット上からダウンロードするのでしょうか?

215 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:31:14 ]
自分で調べろ

216 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:46:22 ]
#pragma comment(コッチェビ, "ws2_32.lib")

217 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:55:05 ]
ここって初心者スレだっけか

218 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 00:33:47 ]
>211
つーかエラーの原因くらい特定できるようになれよバーカwwwwwwwww

219 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 00:57:03 ]
>>211
ソリュューションの下のプロジェクトを右クリック->プロパティをクリックして構成プロパティを表示。
構成プロパティ->リンカ->入力->追加の依存ファイルのテキスト欄にws2_32.libを入力後->OK
あと↓の設定も必要だったかも
msdn2.microsoft.com/ja-jp/library/ms235626(VS.80).aspx

220 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 12:43:00 ]
>>210
暗号は認証にしか使わないので大丈夫かなパスの平分で流すよりは自前でいじるのもなんだし
ついでだからhttpsとか汎用性があるのを使おうかとおもって
まあ三期の暇人学生が作るmmoゲー(予定)なんで使いやすいのを・・・



221 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 13:33:30 ]
パスワードを平分で流したくないだけなら、
チャレンジ&レスポンスって方法もありますよ。
>>210は馬鹿だけど。

222 名前:デフォルトの名無しさん [2007/04/14(土) 21:35:08 ]
クラック版を不可能とは言えないまでも、
作成がかなり難しくすることは可能でしょうか?
また、そうするためにはどのような対策(パッカーも含めて)を行う必要があるでしょうか?
メモリ書き換え対策?の仕組みや、解読されづらいパッカーなど、あったら教えてください。

223 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:56:12 ]
なんだ?誤爆ですか?

一ついえるのは「パッカー自作しろ」

224 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 12:44:34 ]
>>223
いや、大作先生のことだと思う。

225 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 17:57:23 ]
>>221
チャレンジ&レスポンスを見てみましたが、サーバー側で独自のレスポンスを作り
比較するらしいのですがその最初にパスなどを受け取るときにはどうするかが載ってなかった・・・まいっか
電気技術者三種が8月にあるから暇じゃなくなった・・・・orz

226 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 19:55:45 ]
non-blockingモードを調べていて気になったんですが、
最近みたソースで select / poll でも EAGAINまたは、EWOULDBLOCK の
チェックしてたんですが、select/poll でもerrno にこれがセットされることって
あるんですかね??マニュアルにはなかったもので。。




227 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:44:54 ]
selectそれ自体がEAGAINで戻ってくることはないはず

228 名前:226 mailto:sage [2007/04/16(月) 21:05:35 ]
>>227
サンクス。やっぱり無駄なチェックなんですね。。。

ちなみに、non-blockingモードでも、selectやpollで待ち合わせてから、
send/recv すれば、EAGAINは返ってこないと思ってますが、
あってますよね?

selectから抜けて、sendするまでにバッファが詰まるとかあるのかな??


229 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:31:18 ]
全部やっとけば?

230 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:04:07 ]
>>227
kuruyo



231 名前:デフォルトの名無しさん [2007/04/16(月) 23:49:09 ]
プログラムに組み込むような形のhttpサーバを探しています。
できるだけ小さいもので、良いものがあれば教えてください。

232 名前:231 mailto:sage [2007/04/17(火) 00:05:14 ]
自分でfnordというのと、cherokeeというのを見つけました。

233 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 17:08:14 ]
>>228
それ俺も怖い。
pollで書き込み可能になってwriteしたらEAGAINとか
poll->読み込み可能->readでEAGAINとか。
似たようなことをここで聞いたらソース嫁ってずーっと前にいわれた。まだ読んでない。

だから一応read/writeでもEAGAINをチェックしてる。


234 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:18:12 ]
アトミックじゃないんだからEAGAINになる可能性はあるだろ。

235 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:31:40 ]
MS系のAsync〜はrecvで読み込んでる最中にさらに
データが到着したら、次回のイベントは発火するけど、
データ自体は今回のrecvで帰ってくることがある(ので
次回recvしても読めないこともある)、ってMSDNあたり
で見た気がする

236 名前:226 mailto:sage [2007/04/17(火) 23:35:23 ]
229のいう通りとりあえず全部やっておくのが安全ですね・・・。


237 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 04:16:07 ]
一般的にファイアウォールのソフトウェアは
どんなモジュールをトラップしているものなのでしょうか?
(Windows)

ファイアウォールのソフトを手動で削除したら、
CScript.exeから
Msxml2.XMLHTTPオブジェクトなどのオブジェクトを使用して
インターネットにアクセスする事ができなくなってしまいました。
WinHttp.WinHttpRequestなどもすべて同じです。エラーが起きます
WScript.exeは大丈夫です

削除後、まず最初に、WScript.exeからもCScriptからも
FileSystemObjectが使えなくなっていたので
レジストリを調べたらFSOのActiveXコンポーネントscrrun.dllのパスが
ファイアウォールのDLLのパスにすり返られていたので
これは直しました

でもMsxml2.XMLHTTPやMicrosoft.XMLHTTPなどはすべて
そういう事にはなっていません。元のパスのままのようです

このような現象はどこがトラップされて起きているものなのでしょうか?

削除の仕方がまずかった訳で、再インストールしたりすれば
元に戻せるのかもしれませんが、
一応ダメ元で手動復元にトライしたいのです。

238 名前:237 mailto:sage [2007/04/18(水) 04:18:40 ]
あ。scrrun.dllをフックしていたのは
正確にはファイアウォール部分ではないですね・・・
総合セキュリティソフトだったので・・・
スクリプトブロックの部分でした

239 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 05:56:14 ]
>>236
来るはずがないんだったらチェックしたって害はないからな

240 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 07:26:52 ]
APOP破られたの?



241 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:45:40 ]
【IT】電子メールの暗号化技術「APOP」破られる…電通大の研究グループが発見、当局に連絡[04/19]
news21.2ch.net/test/read.cgi/bizplus/1176927088/

Vulnerability Summary CVE-2007-1558
nvd.nist.gov/nvd.cfm?cvename=CVE-2007-1558

ちなみにマン・イン・ザ・ミドルアタックだから、
SSLでサーバ認証をすれば問題ない。
SSLだったらAPOPである必要もないわけで、APOP死亡。

242 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:45:15 ]
MD5 の脆弱性が表面化してきた ってことか。

243 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:47:10 ]
前からだろw

244 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 15:26:45 ]
あくまでハッシュ生成のためだけに使うべきだな。

245 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 15:35:16 ]
同一ハッシュ値の生成(自動ではなく 人手の補助有り)から pass が捕まったってことだし
MD5 をハッシュ関数にするのはまずいんでねーの?

246 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 15:50:35 ]
色んなデータを扱う限りは値はバラけてくれるんじゃないかなあ。
扱うデータに偏りがある場合は無理かもしれんけど。

247 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:07:20 ]
なんか良いハッシュ関数ある?

248 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:59:35 ]
>>247
SHA-2

249 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 22:21:45 ]
SHA-256

250 名前:デフォルトの名無しさん [2007/04/20(金) 22:42:12 ]
受信、送信ソケットバッファを20Mbyteとってるんだけど
デカ過ぎ?



251 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 22:49:32 ]
1TBくらいメモリがあるならそれくらい気にしなくていいんじゃね

252 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 23:56:36 ]
100セッションで2GBか。楽しそうだな。
セッション張りまくりで速攻落とせそう。

253 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 00:37:03 ]
このスレはハッカが盗り放題です><

254 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 08:34:43 ]
www.atmarkit.co.jp/fsecurity/rensai/crypt01/crypt02.html

その一方、大きな問題としてSHA-2がSHA-1の代替としてふさわしいハッシュ関数であるのかという議論がある。
というのも、昨今、MD5やSHA- 0に対する攻撃成功例が相次いでいること、
またWang氏らの攻撃によって予想よりも簡単にSHA-1への攻撃が成功したことなどから、
NISTや暗号研究者はMD5/SHA-1の設計方針自体に実は脆弱性があるのではないかと疑い始めている。

そのため、MD5/SHA-1の設計方針の延長線上で設計されているSHA-2についても
本当に安全なのか確信が持てなくなってきているのが現状である。
2005年10月に行われたハッシュ関数に関するワークショップ(NIST Cryptographic hash workshop)の席上でも、
NIST自身が今後10年間でSHA-256に対する攻撃方法が見つかる可能性はあると考えていると述べている。

さらに、AESの選定と同じように、新しいハッシュ関数選定のための公募を実施すべきとの意見も根強く残っており、
2006年8月には再度ワークショップが開催されることが決まった。
ここでの議論次第では数年後にハッシュ関数コンテストの実施もあり得る。
近年国際的にもハッシュ関数の設計に関する研究が活発化しており、
暗号学会でもしばらくの間、ハッシュ関数の提案や解読が続くものと考えられている。

255 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 09:37:09 ]
もお2006年8月は過ぎたわけだがどうだったの?

256 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 09:41:07 ]
自分で探したらこうだった

・2007年にThird Hash Function Workshop 2007を開催
・2008年〜2012年までのタイムスケジュールの提示
・2012年に新しい標準ハッシュ関数を決定する

257 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 10:34:14 ]
ずいぶん気の長い話だな
5年以内にSHA-256が破られたらジエンドというわけか

258 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 10:50:56 ]
いや、別に他でも作っていいわけだから。
これまでもあったように、バリアントを作ったり。

259 名前:デフォルトの名無しさん [2007/04/21(土) 13:37:48 ]
>>251
>>252
ソケットを一個しか開かないのであれば問題ないか?

260 名前:デフォルトの名無しさん [2007/04/21(土) 13:44:16 ]
書き忘れたが、setsockoptで20Mを要求するプロセスは3つだけで
他にデカいソケットバッファを要求するプロセスはない



261 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 13:45:06 ]
使用可能なメモリはどれくらいあるんだよ

262 名前:一日駅長 [2007/04/21(土) 13:58:46 ]
こんにちは一日駅長と申します。
いきなりですが、PHPで作りたいものがあるんですが、
WINDOWS XPを使ってるのでAPACHE(←スペル合ってる?)をダウンロードしよ
うと思ったのですが。インストール後APACHE MONITOR IS ALREADY STRATEDとエラーが、、
なんか上手くいかんのです。全てのプログラム→からクリックしてもなにも出来ない
し、ためしにXAMPPをダウンロードしたのが影響してるのかな?????
上のを削除しようとしてもXAMPPが既に起動してますと表示されます。起動してないつもりだけど(涙)
スレ違いならスマソ。初心者で用語とか全くチンプンカンプンなので分かり易く
説明キボン。

263 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 14:01:27 ]
スレ違い

264 名前:一日駅長 [2007/04/21(土) 14:02:36 ]
どこにいけば、、、、

265 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 14:13:04 ]
webプログラミング板ってのがあったと思う

266 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 14:24:38 ]
find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=apache&COUNT=50

267 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 15:44:07 ]
>こんにちは一日駅長と申します。

こんにちは。シュールな書き出しですね。

268 名前:デフォルトの名無しさん [2007/04/22(日) 09:27:00 ]
>>261
4GBっす

269 名前:デフォルトの名無しさん [2007/04/22(日) 09:55:10 ]
沖縄県の方へ(命に関わる注意事項です)

沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…

※一国二制度
 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
 さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。

今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。

270 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:16:28 ]
>>258
暗号の専門家が手がけてないオレオレハッシュのほうがよっぽど危険じゃね?



271 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 16:10:57 ]
オレオレハッシュを暗号の専門家が作ったらいいのでは。

272 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 18:19:56 ]
専門家達のチェックを通ったらオレオレじゃないわけだが

273 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 18:28:29 ]
オレたちが暗号の専門家になればいい

274 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:51:52 ]
たぶん専門家を雇った方が効率いい
つーかまだ破られたわけじゃないんだからSHA-256使ってればいいだろ

275 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:25:03 ]
>>274
夢が無いね

276 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 21:53:53 ]
専門家が作ったぐらいでは、信頼できないわけだが。

277 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 21:57:26 ]
専門家もピンキリ。
自称専門家なんてのも居るし。

278 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:24:45 ]
windowsどうしのTCPです。
2つときは、簡単だったのですが、A,B,Cと3つパソコンでやまびこ
みたいにエコーをしたいと思ってます。A→B→C→B→A
子スレッドがそれぞれ担当するとします。

--@Aの子スレッドのプログラム--
send(); //A→Bのメッセージを送信
recv(); //B→Aのメッセージを受信

--ABの子スレッドのプログラム--
recv(); //A→Bのメッセージを受信
B⇔Cのための子子スレッドを呼び出し?
send(); //B→Cのメッセージを送信

--BBのB⇔Cのための子子スレッド--
send(); //B→Cのメッセージを送信
recv(); //C→Bのメッセージを受信

こういう感じでしょうか?
疑問がありまして、Bの子スレッドのなかで、Bを呼び出して子子スレッドは、
たぶんダメですよね。実際に実装するときは、どのようになるでしょうか。
よろしくお願いします。

279 名前:278 mailto:sage [2007/04/23(月) 00:34:05 ]
訂正すみませんです。
よろしくお願いします。

--@Aの子スレッドのプログラム--
send(); //A→Bのメッセージを送信
//Cから戻ってくるまで、ちょっと待ちます
recv(); //B→Aのメッセージを受信

--ABの子スレッドのプログラム--
recv(); //A→Bのメッセージを受信
B⇔Cのための子子スレッドを呼び出し?
//Cからメッセージが来てsend()
send(); //B→Aのメッセージを送信

--BBのB⇔Cのための子子スレッド--
send(); //B→Cのメッセージを送信
recv(); //C→Bのメッセージを受信

280 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:19:45 ]
作成者、送信元、送信先
と言うような情報をパケットに持たせて、
プログラム側はその情報に従ってメッセージを送信し、
作成者まで戻ってきたら破棄する。

という感じ?よく分からんけど



281 名前:278 mailto:sage [2007/04/23(月) 01:59:09 ]
>>280
レスありがとうございます。そういう理論ですか。なるほどです。

ネットワークプログラミングとマルチスレッドが、
初心者なので、実際のプログラミングでどうしたら、
良いのかと思いまして。

Bのプログラミングは、もうちょっと細かく見ると
WSAStartup()->socket()->bind()->listen()->accept()->recv()->
B⇔Cのための子子スレッドを呼び出し?
->send()->closesocket()->WSACleanup()

■子スレッドで、_beginthread使っても良いなら、わかりやすくできるんですが、
だめなんですよね?

■WSAStartup()->socket()->bind()->listen()->accept()->recv()->
{B⇔Cの処理 WSAStartup()->socket()->connect()->send()->recv()->WSACleanup()}
->send()->closesocket()->WSACleanup()
スレッド使わないで、WSAStartup()2回呼んだら、どうなるんだろうとか、
一回目のWSACleanup()で、A⇔B,B⇔C、両方の接続切れちゃったりしますよね。
とか、いろいろ疑問で。実験して見ようと思うんですが、頭がごちゃごちゃして
難しいです。

■あとは、はじめからBのプログラミングで、
AがBに接続をして、アクセプトした瞬間に、その親スレッドで、
A⇔B,B⇔Cのやり取りするスレッドを、立ち上げてスレッド間のメッセージで
タイミングをはかる方法があるかもしれないですが、スレッド間のやりとりって、
やったときなくて、難しいです。

うまく説明できず、すみません。的外れなこと言ってるかもしれないです。
2番目と3番目の■について、ここに気をつけるなど、アドバイスいただけないでしょうか。
よろしくお願いします。

282 名前:278 mailto:sage [2007/04/23(月) 04:08:28 ]
>>281
2番目の■実験してみました。ちょっと違うんですが、
www.geekpage.jp/programming/winsock/http-client.php
こちらのページのプログラムを参考に、させていただき実験してみました。
int main2(int argc, char *argv[]);関数を作成しました。
内容は、
//WSADATA wsaData;
// if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) {
// printf("WSAStartup failed\n");
// return 1;
// }
// WSACleanup();
●WSAStartup()とWSACleanup()は、一回でいいと思い
にコメントを入れました。この理解合ってますでしょうか?

main()関数の中のsocketclose();のあとに
main2(argc,argv);を呼び出しました。

●すると、同じページが2回表示されました。
この要領で、281も実装すれば大丈夫でしょうか?

283 名前:278 mailto:sage [2007/04/23(月) 04:16:18 ]
あっ、でもクライアントプログラムでした。
■WSAStartup()->socket()->bind()->listen()->accept()->recv()->
{B⇔Cの処理 socket()->connect()->send()->recv()}
->send()->closesocket()->WSACleanup()
だと、サーバプログラムで、上記のように実験しないとだめですか。
んー、これで動きそうですが、状況作るの難しいです。
眠いので、もうだめです。><

284 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 16:09:22 ]
プロセス間通信もここでいいんでしょうか?

親プロセスと子プロセスで、1対1のプロセス間通信をしたいです。
状態やエラーも返したいので名前付きパイプにしたいと思います。

しかし、親子が複数作られる場合があり、
当然、パイプの名前をユニークな名前にしなければならないのですが、
Windowハンドルを使えばいいでしょうか?
こういう場合、普通はどんな風にプロセス間通信しますか?

285 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 17:31:14 ]
C言語にてCGIを作成しています。
作成したCGIプログラムをHTTPで確認しようとすると
「Script Execution Failed」というエラーが表示されてしまいます。

色々調べたところサーバ側ではRedhat7.1という環境でサーバを動作
させており、Linuxで作成したexeファイルしか動作できないようなのです。
(Linux使ってないのでこの辺り大分自信が無いのですが)

これはつまり、VisualC++6.0等のWindows上で動作するコンパイラで作成した
cgiファイルは使えないという事なのでしょうか?

286 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 18:01:26 ]
>>285
はい、使えません。

287 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 18:02:41 ]
>>284
無名パイプを継承可能で作成してさらにCreateProcessでハンドルを継承可能にする。

288 名前:285 mailto:sage [2007/04/23(月) 18:35:48 ]
>>286
SHOCKだ!LINUX使いの人じゃないとCGI作れないんですね。
返答ありがとうございました。

289 名前:284 mailto:sage [2007/04/23(月) 18:37:13 ]
継承 パイプ CreateProcessでググってみました
www.fides.dti.ne.jp/~tokai/vc/vcchips1.html
このページを参考に作ってみたいと思います。
子プロセス側が無いですが。

290 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 05:19:32 ]
>>288
ソースコードをLinuxマシンに転送してLinuxマシン上でコンパイルすれ
ばいい。





291 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 10:46:12 ]
同じインテルだろうからアセンブラで組めばおk。

292 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 11:32:40 ]
ファイルを転送するプログラムを作っているんですが、

sendに一度に渡すデータサイズはどれぐらいが適正なんでしょうか?
大きめに渡したほうが速く送れると、
どこかで読んだので大きめにしたほうがいいのかと
1MBまでなら渡しても正常に送ってくれるので
今のところ1MBにしています・・・でも、これはさすがに大きすぎるような気がして不安です。

293 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 11:35:11 ]
OSがサポートする実行ファイルの形式が異なるので
WindowsとLinuxの両者でネイティブ動作する実行ファイルを作るのは不可能。

一般にコンパイル環境と異なるターゲット環境のための実行ファイルを
生成したい場合には、クロスコンパイラというものを使う。

294 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 17:44:16 ]
wineつかえばいいのに

295 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 19:51:45 ]
4096byte以上はフラグメントされます。
リングバッファ処理を覚えましょう。

296 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 21:25:18 ]
>>291-295
アンカーぐらい付けてくれ

297 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 00:50:12 ]
EDITのウィンドウの文字の大きさを小さくしたいのですが、可能なのでしょうか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<78KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef