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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
主にソケットに関しての質疑応答スレです。

Programming 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辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port14
http://pc8.2ch.net/test/read.cgi/tech/1118469143/
2デフォルトの名無しさん:2005/09/30(金) 23:03:01
うんこ
3デフォルトの名無しさん:2005/10/01(土) 01:26:18
4デフォルトの名無しさん:2005/10/01(土) 01:28:32
5デフォルトの名無しさん:2005/10/01(土) 01:29:41
図書コーナー:
UNIXネットワークプログラミング〈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/
マスタリングTCP/IP RTP編
  http://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/
6デフォルトの名無しさん:2005/10/01(土) 01:30:35
URL抜粋:
★規格
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
7デフォルトの名無しさん:2005/10/01(土) 01:31:11
URL抜粋:
★プログラミング
まずは >>1 の FAQを読むこと。
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/
8デフォルトの名無しさん:2005/10/01(土) 01:32:10
9デフォルトの名無しさん:2005/10/01(土) 01:36:27
104-9:2005/10/01(土) 01:38:55
>>3
あ、被ってた。スマソ。
11デフォルトの名無しさん:2005/10/01(土) 01:39:57
パタリロ〜クックロビン音頭
リンク切れだよ?
12デフォルトの名無しさん:2005/10/01(土) 01:44:29
あ、そういえばその指摘前スレでもあったね。
次回からはテンプレから抜くべき?
13デフォルトの名無しさん:2005/10/01(土) 03:28:40
コアラ
14デフォルトの名無しさん:2005/10/01(土) 03:53:16
コアラ大将のTCP/IP入門のこと?
懐かしいなあ。俺も最初はあれ読んでプログラムしたよ。
ググると今でも見つかるんだね。

でも今みると <sys/file.h> とか bzero()/bcopy() とか
errno != 14 とか gets() とか、ちといろいろ古い。
accept() の第3引数を初期化してなくて後で気づくのも、
入門にはどうなのかなあ。
15デフォルトの名無しさん:2005/10/01(土) 03:59:24
(つづく)
16デフォルトの名無しさん:2005/10/01(土) 04:02:16
と、発表しようと思っていた矢先、
17デフォルトの名無しさん:2005/10/01(土) 09:48:41
>>14
> でも今みると <sys/file.h> とか bzero()/bcopy() とか
> errno != 14 とか gets() とか、ちといろいろ古い。

流石にerrnoもgets()も執筆当時から古いですから

http://www10.ocn.ne.jp/~camaieux/ondo.html
18デフォルトの名無しさん:2005/10/01(土) 23:17:12
errnoって古いのか?
今でもガンガン使ってるんだけど
ナニがどう古いのかナニが今のトレンドなのか
教えてくれよ
19デフォルトの名無しさん:2005/10/01(土) 23:25:43
errno != EFAULT
20デフォルトの名無しさん:2005/10/01(土) 23:26:14
getsだけはやめたほうが良いと思うな
21デフォルトの名無しさん:2005/10/02(日) 01:23:18
(σ・∀・)σ gets!!
22デフォルトの名無しさん:2005/10/02(日) 01:55:37
>>18
errno じゃなくて != 14 の 14 がまずいんだべさ
23デフォルトの名無しさん:2005/10/02(日) 02:42:09
>>22
なんだ、そっちか。安心したよ。
これでぐっすり眠れるぜ。
24デフォルトの名無しさん:2005/10/03(月) 08:07:31
それが彼の最期の言葉となった
25デフォルトの名無しさん:2005/10/03(月) 18:17:21
質問です。

TCP/IPではビッグエンディアンで送ることが定められているらしいのですが、
変換する処理時間が気になるので、リトルエンディアンで送受信しようと考えています。

これはアリでしょうか?

答えテンプレート
@勝手にしろ
A絶対駄目
26デフォルトの名無しさん:2005/10/03(月) 18:23:16
>>25
・変換する処理時間なんか通信時間に対して誤差程度
・ネットワークバイトオーダーに従っていちいち変換するコードで作っておくほうが
他のプラットフォームにそのプロトコルを実装したくなったときに話が速い。
・まあそれいったらバイナリでやるよりテキストにして転送するほうが安全ではある
2725:2005/10/03(月) 18:53:18
>>26
ありがとうございます。

参考にさせていただきます。
28デフォルトの名無しさん:2005/10/03(月) 18:53:53
.Net Framework の System.Runtime.Remoting に関する質問はここでいいですか?
29デフォルトの名無しさん:2005/10/03(月) 19:01:59
よくないです
30デフォルトの名無しさん:2005/10/03(月) 19:42:17
えー
31デフォルトの名無しさん:2005/10/04(火) 00:08:20
WSAAccept()で返ってきたソケットにWSA_FLAG_OVERLAPPED属性を
持たせたいんだけど、どうやるの?
32デフォルトの名無しさん:2005/10/04(火) 00:52:10
属性はlistenするソケットのコピーじゃなかったか
つーかOVERLAPPEDはデフォだったような
33デフォルトの名無しさん:2005/10/04(火) 09:48:15
>>25
> TCP/IPではビッグエンディアンで送ることが定められているらしいのですが、

そんなことはない。
IETFでは、決めうちならばbigにすることが多いというだけ。決まってはいない。
TCPやIPのヘッダの整数部がそうだからね。

プロトコルで、最初に、相手のendianを聞いて、
変換が必要ならどちらかが変換する方法でもいい。

DCE RPCはこの方法(送り側が変換)。Sun RPCはbig決め打ち。
34デフォルトの名無しさん:2005/10/04(火) 21:35:28
LAN内のリモートコンピュータをシャットダウン出来るソフトとかありますよね。
あれって、どういう関数を使ってるのでしょうか?
35デフォルトの名無しさん:2005/10/04(火) 21:44:02
システムごとに違う。
36デフォルトの名無しさん:2005/10/05(水) 01:39:01
ビッグエンディアンはpentium
37デフォルトの名無しさん:2005/10/05(水) 01:42:15
リトルエンディアンはpentium
38デフォルトの名無しさん:2005/10/05(水) 01:42:49
私はpentium
39デフォルトの名無しさん:2005/10/05(水) 08:28:20
エンディアンは嘘つかない
40デフォルトの名無しさん:2005/10/06(木) 05:20:04
DNSサーバーのBINDって何言語でかかれてるんですか?
41デフォルトの名無しさん:2005/10/06(木) 05:23:36
なんでもいいじゃんか
42デフォルトの名無しさん:2005/10/06(木) 05:25:34
Cじゃないの
43デフォルトの名無しさん:2005/10/06(木) 05:28:32
自分でソース見ろよ
Googleに BINDのソース って入れてやるだけだよ?
44デフォルトの名無しさん:2005/10/06(木) 19:03:37
yahooのフリーメールのPOP3サーバーについて、
APOPには対応していないようですが、
パスワードのセキュリティはどうやって確保してるかわかりませんか?
45デフォルトの名無しさん:2005/10/06(木) 19:09:54
そもそもセキュリティを確保っていうのはどういうことを期待してるの?
46デフォルトの名無しさん:2005/10/06(木) 19:15:35
>pass mypassword
とかのプレーンテキストではなくて
MD5等で隠したいだけなんですが。
47デフォルトの名無しさん:2005/10/06(木) 21:59:56
WinsockでTCPの特定ポート特定IPのデータをキャプチャーしたいんだけど
RAWで取ってIPとポート番号解析せんと駄目?
48デフォルトの名無しさん:2005/10/06(木) 23:18:13
>44
チャレンジドレスポンス
で具具って見たら?
49デフォルトの名無しさん:2005/10/07(金) 13:28:24
>>47
connectとrecv、sendをフックすれば?
そういうことではないのかえ?
50デフォルトの名無しさん:2005/10/07(金) 15:50:42
>>48
チャレンジドwww
チャレンジ・アンド・レスポンスだろ
51デフォルトの名無しさん:2005/10/07(金) 17:44:50
というか、プログラミング関係ないじゃん。
Yahoo!メールの提供しているサービスの内容なんて。
52デフォルトの名無しさん:2005/10/07(金) 18:44:23
メールクライアントを作ってる・・・
53デフォルトの名無しさん:2005/10/07(金) 19:38:56
+   +
  ∧_∧  +
 (0゚・∀・) 
 (0゚∪ ∪ +        
 と__)__) +
54デフォルトの名無しさん:2005/10/07(金) 22:49:27
>>44
APOPに対応しないことで、セキュリティを確保している。
55デフォルトの名無しさん:2005/10/07(金) 22:58:20
つまり、httpsつかえってことか(w
56デフォルトの名無しさん:2005/10/07(金) 23:02:24
サーバー管理者がパスワードを覗き見する危険性と、
通信経路で覗き見される危険性。

どちらがより危険かを判断した結果なわけだ。
57デフォルトの名無しさん:2005/10/07(金) 23:13:37
kqueueとepollどっちがオススメですか?
58デフォルトの名無しさん:2005/10/08(土) 06:02:19
/dev/poll
59デフォルトの名無しさん:2005/10/08(土) 11:46:14
>56
なるほどなぁ。Yahooなんかだと納得出来過ぎる orz
60デフォルトの名無しさん:2005/10/08(土) 13:32:26
>>57 OSが既に決まってるなら、OS選んだ時点でどちらが
使えるか確定するので、悩む必要なし。
API的にはkqueueの方が強力。
61デフォルトの名無しさん:2005/10/08(土) 18:06:29
WinSockでhostentのメンバやgethostbyaddrのような関数引数で
FAR*というキーワードがついていますよね。
これはどんなことに配慮してそうなっているのですか?
FARとすることの効果ってあるのですか?
62デフォルトの名無しさん:2005/10/08(土) 19:41:55
63デフォルトの名無しさん:2005/10/08(土) 21:17:26
64デフォルトの名無しさん:2005/10/08(土) 22:40:59
delphiで簡易telnetサーバーを作りたい
クライアントソフトなら、pop、ftp等はつくったことがあるけど、サーバーとなると、まったくわからない
だれかサーバーの基礎からわかるほーめぱーげを教えてちょんまげ
65デフォルトの名無しさん:2005/10/08(土) 22:48:45
>>63
> TCP/IPではビッグエンディアンで送ることが定められている。

しょうがねえなあ、糞e-wordsは。

>>64
Delphiスレいった方がいいよ。ライブラリがDelphi特有だから。
66デフォルトの名無しさん:2005/10/09(日) 00:09:12
>>62
さんくる
67デフォルトの名無しさん:2005/10/09(日) 03:59:33
e-wordsが言ってることは>>33と全く同じで、
TCPやIPのヘッダ部分のことでしょ。
まあ誤解させる書き方してるe-wordsも悪いが、
この後におよんで、悪あがきしている>>63
もっとみっともない。
68デフォルトの名無しさん:2005/10/09(日) 04:09:49
大体>>33にあるDCE RPCが、
on TCP/IPでbig/littleどちらも許容だしね。
69デフォルトの名無しさん:2005/10/09(日) 11:27:28
>>60
了解。OS決めてないのでBSDに決めました。どもす。
70デフォルトの名無しさん:2005/10/09(日) 14:07:32
BSDって・・・どのBSDだよ
71デフォルトの名無しさん:2005/10/09(日) 14:09:15
FreeBSDだろ?
72デフォルトの名無しさん:2005/10/09(日) 14:48:40
MonaBSDです。
73デフォルトの名無しさん:2005/10/09(日) 20:47:35
FreeBSE
74デフォルトの名無しさん:2005/10/10(月) 05:04:21
75デフォルトの名無しさん:2005/10/10(月) 05:32:52
そうですか。
76デフォルトの名無しさん:2005/10/10(月) 05:43:09
Winsock2+IOCompletionPortを使った大規模サーバの
サンプルソースどこかに落ちてない?
77デフォルトの名無しさん:2005/10/10(月) 05:44:57
>>77
俺のマシンに自分で書いたサンプルが落ちてる。
残念ながらライセンスしてるソースなもんで、ばら撒けないけど。
78デフォルトの名無しさん:2005/10/10(月) 05:45:27
>>77>>76宛てorz
7976:2005/10/10(月) 05:51:04
むう、それは残念
80デフォルトの名無しさん:2005/10/10(月) 06:31:54
>>76
確かそのものズバリの内容が、随分前のMSDNマガジンに出てたような・・・。
.netの出荷前の特集かなんかしてる号だったと思う。まだ手に入るんでない?
81デフォルトの名無しさん:2005/10/10(月) 06:45:43
http://www.codeproject.com/internet/winsockiocp.asp とか
http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/default.aspx とか
あとはPSDKのサンプルとか
で、仕組み的には大体わかるでしょ。

あとはそれをコードに落とすのと
バグやスケーラビリティをチェックするのが大変かなとは思うけど。
82デフォルトの名無しさん:2005/10/10(月) 11:09:21
>>76はどのくらいシリアスのなのかしらんが、
俺はスケーラビリティのチェックが一番大変だった。
プロファイルすると変ってくるからね。
サーバのコードよりも、テスト用クライアントのコードの方が多かったな。
8376:2005/10/10(月) 11:55:54
>>80-82
情報サンクス
とりあえず>81のリンク先を参考にしながら勉強してみます。
1000クライアントぐらいは問題なく捌けるようにしたいなぁ

>>81,82
やっぱりその辺のチェックは大変なのね・・
84デフォルトの名無しさん:2005/10/10(月) 15:42:13

最近のブロードバンドルータは255.255.255.255宛てのパケットは通さないんですか?
LAN側でね。
ブロードバンドルータ使ってるエロイ人、教えてください。
85デフォルトの名無しさん:2005/10/10(月) 15:47:41
状況が良くワカランが、WAN側のportは除いて、
LAN側のport同士で、255.255.255.255を通すかどうかということ?
それはルータとして? それともHUB機能の話?

ルータとしては大昔から通さないのが基本だが。
8684:2005/10/10(月) 17:00:12
>>74
のHPを見てブロードキャストキャストが届かないのかな・・・?っ手思っただけです
87デフォルトの名無しさん:2005/10/10(月) 23:57:29
>>86
当然だけど他にも以下のことをチェックしておくべきだね。

・NIC が Wake On LAN の機能を持っていること
・ドライバで Wake On LAN の機能を有効に設定していること
88デフォルトの名無しさん:2005/10/11(火) 00:24:16
ドライバ?
89デフォルトの名無しさん:2005/10/11(火) 15:31:58
質問させてください。

クライアントがconnect関数でサーバーに接続した場合、
たまにWSAETIMEDOUT(10060)が発生します。

WSAETIMEDOUT(10060)が発生した場合は、何度か再度接続するようにしたのですが、
一度現象が発生してしまうと、再度connectしても繋がりません。

しばらく時間をおくと繋がったりするのですが…
何か考えられる原因や回避策があれば教えて頂けないでしょうか?

開発環境はWindows2000、VC++6SP4です。
90デフォルトの名無しさん:2005/10/11(火) 16:55:53
>89
サーバ側でacceptした後に、forkなり、別スレッド作るなり
してないとかないでしょうか?
サーバ/クライアント側共に、以上終了時にsocketをshutdownしてないとか。
91デフォルトの名無しさん:2005/10/11(火) 21:49:18
>>84
普通は通さない。もし通すとネットワークが輻輳して素敵な事になる。
92デフォルトの名無しさん:2005/10/15(土) 21:01:37
C/C++の宿題を片づけます 51代目 からネットワーク関係のスレがいいのでは、とり割れてこのスレにきました。
どなたか、以下のプログラムを作っていただけませんでしょうか?

ホスト名を入力し、ファイルリストのからホスト名を元にIPアドレス、
GW、サブネット、DNSを設定させるプログラムを作るのにどうしたらよろしいでしょうか?
また、ホスト名が正しくない場合、エラーで通告して
IPアドレスなどが、正しく設定されたら、
設定を反映させるために再起動を実行させるプログラムを実行さえたいのですが、
プログラムがわかりません。どななた作っていただけませんでしょうか。
93デフォルトの名無しさん:2005/10/15(土) 21:12:57
宿題スレに帰れ。
94デフォルトの名無しさん:2005/10/15(土) 21:52:30
> ホスト名を入力し、ファイルリストのからホスト名を元にIPアドレス
ここ以外ネットワーク関係ないし、ここは作るスレじゃあない
つまりgethostbyname関数使え以外言うことは無い
95デフォルトの名無しさん:2005/10/16(日) 00:52:31
WSAWaitForMultipleEvents()でPostThreadMessage()の
メッセージのイベントって拾えるのでしょうか。

要はソケットとメッセージのイベント両方を待ち受けしたいのですが
他にいい方法があれば誰か詳しい方ご教示願います。

他にWaitForMultipleObjects()などもありますが今ひとつ使い方が
よく分かりません。よろしくお願いします。

96デフォルトの名無しさん:2005/10/16(日) 02:31:56
>>95
MsgWaitForMultipleObjects()

WSAWaitForMultipleEvents()とWaitForMultipleObjects()というのは、基本的には同じ。
ごっちゃにするのは好ましくないけれど。
もちろん、WSACreateEvent()の代わりに、CreateEvent()でも、ちゃんとソケットに使える。
9796:2005/10/16(日) 02:33:58
マルチか……。
98デフォルトの名無しさん:2005/10/16(日) 05:52:13
なあ、PHPとPerlどっちを勉強しておいた方がええ?
どっちもって言うなら先に勉強した方がええのはどっち?
99デフォルトの名無しさん:2005/10/16(日) 05:54:05
>>98
perl

PHPはまだまだ仕様がどんどん変わるから
どっちを先に勉強したらいい? なんて質問を
するような生ぬるいやつは今後も仕様が堅い方を
やっとけばいい。

習得の難しさとか、そんなのは関係ない。
100デフォルトの名無しさん:2005/10/16(日) 06:32:41
>>98
どっちもやるならPHPを先にしる。
どっちかしか選ばないならperlを薦める。
理由についてはスレ違いなので省略する。

>>99
>今後も仕様が堅い
そうとも限らんぜ。
理由についてはスレ違いなので省略する。
101デフォルトの名無しさん:2005/10/16(日) 06:53:18
>>100
つまり、あなたは理由が説明できないんですね。
102デフォルトの名無しさん:2005/10/16(日) 09:22:35
ここではな。
103デフォルトの名無しさん:2005/10/16(日) 10:10:33
>>102
幼稚な言い訳ですね。
104デフォルトの名無しさん:2005/10/16(日) 10:46:52
ここではな。
105デフォルトの名無しさん:2005/10/16(日) 12:54:10
板違いじゃド阿呆って言うのはなし?
#ド阿呆のほかに糞ボケもあるよ
106デフォルトの名無しさん:2005/10/16(日) 13:04:58
つまり、根拠は無いんですね。
107デフォルトの名無しさん:2005/10/16(日) 13:09:48
つまり、根拠は無いんですよ。




終了
108デフォルトの名無しさん:2005/10/16(日) 14:34:53
>>101-107
必 死 だ な(w
109デフォルトの名無しさん:2005/10/16(日) 14:53:29
で、理由は?
110デフォルトの名無しさん:2005/10/16(日) 14:57:08
ここでは言えません。
111デフォルトの名無しさん:2005/10/16(日) 15:02:53
ネタはもういいから理由書けよ
112デフォルトの名無しさん:2005/10/16(日) 15:47:23
は?説明しなきゃわからないほどの低脳揃いですか、ここは
113デフォルトの名無しさん:2005/10/16(日) 15:57:53
勝利宣言するしか能がない低脳だったようだ。
114100:2005/10/16(日) 18:04:02
お前ら俺のことで争わないでください!
ここは良スレだから荒れるのを見るのは忍びない。

でも、マジでスレ違いだから理由は割愛するけどな。
115デフォルトの名無しさん:2005/10/16(日) 18:07:26
>>114
誰だよお前
116デフォルトの名無しさん:2005/10/16(日) 22:27:25
>> 96
ありがとうございます。
MsgWaitForMultipleObjects()で出来ました。
117デフォルトの名無しさん:2005/10/16(日) 23:01:45
perlもPHPもソケット作れるから
かろうじてスレ違いではない
なんて言ってみる
118デフォルトの名無しさん:2005/10/16(日) 23:30:49
>>117
専用板があるわけですが、といってみる
119デフォルトの名無しさん:2005/10/17(月) 00:03:14
>>118
それは申し訳ない
といってみる
120デフォルトの名無しさん:2005/10/17(月) 00:41:29
気持ち悪い奴らだな。
12198:2005/10/17(月) 06:07:52
>>99-115
お前ら俺のことで争わないでください!
回答してくれた方はありがとうございました。
122デフォルトの名無しさん:2005/10/17(月) 21:06:54
証券会社が提供してるQUICKのリアルタイムの株価データを
秒ごとに保存したいんですけど、
どういう感じで取ればいいのでしょうか?
Java、C++などのネットワークプログラミングの
書籍を読みちらしても全然検討がつきません。
指針を教えてもらえるとうれしいです。
ネットワーク的に取得しなければいけないのか?
などもおねがいします。
123デフォルトの名無しさん:2005/10/17(月) 21:16:03
>>122
提供している証券会社に聞け
124デフォルトの名無しさん:2005/10/17(月) 22:13:14
通信プロトコル、データ形式の仕様を作れればおいらが造ってもいいよ。
125デフォルトの名無しさん:2005/10/17(月) 23:11:24
金払わんと営業には使わせて貰えないだろ。
126デフォルトの名無しさん:2005/10/18(火) 01:12:30
>>124
一応例として下のページは秒速データとってる人です。
ttp://www.eonet.ne.jp/~soybean-fiber/chart.htm

通信プロトコル→SSL?
データ形式→cgi、JavaScript?
ネットワークはあまり知りません。

1000円でどうですか?
よろしくおねがいします。

証券会社はMONEXですが、どこの証券会社も
リアルタイムデータはQUICKっという会社のものを
使っています。

アドバイスだけでも結果的に自分がつくれたら
報酬はらいます。

127デフォルトの名無しさん:2005/10/18(火) 01:21:31
1000円て
小学生のお小遣いですか
128デフォルトの名無しさん:2005/10/18(火) 01:23:09
1000円とは、なかなかゴージャスですね。
129デフォルトの名無しさん:2005/10/18(火) 01:29:55
40万なら
130デフォルトの名無しさん:2005/10/18(火) 01:39:36
>>126
Javaアプレットで同サイトの*.csvを取得してグラフ化しているだけのページです。
*.csvの作成方法は全く分かりません。
131126:2005/10/18(火) 02:13:14
どうやってデータが流れてきてるのかが
分からないんですよ。
それが分かれば少しは進展すると思うのですが・・

ちなみに、自分jは大学1年でプログラム暦は浅いです。
株価が変化したとき、たぶん全体でなくその部分だけ
更新されるとおもうので、そこらへんも全然分からないん
ですよね。

132126:2005/10/18(火) 02:17:00
3000円までならいいです
133デフォルトの名無しさん:2005/10/18(火) 02:18:33
>>131
アホすぎて無理。諦めろ。>>130の言っていること何も分かってないし。
134126:2005/10/18(火) 02:22:40
>>133
>>130さんはつまり、秒速データがほしいってことですか?
135デフォルトの名無しさん:2005/10/18(火) 02:27:30
ほんとに誰か作ってくれません? 5000円までならマジで出します。
金ないんですよ。服とか買いすぎちゃったし。
136126:2005/10/18(火) 02:35:18
一応秒速データのcsvファイルを作成できることが
目標です。
各証券会社が提供しているリアルタイムのデータは
自分でブラウザの更新ボタンを押さないと更新されません。
ですからそのページに一秒に一回とかスクリプトでアクセスすると
証券会社の方から注意がくると思います。
それと違ってQUICKのページでは自動で更新されますから
全然大丈夫なわけです。ですが、その自動で更新されるデータを
どうやってとるかが問題なわけです。
137デフォルトの名無しさん:2005/10/18(火) 02:50:19
だから40万だせば完璧にやってやるって
138デフォルトの名無しさん:2005/10/18(火) 03:15:13
そうね。40万なら妥当かな。
139デフォルトの名無しさん:2005/10/18(火) 07:22:41
お前に組めたとして、5000円もらったら見知らぬ奴にも組んでやるのか?
人をバカにするのもたいがいにしとけ。
そもそもデイトレで貴様が儲けるために作りたいんだろうに
140デフォルトの名無しさん:2005/10/18(火) 10:36:03
貧乏人にデイトレは無理。
きっとパパにでも「作ってやるよ」って大見得切っちゃったんだろうよ。
今ならまだ間に合うぞ。土下座して謝って来い。
141デフォルトの名無しさん:2005/10/18(火) 11:52:50
csvの作り方て、、、
もしかして、聞いてる事って、
「カンマで区切る」が答え程度の事なのか?
142デフォルトの名無しさん:2005/10/18(火) 12:05:07
5000円かぁ。学生の金銭感覚が懐かすぃ。
それなりのネットエンジニアに頼むんだったら、1日4〜5万出さないと無理だよ。最低でも3万。
俺だったら2万でや(ry
143デフォルトの名無しさん:2005/10/18(火) 12:39:52
>>135>>126でないですよw
144デフォルトの名無しさん:2005/10/18(火) 12:41:02
ヒントだけでも教えてもらえませんか?
145デフォルトの名無しさん:2005/10/18(火) 12:52:22
ヒントか。
じゃぁ、5000円で。
146デフォルトの名無しさん:2005/10/18(火) 12:59:33
ワロス
147デフォルトの名無しさん:2005/10/18(火) 13:01:20
教えてやるから二度と来るな。約束するか?
148デフォルトの名無しさん:2005/10/18(火) 13:11:09
約束か。
じゃぁ、5000円で。
149デフォルトの名無しさん:2005/10/18(火) 13:18:22
>>126
その自動で更新されてるQUICKのページを教えてくれ。
150デフォルトの名無しさん:2005/10/18(火) 13:20:07
QUICKか。
じゃぁ、5000円で。
151デフォルトの名無しさん:2005/10/18(火) 13:25:47
5000円か。
じゃぁ、5000円で。
152デフォルトの名無しさん:2005/10/18(火) 16:20:33
任意のIPアドレスからのTCPコネクションを外部プログラムから
切断する方法はありますでしょうか?
153デフォルトの名無しさん:2005/10/18(火) 16:24:26
ファイアウォールでフィルタすれ。
154デフォルトの名無しさん:2005/10/18(火) 16:27:05
>>153
プログラムから切断する方法はやはりありませんでしょうか?
155デフォルトの名無しさん:2005/10/18(火) 16:46:23
>>154
パケットダンプして該当セッションのTCPシーケンスを覗き、
TCPシーケンスを合わせて相手にTCP RSTを送る
156デフォルトの名無しさん:2005/10/18(火) 16:56:32
>>155
それやってみます。
157デフォルトの名無しさん:2005/10/18(火) 17:07:34
がんばるなあ
158デフォルトの名無しさん:2005/10/18(火) 17:14:25
ICMP port unreachableでもいいんじゃないか?
159デフォルトの名無しさん:2005/10/18(火) 18:21:12
>>149
ありがとうございます。
ログインしないと入れないので
下のページにアップしました。
http://khcttm.hp.infoseek.co.jp/source.html
http://khcttm.hp.infoseek.co.jp/quick.jpg
160149:2005/10/18(火) 19:06:32
>>126
>>159
>ですからそのページに一秒に一回とかスクリプトでアクセスすると
>証券会社の方から注意がくると思います。
>それと違ってQUICKのページでは自動で更新されますから
>全然大丈夫なわけです。

何故、君は「QUICKのページでは自動で更新されますから全然大丈夫」と思い込んだのかな?
良く分からないんだけど、、、
> 一秒に一回とかスクリプトでアクセスすると証券会社の方から注意がくる
この法則からすると、QUICKからも注意が来ると思うよ。
1分毎とかなら、更新チェックするツール知ってるんだけどなぁ。
161126:2005/10/18(火) 19:31:25
>>160
こちらがわが更新するのではなく
サーバー側の方が意図的にJavaScriptか
なんかでロードさせているからです。
162149:2005/10/18(火) 19:42:23
>>126
俺もあまり詳しく無いから、突っ込まれそうで怖いw

サーバー側はデータベースを自動で更新する作りになってるだろうね。
でもクライアント側では、理由はどうあれデータを引っ張ってこなきゃいけない。
つまり毎秒引っ張ってくる必要がある。
毎秒君がF5押すのと変わらない気がするよ(´・ω・`)
163126:2005/10/18(火) 20:01:30
ajaxみたいので非同期通信してるような
感じがしてきた・・

IEのソースでは見れないところもアップしときます
http://khcttm.hp.infoseek.co.jp/source2.html

それによると、更新されるデータはINPUTタグの中に
含まれてて、value=10320(インボイスの現在値です)みたいに表示されてます。

<INPUT
style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0px; BORDER-LEFT: 0px; WIDTH: 100%; CURSOR: default; BORDER-BOTTOM: 0px; HEIGHT: 14px; TEXT-ALIGN: right"
readOnly value=10320 name=P1_DPP>
164126:2005/10/18(火) 20:04:29
ajaxっていうのはこういうやつです
http://jsgt.org/about/cu/CU20050815A/1/sample2.htm
165149:2005/10/18(火) 20:30:04
>>126
「サーバー管理者の事なんてどうでも良い。俺はあくまで毎秒取得したいんだ。」
って事でしょうか?
それとも、、、

あっ、わかった。
小泉が靖国参拝したから、対中国用兵器として田代砲に続(ry
166デフォルトの名無しさん:2005/10/18(火) 20:38:17
Ajaxは単にHTTP通信をしているだけなので、サーバサイド側にとっては
違いは無いよ。
XMLHTTPRequestってのが、ノンブロッキングライブラリとして実装されている
というだけの話。
167デフォルトの名無しさん:2005/10/18(火) 20:56:36
つーか、>>125に書いたが、金払えよ。
高い頻度で情報を更新したければ。

正直ネットワークプログラミング関係ないから辞めないか? > ALL
一カ所だけfreeのところを挙げておくよ。

http://www.scottrader.com/
168126:2005/10/18(火) 21:01:28
>>165
サーバー管理者に迷惑をかける、高頻度の更新
は避けるつもりです
たしかに中国はうざい



169デフォルトの名無しさん:2005/10/18(火) 21:02:37
>>168
お前もうざいんだよ
170デフォルトの名無しさん:2005/10/18(火) 21:10:29
マーケットボードプロはActiveXをつかってます、ってかいてあるけどなー。
171デフォルトの名無しさん:2005/10/18(火) 21:12:43
>>168
とにかく内容がスレとは大分ずれてきたので、他所でやってくれ。

株関連はこっち。

【自動】株式トレーディングシステム Part4【売買】
http://pc8.2ch.net/test/read.cgi/tech/1110223706/

Ajax関連ならこっち。

Ajaxでも語りませんか
http://pc8.2ch.net/test/read.cgi/php/1110287963/
Ajax 2.0
http://pc8.2ch.net/test/read.cgi/tech/1129442908/
172デフォルトの名無しさん:2005/10/18(火) 21:28:18
JavaScriptでリロードしようがF5でリロードしようが一緒なんだよ、と
173デフォルトの名無しさん:2005/10/18(火) 21:47:56
このスレってなかなか面白いですね。
はっはっは
174126:2005/10/18(火) 22:37:08
ありがとうございました!
他スレでまた聞いてみます
175デフォルトの名無しさん:2005/10/18(火) 22:57:51
証券会社のデータは取引所のリアルタイムデータだから
たとえば、マーケットスピードとか Hyper E*Trade なら
パケット解析からはじめないとどうしようもないだろうな。
176デフォルトの名無しさん:2005/10/18(火) 23:13:02
OpenSourceのツールのソース読めばいい。公開しているところもあるしね。
いずれにせよ、秒単位ともなるとアカウント持たないとサーバを利用できない。
177126:2005/10/18(火) 23:19:41
>>176
例えばどこですか?
178デフォルトの名無しさん:2005/10/18(火) 23:43:28
>176はすまんが>126を連れて>171のスレにいってもらえんだろうか
質問に向こうで答えてやってほしい。
179126:2005/10/18(火) 23:47:00
迷惑かけました。もうきません
Live2chから削除しまう
180デフォルトの名無しさん:2005/10/19(水) 00:27:37
何このウザさ
181デフォルトの名無しさん:2005/10/19(水) 00:51:38
自分で何も調べようとしない時点で終わってるな、クズ。
182デフォルトの名無しさん:2005/10/19(水) 01:12:52
俺は対価1000円っていう常任離れした感覚に痺れた。
183デフォルトの名無しさん:2005/10/19(水) 02:02:38
俺、今の職場からは明らかに労働基準からぶっぱなれた酷使のされようなのだが
未だに先月の給料貰ってないぞ・・・・

ぶっちゃけ千円でも欲しいぜ・・・・・・
つーか、会社潰れるんじゃないかなあqswでfrtgtyhじゅjくい
184デフォルトの名無しさん:2005/10/19(水) 02:34:06
イ`
185デフォルトの名無しさん:2005/10/19(水) 07:20:18
>>183
給料を運用してもらってから受け取るんじゃないの?
186デフォルトの名無しさん:2005/10/19(水) 09:45:51
元本は保証しませんとか書いてあったら嫌すぎる。
187デフォルトの名無しさん:2005/10/19(水) 17:58:23
>>183
どこぞに訴えて給料だしてもらえよ
こういっちゃ悪いが、反日キムチの国みたいな職場だな
188デフォルトの名無しさん:2005/10/19(水) 18:41:39
て言うか、仕事忙しいんなら 2ch なんぞしてないで、寝ろよ。
体休めないと、ほんとに壊れるぞ。
189デフォルトの名無しさん:2005/10/19(水) 18:49:33
もう壊れてる
190デフォルトの名無しさん:2005/10/19(水) 18:57:03
ちゃんとした返事ができるうちはまだ大丈夫だ‥‥が、気をつけろよ
191デフォルトの名無しさん:2005/10/21(金) 02:55:35
MFCのCSocketがコンソールアプリで使えないのって常識?
派生クラスでOnAcceptが来ない…
サンプルは画面あるやつばかり…

# Winsock Programmer's FAQでは使うなと言ってるし
192デフォルトの名無しさん:2005/10/21(金) 03:16:07
自分でメッセージループ回せば動くんでないの?
知らんけど。
193デフォルトの名無しさん:2005/10/21(金) 03:53:21
MFCのCScoket自体コケてるから使わん方がええよ
194デフォルトの名無しさん:2005/10/21(金) 09:21:50
>>191
コンソールアプリに限らず、CSocketは使わないのが常識。
195デフォルトの名無しさん:2005/10/21(金) 09:52:40
CSocketは互換性のために残っているだけでしょ。
新たに書き起こすのは考えられない。
196デフォルトの名無しさん:2005/10/21(金) 22:01:52
インターネットにダイアルアップルータでつながっているPCが複数台あるとしますよね?
そのときにある一台からWebサーバにHTTPリクエストを投げるとします。
これがWebサーバに飛んでいくのは分るんですがなぜ応答がダイアルアップルータまで
戻ってこれても、そこから、HTTPリクエストしたPCに届くのですか?
197デフォルトの名無しさん:2005/10/21(金) 22:10:20
ルーター上に、一定時間経路表が残るからです。
198デフォルトの名無しさん:2005/10/21(金) 22:54:21
>>197さんありがとうございます。
そうするとUDPでもずっと流し続けるなら大丈夫なのですか?
UDPでもコネクション型というのがあると思うのですがこれも同様に大丈夫なのでしょうか?
いったんクライアントからサーバに接続してそこからガンガンマルチメディアを流すようなことを想定してます。
199デフォルトの名無しさん:2005/10/21(金) 22:59:54
プログラムでルータのルーチングテーブルを強制的に
リセットすることってできないの?
200デフォルトの名無しさん:2005/10/21(金) 23:02:11
>>198
切れる/届かないかもしれない事を想定の範囲内とすれば問題無い
>>199
どこのルータの話なのやら
201デフォルトの名無しさん:2005/10/21(金) 23:12:15
> UDPでもコネクション型というのがあると思うのですが

何でそんなことを思うんだろうか…。

まあ、NAT が使える大抵のルータ UDP もサポートしているから、
君が思うようなことはできると思う。
202デフォルトの名無しさん:2005/10/21(金) 23:35:18
>>201
UDPのコネクション型というのはなんかで読んだ気がしたのですが多分デタラメです。
ゴメンナサイ。
基本的にはユーザにポートフォーワーディング機能とかでUDPの何番ポートはどこに割り当てて、、
とかいった難しい設定なしに、インターネットが使える環境で即、できるとうれしいです。
インターネットでラジオとかもあるので可能だと思うのです。
203デフォルトの名無しさん:2005/10/21(金) 23:47:18
>>199
できるやつもあれば、できないやつもある。

>>202
インターネットラジオを使った時のパケットを Ethereal
とかでキャプチャしてみたらいいんじゃないか。
204デフォルトの名無しさん:2005/10/21(金) 23:49:27
>>202
了解です。案ずるより・・ということでやってみまつ。では
205デフォルトの名無しさん:2005/10/21(金) 23:50:09
>>202ではなく>>203でした。

206デフォルトの名無しさん:2005/10/22(土) 00:00:12
>>202
UDPのコネクション型というのは、
UDPソケットをコネクション指向のスタイルでプログラミングする
プログラミングスタイルのことを勘違いしているんだろ。
プロトコル的には全く同じだよ。
ただコネクション指向の場合、src/dstのport番号が同じままになってるわな。
つまりUDPプロトコルの使い方がチョト違う。

>>204
キャプチャする前にNATの勉強しなよ。
ルータは自分が持っているNATテーブルをどう使っているか。
これあんまりプログラミングに関係ないけどな。
207デフォルトの名無しさん:2005/10/22(土) 00:07:08
> ただコネクション指向の場合、src/dstのport番号が同じままになってるわな。
> つまりUDPプロトコルの使い方がチョト違う。

詳しく説明願う。
208デフォルトの名無しさん:2005/10/22(土) 07:33:41
ここはプログラミング以前のネットワーク知識のスレですね
209デフォルトの名無しさん:2005/10/22(土) 14:40:46
秋厨真っ盛りだな
ハゲワラ
210デフォルトの名無しさん:2005/10/22(土) 15:20:37
あぷせとねでぶの暗唱からだな
211デフォルトの名無しさん:2005/10/22(土) 16:36:06
7層すべてを覚えるのは簡単だけど理解するのは難しいorz
212デフォルトの名無しさん:2005/10/22(土) 16:36:56
ageちまった
213デフォルトの名無しさん:2005/10/22(土) 16:49:04
返事用のインターフェイスをつくり port 0 をバインドし sendto で送信、
返事がくるまで recvfrom をループさせて待てばいいんだろ。
214191:2005/10/22(土) 17:28:10
>>192
>>193
>>194
>>195
ありがとう。
APIでしこしこ書いてます。

通信ものをクラスでお気楽につうのは甘かったかな…
215デフォルトの名無しさん:2005/10/22(土) 17:44:09
連番のときは>>192-195とすると見やすいぞ
216デフォルトの名無しさん:2005/10/22(土) 18:02:52
>>214
いや、いいクラスがあれば使えばいいが、CSocketは糞なんだ。
217191=214:2005/10/23(日) 00:09:13
>>215
わかりました。

>>216
あれば、っていうことは、まだいいクラスは無いって感じなんでしょうか。
需要ありそうですけど…
218デフォルトの名無しさん:2005/10/23(日) 00:16:51
>>213
インタフェースというのはなんのことですか?
あと0番のポートにバインドするとどういうことが起きるんですか?
219332:2005/10/23(日) 00:45:51
ソケットをポート0番号でbindしておくと短命ポートで受信できる、
インターフェイスは知らんが、相手に短命ポートに接続してもらうことで
ルータで弾かれないようにする工夫のことだろう。
220デフォルトの名無しさん:2005/10/23(日) 01:14:17
0番にbindすると、何か特殊なことでもあるの?
221216じゃないけど:2005/10/23(日) 03:10:24
>>217
「あれば」=「きみが見つけたら」

そらいいライブラリはいくつかあるよ
222デフォルトの名無しさん:2005/10/23(日) 11:32:51
217じゃないけど
> そらいいライブラリはいくつかあるよ
ちょっとで良いので挙げてみて頂けないかな

いくつか見てみたけど、どうせ学ぶなら有望そうなのが…みたいな逡巡が
boost::socketがあればなぁ…
223デフォルトの名無しさん:2005/10/24(月) 11:12:50
winsockを使ってリアルタイム音声通話ソフトを作ろうと思うんだけど、
send関数を使うとwinsockの内部の送信バッファにデータがたまるんだよね?
で、winsockが回線速度に応じて順次データを相手に送信するんだと思うんだけど、
たとえば56kbpsの回線なのに20KB/sでデータをsend関数に流し込んだとき、
回線速度が不足しているとおもうけど、音声の遅延だけでなくどんな問題が起こる?
224デフォルトの名無しさん:2005/10/24(月) 12:54:31
>223
音声送信の問題に限定して答えるけど

■UDPとTCPで挙動が違います
■この場合の音声遅延は使い物にならないぐらい致命的です
■クライアントの音声出力バッファの関係でタイミングを
 考えないと遅れまくります
■とりあえず音声バッファ処理してください
225デフォルトの名無しさん:2005/10/25(火) 06:37:41
56kbpsなら5kb/sくらいしか送れないんだよな?
毎秒15kbたまるとwinsockの内部の送信バッファとやらは破綻するとおもうが
その前にsendでWOULD_BLOCKが返るか
226デフォルトの名無しさん:2005/10/26(水) 00:19:59
xpなどのクライアントOSでのbacklogの上限値はいくつなんでしょうか。
googleすると上限は5というのが見つかるのですが、
実際に実験すると5以上いけました。
227デフォルトの名無しさん:2005/10/26(水) 00:42:34
WinSock.h:#define SOMAXCONN 5
WinSock2.h:#define SOMAXCONN 0x7fffffff

WinSock2 で、実際にいくつになるかは知らない。
228デフォルトの名無しさん:2005/10/26(水) 19:03:41
Winsock2の同期ソケットプログラミングについて質問です。

ワーカスレッド内部のAcceptで処理がブロッキングされてる状態で
そのワーカスレッド外部からブロッキング処理を中断させる方法は何が最も妥当なのでしょうか。

現在はスレッド外部からAccpectしているソケットに対してclosesocketしています。
229デフォルトの名無しさん:2005/10/26(水) 21:50:24
>>226
ハーフオープンコネクションの数とかライセンスの数と間違えてるんだろ
230デフォルトの名無しさん:2005/10/26(水) 21:50:47
>>228
Winsock2ならそれでOK
231デフォルトの名無しさん:2005/10/26(水) 22:08:55
TCP/IPによるconnect()のネットワーク負荷をシュミレーションしたいのですが、
なにかいいツールはご存知ありませんか?

connect()を何度も行うことによってconnect()側、accept()側と
ネットワークにどれくらいの負荷がかかるのか検証したいのです。
232デフォルトの名無しさん:2005/10/26(水) 22:50:10
JavaでSocket.closeを起動した時にTCPが相手に送信するフラグについて調査しています。
1. 何も指定しなければ、FIN。
2. SO_LINGERを設定(Socket.setSoLinger(true ,0))していれば、RST。
と言うことは分かったのですが、SO_LINGERを設定していない時にも、
FINではなくRSTを送信することがありました。その時の環境と条件は、
以下の通りです。
環境:OS:Red Hat Enterprise Linux 3
JDK:J2SE1.4.2_08(SunVM)
条件:SO_LINGERを設定していないSocketのcloseを起動。この時、該当コネクションのTCPの受信バッファにデータが存在する。

調査した結果、以下のページを見つけました。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/net/articles/connection_release.html
このページの"問題の説明"の最後("問題の回避方法"の直前)に書いてある部分に該当すると考えています。(このドキュメントは5.0から追加されたもののようでした)。

Googleで検索したのですが、この様な状態に関するページが、上記の
1件しか見つけることができず、この動作が一般的な動作なのかが不明です。

JavaでSO_LINGERを設定していないSocketでcloseを起動したときに、
FINではなくRSTが送信される条件をご存知の方がいらっしゃったらご教示ください。
233デフォルトの名無しさん:2005/10/27(木) 01:19:09
>>231
connect/accept の CPU 負荷とハンドシェイクで発生するパケットの負荷を求めたいってこと?
234デフォルトの名無しさん:2005/10/27(木) 02:01:03
今会社でこっそりプロミスカスモードでパケット集めて遊んでるんだが
結構楽しいよねこれ。最近はバイナリ列からどのフォーマットか瞬時に判断
できるようになったせいで、仕事中に他人が何してるか100%把握できるようになった。
235デフォルトの名無しさん:2005/10/27(木) 02:15:02
>>234
楽しそうだな
236デフォルトの名無しさん:2005/10/27(木) 03:12:03
237どっぴん ◆uSuQC0Pfo6 :2005/10/27(木) 06:29:23
初めまして。

僕はC#を覚えたので、手作りでビデオ・ボイスチャットを作ろうと
思ってます。

だけど、検索したり本屋に行ったりして調べようと思ったのですが
該当のものが見つかりません。

ご存知の方いらっしゃいましたらよい情報や方法そのものを教えていただければ嬉しいです。
238デフォルトの名無しさん:2005/10/27(木) 08:47:52
いきなり凄いハードルを用意するなぁ
239デフォルトの名無しさん:2005/10/27(木) 12:52:37
>233
そうです。
特に詳しくパケットの量を知りたいと思っています。

ネットワークをシュミレーションできるソフトがあればいいのですが・・・
240デフォルトの名無しさん:2005/10/27(木) 12:57:01
立派なご趣味でいらっしゃいますわね。
241デフォルトの名無しさん:2005/10/27(木) 14:44:01
s i m u l a t i o n な

s h u m i r e i s h o n じゃないぞ
242どっぴん ◆uSuQC0Pfo6 :2005/10/27(木) 15:07:03
ハードル高いですか。はは。
何事もまず第一歩からってな事でご存知の方お願いします。
243デフォルトの名無しさん:2005/10/27(木) 16:26:32
あれだろ。
C/C++で企業の第一線でネットワークばりばりやってて、趣味でC#をはじめたけど資料がないと。
244デフォルトの名無しさん:2005/10/27(木) 17:20:06
>>243
何事も第一歩を他人に手取り足取り教えてもらわないと踏み出せないのにそれはありえない
245デフォルトの名無しさん:2005/10/27(木) 19:01:28
方法そのもの。
ビデオ部分:キャプチャ→圧縮→send
音声部分:キャプチャ→圧縮→send

何か質問あるか
246デフォルトの名無しさん:2005/10/27(木) 22:22:02
>>239
実際にaccept/connectする単純な二つのプログラム作ってセッション張ったり切ったりすりゃいいんじゃない?
パケットの数はetherealで見るかwinpcapでキャプチャする単純なアプリを作ってみる。
247デフォルトの名無しさん:2005/10/27(木) 23:04:31
>>242
取り合えず、どっかのページにある動画ファイルをHTTPで取得して、再生してみたら?
248232:2005/10/27(木) 23:16:31
>>236
Socket.close起動で、ソケットへのインタフェースをクローズ(ソケット自身は
まだクローズされているとは限らない)されます。ソケットへのインタフェースが
クローズされるため、ソケット自身の受信バッファに残っているデータは
アプリケーションまで通知されないことになります。
これを送信側に通知させるためにRSTを使用していると言うように理解(想像)しました。

ありがとうございました
249デフォルトの名無しさん:2005/10/27(木) 23:17:43
>>234
今会社でこっそりミニスカを・・・までよんだ
250デフォルトの名無しさん:2005/10/27(木) 23:20:01
>>249
おまえなぁ…ふざけてないでちゃんと読めよ!

パイズリ列まで
251デフォルトの名無しさん:2005/10/27(木) 23:44:32
>>230
> Winsock2ならそれでOK

これ MSDN とかに公式見解として載ってます?

まあ、今それで動いているんだけど、公式見解
があれば、ちょっとは安らかに眠れるかも。

>>234
> 仕事中に他人が何してるか100%把握できるようになった。

と言うことは、おまえが何してるか情報システム部門は
100% 把握してるわけだ。

明日、帰りにフロムエーでも買っといた方がいいんじゃな
いか。(w
252デフォルトの名無しさん:2005/10/28(金) 00:28:23
>246氏
etherealというパケットキャプチャツールがあったのですね。
恥ずかしながら私は知りませんでした。
このソフトを使ってパケットを調べてみたいと思います。
ありがとうございました。
253デフォルトの名無しさん:2005/10/28(金) 01:39:15
みんな嫌なやつのパケットはよく見るよね?
上司にこっそり報告しちゃったりしてさ
俺って悪い奴?
254デフォルトの名無しさん:2005/10/28(金) 02:04:47
>>251
closesocketの説明に
> Any pending blocking, asynchronous calls issued by any thread in this process are
> canceled without posting any notification messages.
と書かれてるがこれじゃ不足か?
現在のMSDNからは見つけ出せなかったが、記憶が正しければ
Winsock 1.1では保証されてなかったはず
255デフォルトの名無しさん:2005/10/28(金) 02:06:05
あ、よく見るとMSDNのブロッキングで非同期の場合か
256デフォルトの名無しさん:2005/10/28(金) 06:02:28
>>253
WinSock2ならいいと思うよ
257デフォルトの名無しさん:2005/10/28(金) 06:51:30
>>234
今時、リピータHUBですか?
258デフォルトの名無しさん:2005/10/28(金) 10:01:46
>>257
スイッチだろうと、
ARP突っ込めばman-inthe-middleで見れる。
259デフォルトの名無しさん:2005/10/28(金) 12:58:48
(゚Д゚)ハァ?
260デフォルトの名無しさん:2005/10/28(金) 21:32:28
WSAAsyncGetHostByNameなんですが、MSDNには次のように書いてありました。
>The WSAAsyncGetHostByName function is not designed to provide parallel resolution of several names.
>Therefore, applications that issue several requests should not expect them to be executed concurrently.

訳に自信ないんですけど、一度に複数発行できるけど並列に動作しないよ(順番に処理されていく?)
ってことでいいんでしょうか?
261デフォルトの名無しさん:2005/10/28(金) 22:05:53
>>254
おお、ほんとだ。

ありがとう、これでやっと安らかに眠れるよ。

>>258
もう、寒くなってきたから、つりはほどほどにな。

>>260
Excite 翻訳によると、

> WSAAsyncGetHostByName機能は、いくつかの名前
> の平行な解決を提供するように設計されません。
> したがって、いくつかの要求を出すアプリケーション
> は、それらが同時に実行されると予想するべきではあ
> りません。

だから、大体あってると思う。順番がどうなるかはよく
わからんが。
262デフォルトの名無しさん:2005/10/29(土) 00:31:34
WSAStringToAddressの第一引数がLPCTSTRでなくLPTSTRなのは何故でしょうか?
文字列を変更する可能性があるのでしょうか?
263デフォルトの名無しさん:2005/10/29(土) 01:37:00
>>262
どっちも同じ意味。
264デフォルトの名無しさん:2005/10/29(土) 02:58:48
>>260
要するにMT-Safeでないということだね。

マニュアル文章としては良くないね。
「並列に実行するな」と書けば済むことを、グダグダ書いてある。
# というか「not MT-Safe」、これだけで済むこと。
265デフォルトの名無しさん:2005/10/29(土) 03:04:56
WSAAsync...系のAPIをマルチスレッドで呼び出す??
メッセージループを動かしているスレッド以外で、使う事あるの?
266デフォルトの名無しさん:2005/10/29(土) 03:11:16
ちなみに、MSDNのWinsock2の説明では
別スレッドでなんかした時にどうなるとかは、ちゃんと「thread」という単語を使って解説されています。
267デフォルトの名無しさん:2005/10/29(土) 03:15:22
>>264は根本的な勘違いをしている希ガス……。
そもそもこれは、スレッドセーフなどの問題ではないような……。


最初に、名前解決できないホスト名を渡す。

次に、名前解決できるホスト名を渡す。

メッセージが飛んでくるのを待つ

しばらくたってから、最初の名前解決ができなかった旨を示すメッセージが飛んでくる。

名前解決できた、次のメッセージが飛んでくる。


もし並列に実行できるなら、こうなるはず

メッセージが飛んでくるのを待つ

二番目に渡したホスト名の、名前解決ができたことを伝えるメッセージが飛んでくる

タイムアウトになって、最初のホスト名が名前解決ができなかったことを示すメッセージが飛んでくる。
268デフォルトの名無しさん:2005/10/29(土) 03:25:32
てゆーか、そもそも、
排他処理等を行って「1つのスレッド以外は待たされる」というものはいくらでもあるが
そういうのを「非MT-Safe」とは言わないのだが。
269デフォルトの名無しさん:2005/10/29(土) 09:14:47
そ。MT-Safeかどうかと
並行実行時の効率の良し悪しはまったく別の話
270デフォルトの名無しさん:2005/10/29(土) 09:52:06
>>263
LPCTSTRは CONST TCHAR* でLPTSTRは TCHAR* なのですが・・・
入力パラメータなのにconstが付いてないのはおかしいと思うのです。
271デフォルトの名無しさん:2005/10/29(土) 10:29:58
constがついてないということは それは変更されるかも知れないというだけ
おかしいのは>>263>>270でFA
272デフォルトの名無しさん:2005/10/29(土) 10:37:56
std::stringやCStringを直接渡せないな。
一時バッファ作らなきゃならんのか。マンドクセ('A`)
273デフォルトの名無しさん:2005/10/29(土) 11:15:40
絶対この関数を使わなきゃならんのか?
274デフォルトの名無しさん:2005/10/29(土) 16:34:58
getaddrinfoもWSAStringToAddressも名前が解決できるまでブロックするみたいだけど
WinsockでIPv6アドレスの解決中にブロックを中断したいときはどうしたらいいの?
UNIXならシグナルが使えそうだけど
275デフォルトの名無しさん:2005/10/29(土) 18:58:25
>>274
>名前が解決できるまでブロックする
これマジっすか
確かにブロックするかも
まずいなぁ・・・まずいよ
276デフォルトの名無しさん:2005/10/29(土) 19:18:22
スレッドで実行させればいいじゃん。
277デフォルトの名無しさん:2005/10/29(土) 19:29:39
>>274
WSAStringToAddressって単なる文字列処理じゃないの?
278デフォルトの名無しさん:2005/10/29(土) 19:41:14
>>276
名前解決でブロック中のスレッドを外から止められないのは一緒でしょ
TerminateThreadは後始末してくれないからサーバーアプリには使えない
クライアントなら終了すればいいけど
279デフォルトの名無しさん:2005/10/29(土) 20:23:54
>>277
そのようだ。ボケてた。getaddrinfoだけに置き換えて読んでちょ
280デフォルトの名無しさん:2005/10/29(土) 20:50:30
GET "〜〜"を送信してファイルをディスクに保存するとします。

その何も加工されていないファイルには、例外無くヘッダ情報が含まれますよね。
そのヘッダ情報を削除したい場合、どのようなプログラミングの手法が取れるでしょうか?
自分はヘッダに含まれるLengthを調べて、ヘッダファイルを取り除いていたのですが。
Lengthが存在しない場合などの時には、ヘッダが削除できなくなってしまいます。
281デフォルトの名無しさん:2005/10/29(土) 21:16:54
CR LF CR LFが来るまでがヘッダ。
282デフォルトの名無しさん:2005/10/29(土) 21:26:58
えっと今バイナリエディッタで、ヘッダ情報を含むページを見てるのですが。
CR LF CR LFという文字列が見つからないのですが・・
283デフォルトの名無しさん:2005/10/29(土) 21:45:51
>>282
がんばれ
視点を変えればすぐに見つかる

バイナリエディタで検索せずに、自分の目で見るんだ
284まあ、釣りだろうな。:2005/10/29(土) 21:49:24
>>282
申し訳ないけど、君、技術者に向いてないよ。

100歩譲って CR LF とか知らないのは、しょうがない
としても、例えば html cr lf ぐらいでぐぐってみる
とか、本屋に行って HTML 関係の本を片っ端から立ち読
みするとかできないようだと、これから辛いよ。
285デフォルトの名無しさん:2005/10/29(土) 21:52:39
↓お前はこれから奴にRFC読めと言う
286デフォルトの名無しさん:2005/10/29(土) 22:04:08
空気読めればそれでいいじゃん
287デフォルトの名無しさん:2005/10/29(土) 22:13:45
CR=キャリッジリターン。ANSIコード0x0d
LE=ラインフィード。ANSIコード0x0a
288デフォルトの名無しさん:2005/10/29(土) 22:22:55

わざわざすみません
289デフォルトの名無しさん:2005/10/29(土) 22:58:01
ブラウザで拾った(既にヘッダが取り除かれた)html見てるんじゃないだろうな?
290デフォルトの名無しさん:2005/10/29(土) 23:00:16
えっと今バイナリエディッタで、HTML情報を含むページを見てるのですが。
RFCという文字列が見つからないのですが・・
291デフォルトの名無しさん:2005/10/29(土) 23:02:35
>>290
>>284 の名前欄。
292デフォルトの名無しさん:2005/10/29(土) 23:07:44
RFC資料へのリンク集らしい
ttp://www.se.hiroshima-u.ac.jp/~isaki/rfc/list.html
293デフォルトの名無しさん:2005/10/29(土) 23:44:41
294デフォルトの名無しさん:2005/10/30(日) 03:11:17
RFCも知らないプログラマ…
温室育ちかな?
295デフォルトの名無しさん:2005/10/30(日) 03:28:38
>>294
君も>>284の名前欄
296デフォルトの名無しさん:2005/10/30(日) 08:22:48
釣りかどうかは別として
たまに基礎が欠落している人がいるわけだが
そういう奴らがどこから情報を得ているのか気になるよな
297デフォルトの名無しさん:2005/10/30(日) 10:49:09
ドカチンプログラマーには、たいした情報いらんだろ。
298デフォルトの名無しさん:2005/10/30(日) 14:49:54
localhostのMACアドレスを取得するには
どのようなコードを書いたら良いでしょうか?
299デフォルトの名無しさん:2005/10/30(日) 14:51:17
127.0.0.1にMAC層なんてあるのですか?
300デフォルトの名無しさん:2005/10/30(日) 14:58:31
きっと、自分のコンピュータから手に入れたいってことだろう。
301デフォルトの名無しさん:2005/10/30(日) 21:34:28
LANカードじゃね?
302デフォルトの名無しさん:2005/10/30(日) 22:19:16
127.0.0.1 に LAN カードなんてあるのですか?
303デフォルトの名無しさん:2005/10/31(月) 01:21:28
>296
304デフォルトの名無しさん:2005/10/31(月) 02:57:53
でもさ、俺らだって本当の基礎はあんま理解してないじゃん?
IPパケット読めって言われたって、本見ながらアーとかウーとか
唸りながらじゃないと宛先ひとつ取り出せないじゃん?
LANの信号って何ボルトだったっけ?
305デフォルトの名無しさん:2005/10/31(月) 08:12:20
俺ら…
306デフォルトの名無しさん:2005/10/31(月) 08:28:40
0V.
光ケーブルに電気は流れないよ。
307デフォルトの名無しさん:2005/10/31(月) 08:42:26
>>304
大学へいけ。ちゃんと教えてくれるから。
308デフォルトの名無しさん:2005/10/31(月) 12:46:37
>>298
Windowsならレジストリから読む
UNIXなら・・・しらんLinuxなら/procとかそこらへんじゃねーの
309デフォルトの名無しさん:2005/10/31(月) 14:13:44
WindowsはlocalhostにMACアドレスなんかついてるのか? けったいな。

310デフォルトの名無しさん:2005/10/31(月) 23:00:26
やっぱりこのスレにネットワーク分かる人いないんですね。
ネットワーク知ってると言ってWindowsだけだとお話になりませんよ。
311デフォルトの名無しさん:2005/10/31(月) 23:17:05
Windows以外だとlocalhostにMACアドレスがついているのですか?
298=300=310さん。
312デフォルトの名無しさん:2005/10/31(月) 23:17:54
電撃ネットワークも知ってるお。
313デフォルトの名無しさん:2005/10/31(月) 23:19:48
TMネッt(ry
314デフォルトの名無しさん:2005/10/31(月) 23:27:20
平和より自由より正しさより〜
315デフォルトの名無しさん:2005/10/31(月) 23:34:19
あむうえ
316デフォルトの名無しさん:2005/10/31(月) 23:40:50
>>311
付いてるよ。普通に。
キサマはWebアプリしか作ったことないだろ?
ヘタレだな。
317デフォルトの名無しさん:2005/11/01(火) 00:00:11
loなifにmacなんて付いてるの? 初めて知った…。
318デフォルトの名無しさん:2005/11/01(火) 00:07:40
>>316=310=300=298のネットワークに詳しい有能な技術者様へ

NICを持ってないPCでも、localhostを持っていて
127.0.0.1相手に通信できるなんて、そんなわけないもんね。

ネットワークに詳しくないヘタレは、↑みたいな勘違いしてるから
localhostがMAC持ってるなんて知らないんだよ。
319デフォルトの名無しさん:2005/11/01(火) 00:12:31
>>318
書いてることがよくわからない。も少し分かりやすくお願い。
320デフォルトの名無しさん:2005/11/01(火) 00:22:31
よくわからんが、
localhostからって言ってるから、
ここ数年流行のTomcatでlocalhost相手に
Webアプリを作ったことあるだけのネットワーク知った気取りが
ループバックに噛みついてんじゃないの?
自分のパソコンの って言えばいいじゃん。
321デフォルトの名無しさん:2005/11/01(火) 00:24:12
そんなメソッドはありません。
って言い出すんだろ。どうせ。
322デフォルトの名無しさん:2005/11/01(火) 00:24:52
323デフォルトの名無しさん:2005/11/01(火) 00:28:01
>>322
ネットワークスレらしく、パケット解析してから発言してるのか?
324デフォルトの名無しさん:2005/11/01(火) 00:29:35
>>322
まったくよくわからん。結局このスレじゃ答えは出ないってことか?

まぁloがmac持ってようがいまいが仕事するのに影響ないからいいか。
325デフォルトの名無しさん:2005/11/01(火) 00:31:52
なにここ。
これほどあからさまな皮肉を、皮肉と感じられない人しか居ないの?
326デフォルトの名無しさん:2005/11/01(火) 00:33:55
ヒント:ARP
327デフォルトの名無しさん:2005/11/01(火) 00:48:37
localhostにMACアドレスがついてる一族は別の世界の住人なんだろう。
どっか他所でやってくれ。たいして面白い見世物でもなかったので飽きた。
328デフォルトの名無しさん:2005/11/01(火) 00:52:10
うちのMacのMACアドレスはどうやって調べたら良いんだ?
329デフォルトの名無しさん:2005/11/01(火) 00:57:10
郵便番号から検索できるぞ
330デフォルトの名無しさん:2005/11/01(火) 01:03:44
自分のパソコンのMACアドレスだったらどうなんだ?
331デフォルトの名無しさん:2005/11/01(火) 01:04:05
最近は電話番号からでも住所調べられる世の中になったんだってな?
332デフォルトの名無しさん:2005/11/01(火) 01:16:19
2chもレス番からでも住所調べられる世の中になったんだってな?
333デフォルトの名無しさん:2005/11/01(火) 01:20:08
ダイアルアップルータによってインターネットに接続しているLANがあるとします。
このLANの上には複数PCがあるとし、そのうちの一台からHTTPの要求をWebサーバに送信します。
Webサーバが返した応答はルータを介してHTTPを投げたPCに返しますよね。
このときルータがその経路を覚えていてくれることはTCPの働きによって
(例えば、TCPが内部でEthernetのパケットを絶えずやり取りして経路を失わせないとか)
保障されているのですか?
つまりTCPのコネクションとは何によって確立しているのでしょう?
334デフォルトの名無しさん:2005/11/01(火) 01:25:55
断片的な知識を勝手に繋ぎ合わせて奇妙奇天烈な理解をしてそうな奴が来たな。
TCPのコネクションと経路は関係ない。

335デフォルトの名無しさん:2005/11/01(火) 01:32:43
>>333
TCP/IPスタック

簡単に言うとメモリにIPテーブルを保存している
336デフォルトの名無しさん:2005/11/01(火) 01:39:11
>>333
TCPコネクションとは、接続元と接続先によって確率されてます。はい。
337デフォルトの名無しさん:2005/11/01(火) 01:52:25
では経路はどのように保たれるのですか?
338デフォルトの名無しさん:2005/11/01(火) 01:58:10
ヒント:ARP
339デフォルトの名無しさん:2005/11/01(火) 01:59:09
>>337
ルーティングテーブル

tracertというコマンドがあるから
コマンドプロンプトかシェルでためしてみるとイメージがわかるだろう。

ルーターやFWがICMPをブロックしてるなら使えんが
340デフォルトの名無しさん:2005/11/01(火) 02:04:21
するとUDPでも絶えず流していれば経路は保たれるのでしょうか?

341デフォルトの名無しさん:2005/11/01(火) 02:08:16
人の話を全然聞いてねーなこいつ。
342デフォルトの名無しさん:2005/11/01(火) 02:08:19
保障はないが保たれる
343デフォルトの名無しさん:2005/11/01(火) 02:12:13
TCPとUDPについて入門書で勉強したほうがよくない?
今はネットにも情報転がってるしさ。ここで答え出るの待ってたら
時間浪費なだけだよ。



釣りとは思ってるけどさ。
344デフォルトの名無しさん:2005/11/01(火) 02:13:10
>>342
保障が無いけど保たれるというのは、どういうことでしょう?
ある時そのルーティングテーブルをルータがリセットしちゃったらもう届かなくなる。
そしてルータはそういうことをしてはいけないというルールは無い、とか?
345デフォルトの名無しさん:2005/11/01(火) 02:33:07
保証を保障と各
346デフォルトの名無しさん:2005/11/01(火) 02:33:33
IP層のルーティングと、
NATの接続管理を混同している。

ちなみに「自ホストのMACアドレスうんぬん」、Windowsなら>>1
UNIXならstevensでも読んでね。
347デフォルトの名無しさん:2005/11/01(火) 10:04:48
>257-259
遅レスだが、偽ARP送れば大抵のスイッチ、OSの組み合わせで、
通信覗き見るのは可能だろ。
ARP poisoning防げるOSなんてあるの?
全ポート802.1xならスイッチで防げると思うけど。
348デフォルトの名無しさん:2005/11/01(火) 10:29:02
>>347
今時のOSなら故意か偶然かIPアドレスが衝突したことくらいはわかる。
メッセージ出るよ。
349デフォルトの名無しさん:2005/11/01(火) 13:08:03
>>348
IPアドレスの衝突は関係ないだろ。
ターゲットとなる2つのホストに、第3者が、それぞれ他方を偽るARPを送るだけだから。
350デフォルトの名無しさん:2005/11/01(火) 15:45:06
ttp://msdn.microsoft.com/library/en-us/winsock/winsock/graceful_shutdown_linger_options_and_socket_closure_2.asp

>(local timing significance only)
とはどういう意味でしょうか。
「ローカルタイミングの意味のみ??」どう訳せばいいのかわかりません、、
351デフォルトの名無しさん:2005/11/01(火) 16:15:16
>>350
ローカル側でのタイミングのみ意味がある
=リモート側の処理のタイミングとは無関係

という意味では?

つまり、Client side の場合、
(1) と (5) の間にこの処理が発生するけれども、
(2),(3),(4)の処理のタイミングとは無関係、という意味。
352デフォルトの名無しさん:2005/11/01(火) 16:30:42
>>351
ああなるほど、納得しました。
ありがとうございました。
353デフォルトの名無しさん:2005/11/01(火) 23:12:01
>>350
タイミングw
NICチーミングの話だよ。
354デフォルトの名無しさん:2005/11/02(水) 00:16:03
>>349
その arp をいつ送るかを考えてごらん。
355デフォルトの名無しさん:2005/11/02(水) 00:27:46
>>349
IT用語辞典並の知識しかなさそうに見えるぞ。
ARPというプロトコルについて勉強したまえ。
356デフォルトの名無しさん:2005/11/02(水) 01:43:21
>>355
その考えだと、すべての技術の詳細を厳密に把握してないと
設計できないことになるね。
少なくとも、よい設計者は君のようなことは言わない。
357デフォルトの名無しさん:2005/11/02(水) 01:43:50
>>354-355
念のため聞きたいんだが、ARP Poisoning Attack については理解してるんだよね?
どうみてもわかってないのはそっちの方にしか見えないんだが。
358デフォルトの名無しさん:2005/11/02(水) 01:46:43
念のため聞きたいんだが、
お ま え ら た だ の 土 管 屋 ?
359デフォルトの名無しさん:2005/11/02(水) 01:48:57
>>353
NICチーミングって、俺は NIC Teaming のことしか知らないんだが、他にもあるの?
360デフォルトの名無しさん:2005/11/02(水) 01:59:49
今日はarpかよ。
361デフォルトの名無しさん:2005/11/02(水) 02:13:59
この調子だと明日はpingだな。
362デフォルトの名無しさん:2005/11/02(水) 02:16:10
頭大丈夫か?
363デフォルトの名無しさん:2005/11/02(水) 05:58:10
ツールの話ししてどうする
icmpの話しだろ

明後日はripの話しで温く盛り上がろう。
364デフォルトの名無しさん:2005/11/02(水) 16:40:18
>354
考えたが、答えは「割り込む直前」ぐらいしか思いつかん。
正解があるんなら教えてくれ。

偽ARP投げて、自分に流れはじめたEthフレームをフォワードするだけだから、
ARP Poinsoningで通信に割り込むには、IPアドレス振る必要もないわけだが。
365デフォルトの名無しさん:2005/11/03(木) 02:27:36
unreachable を通知する icmp を無視するソケットオプションってありませんか?
366デフォルトの名無しさん:2005/11/03(木) 11:35:10
自分で戻りを無視すれば良いだけでは……
367デフォルトの名無しさん:2005/11/03(木) 12:57:19
>>356
> その考えだと、すべての技術の詳細を厳密に把握してないと設計できないこ
> とになるね。

どう曲解したらそんな結論が導き出されるんだろう…。
少なくとも、アフォな設計者しか君のようなことは言わない。(w

>>357>>362

>>364
自分の IP アドレスは要らんけど、、偽装する IP アドレスは指定するだろ。
通信相手の MAC アドレスが変わったらログを取る OS は別に珍しくないよ。

ところで、普通の実装だと arp-request を投げてないのに arp-reply が来る
と arp テーブルを更新してしまうものなのか?
368デフォルトの名無しさん:2005/11/03(木) 13:04:46
>>366
UDPソケット作っててdestが受信体制にない場合のunreachableを無視したいんですよ。
369デフォルトの名無しさん:2005/11/03(木) 14:40:39
すればいいじゃん。
recvfromの返り値をチェックするだけだろ。
370デフォルトの名無しさん:2005/11/03(木) 15:44:25
>>368
何したいんだか分からんが、unreachableを受信したらOSがそれをメモってて、
いつ届くようになるか分からんからキャッシュを無効にしたいって事かな?
371デフォルトの名無しさん:2005/11/03(木) 19:38:39
>>370
recvが反応する(エラーを返す)のを無効にしたいんですよ。
372デフォルトの名無しさん:2005/11/03(木) 21:10:50
いやだから、反応したって、エラーコードみて自分で無視すれば
いいじゃないか。
373デフォルトの名無しさん:2005/11/03(木) 21:18:31
なんか、最近のお子ちゃまプログラマは自分が必要な機能はすべてOSが持って
ると思っているんだろうか…。
374デフォルトの名無しさん:2005/11/03(木) 21:23:50
思われたくなかったら全ての要素にアクセスさせろ
375デフォルトの名無しさん:2005/11/03(木) 21:30:34
> 通信相手の MAC アドレスが変わったらログを取る OS は別に珍しくないよ。
後学のために教えて欲しいんだが、例えば?

>ところで、普通の実装だと arp-request を投げてないのに arp-reply が来る
>と arp テーブルを更新してしまうものなのか?
する。
でないと、(特殊ケースだけど)VRRPが切り替わったときとか、やたらと時間がかかるようになる。
そもそも、ターゲットのarpエントリがエージアウトされるまで我慢して待って、
requstが飛んだときに偽replyを返せばいい。
受ける側は、2つの異なるreplyが返ってきたとき、なんかおかしいということはわかっても、
どちらが正しいかなんて、知る方法はない。
古き良き時代のプロトコルであるarpは性善説で成り立ってるから、
悪意あるホストの存在なんて、仮定されてない。

ってことで、1年ぐらい前試したときは、LinuxでもFreeBSDでもSolarisでもWindowsでも、
その手のツールが吐く偽arpを、ホイホイ信じてた。
376デフォルトの名無しさん:2005/11/03(木) 21:54:27
> 後学のために教えて欲しいんだが、例えば?

君が使ってた、FreeBSD でも取るよ。(少なくとも、4.3R では。)
一年ぐらい前に、試した時に Syslog とか見たことないの?

> でないと、(特殊ケースだけど)VRRPが切り替わったときとか、やたらと時
> 間がかかるようになる。

なんで? 仮想 MAC アドレスも引き継げば、arp テーブルの更新なんかは必要
ないと思うんだけど。

> どちらが正しいかなんて、知る方法はない。

arp (に限らず、初期のネットワーク設計) が、性善説でなりっていると言う
のは理解してるつもり。
まあ、ポリシーの問題だろうけど、こういう世の中になったんだから、どっち
が正しいかわからないんだったら、両方信じないと言う実装もありかなぁ。
377デフォルトの名無しさん:2005/11/03(木) 22:30:59
>>375
アホは逝ってよし。
スルーの方向で。> ALL
378デフォルトの名無しさん:2005/11/03(木) 23:31:31
>>371
そのタイムロスを無くしたいから無視したかったんですよ。
まあそんなもんないってことが分かったんで、あきらめてエラーコード見ます。
379デフォルトの名無しさん:2005/11/03(木) 23:35:08
プログラミングの話題でなくていいなら、
ipfilterあたりのフィルタリングで弾くとかな。
けど結局リトライしなきゃいけないんだから、

> エラーコード見ます。

みて、どういうリトライするかロジック組んだ方がいい。
380デフォルトの名無しさん:2005/11/03(木) 23:48:42
Ethernetの質問なんですが
1514byteより多くのパケットを送るのはジャンボフレームを使わないと無理なの?

WindowsSize=64Kbyte とか指定できてもそれじゃ意味ない気がするんだけど。
381デフォルトの名無しさん:2005/11/03(木) 23:53:24
>>379
エラーコードは見てますよ。
ただWaitFor〜、readが反応する時間がもったいないだけです。

>>380
MTU
382357:2005/11/03(木) 23:56:47
>>367
> ところで、普通の実装だと arp-request を投げてないのに arp-reply が来る
> と arp テーブルを更新してしまうものなのか?

普通にする。だからこそ ARP Poisoning が問題になるんだが…
悪い点だけでなく積極的に使う例が冗長クラスタリングの切替だ、というのは
>>375 が書いている通り。

>>376
> なんで? 仮想 MAC アドレスも引き継げば、arp テーブルの更新なんかは必要
> ないと思うんだけど。

VRRP以外にも、仮想MACを使ってない、仮想IPを使った冗長クラスタリングの
システムだって普通にあるよ。そういう場合 Unsolicited ARP を投げて
近隣ルータのARPキャッシュを更新して切替時間を短くする。

arping コマンドの -U とか -A オプションとかがまさにそれだけど。
ttp://linuxcommand.org/man_pages/arping8.html

383デフォルトの名無しさん:2005/11/04(金) 00:42:15
>>382
> 普通にする。

なるほど。
ただ、そうしないといけない理由は、冗長クラスタリン
グの他にあるのか?

> 仮想MACを使ってない、仮想IPを使った冗長クラスタ
> リングのシステムだって普通にあるよ。

仮想 IP で、実 MAC と言うこと?
なんか中途半端な構成だな。
ちなみに、どういうシステムがあるか例を教えてくれないか。
384デフォルトの名無しさん:2005/11/04(金) 01:24:22
>>383
382ではないが、自分の実装した例ではpppでリモートのホストにLAN内のサブネットのアドレスを与えた時
仮想的にLAN上に存在しているように見せるためにpppをターミネートしているローカルなホストがリモートの
IPアドレスでgratuitous arpをした。 いわゆるRemote Access Serverと呼ばれるたぐいはこういうことを
するんじゃないかな。
385デフォルトの名無しさん:2005/11/04(金) 01:39:02
>>381
再送のこと考えたら、少々の待ち時間は必要だろ?
それともICMP来たらすぐに再送して帯域食い潰すつもりか?
386357:2005/11/04(金) 04:44:25
>>383
> ただ、そうしないといけない理由は、冗長クラスタリングの他にあるのか?

「そうしないといけない」かどうかじゃなくて、
「現実にはそういう実装が普通にある」って言ってるだけなんだがな。

で、RFC 826 を今読み直してみたけど、素直に実装すればそういう動作になると
思うんだが、俺の読み方間違ってる?

> 仮想 IP で、実 MAC と言うこと?
> なんか中途半端な構成だな。
> ちなみに、どういうシステムがあるか例を教えてくれないか。

普通に ifconfig で仮想 IP 割り当てたらそういう状態にならないか?
まあOSによって違うかもしれんが、少なくとも Linux ではそうなる。

冗長クラスタリングシステムの例では UltraMonkey とか。
(以下の「高可用性」の節あたり読んでみて)
ttp://ultramonkey.jp/papers/lvs_tutorial/html/

その他の商用の高可用化製品でも同じことやってると思うけど。
俺はむしろ仮想MACまで使うシステムの方をあまり見たことが無い。
387384:2005/11/04(金) 05:50:26
>>382
ちょっと手元のLinux 2.4のソース(net/ipv4/arp.c)見てみたらこうあったのでデフォルトでは
そういうことはないようだ。

#ifdef CONFIG_IP_ACCEPT_UNSOLICITED_ARP
/* Unsolicited ARP is not accepted by default.
  It is possible, that this option should be enabled for some
  devices (strip is candidate)
*/
 if (n == NULL &&
    arp->ar_op == htons(ARPOP_REPLY) &&
      inet_addr_type(sip) == RTN_UNICAST)
        n = __neigh_lookup(&arp_tbl, &sip, dev, -1);
#endif

ちなみに自分はunsolicited arpとgratuitous arpをごっちゃにしてた。ごめん。
普通冗長クラスタやプロクシ・エージェント(RAS)が普通使うのはgratuitous
arpでunsolicited arpではない。 Gratuitous ARPはソースとリクエストのアドレスが
同じARPリクエスト。
388デフォルトの名無しさん:2005/11/04(金) 10:01:20
http://www.ebookoff.co.jp
にJavaのHttpClientなどでアクセスできません。
アクセスするためのヒントちょっとでもいいのでお願いします。
スレ違いだったらすいません。




389デフォルトの名無しさん:2005/11/04(金) 10:07:22
>>388
エラーコードその他くらい書け。
390デフォルトの名無しさん:2005/11/04(金) 10:29:58
アクセスした後、一時の間(30秒くらい)反応がなく
その後↓のようなエラーが出ました。

エラーです。
2005/11/04 10:16:01 org.apache.commons.httpclient.SimpleHttpConnectionManager re
leaseConnection
警告: SimpleHttpConnectionManager being used incorrectly. Be sure that HttpMeth
od.releaseConnection() is always called and that only one thread and/or method i
s using this connection manager at a time.

DelphiのIndyコンポーネントという
やつではアクセスできるんですが・・。
なにしろDelphiはあまり詳しくはなく、
Javaでやりたいもんで・・。

たぶんサイトの方がスクリプトからのアクセスを
禁止してるみたいで、
Header偽装とかでやれるのかなあ
とかも考えてみたのですが、
Header偽装でやれるんでしたら、その本を見て
勉強します。

391357:2005/11/04(金) 15:57:06
>>387
> ちょっと手元のLinux 2.4のソース(net/ipv4/arp.c)見てみたらこうあったのでデフォルトでは
> そういうことはないようだ。

これなんだけどさ、「新規にARPキャッシュに追加することはしないけど、
既に存在するARPエントリは更新される」っていう動作になると思うんだ。

ロジックを追っかけてもそう思えるし、実際に試してもそうなった。
(RedHat EL4(2.6) で確認。ちなみに Windows XP SP2 も同じ動作だった)

> Gratuitous ARPはソースとリクエストのアドレスが同じARPリクエスト。

これ、俺が知ってる使い分けとは違うんだけど、明確な使い分けの定義
ってあるのかな? 人によっては区別しないで使ってるように思うんだけど…

俺の知ってる使い分けの例はこれ。
ttp://linux-ip.net/html/ether-arp.html
つまり ARP Request されてない ARP Reply のことが Gratuitous ARP。
ソースとリクエストのアドレスが同じARP Request が Unsolicited ARP。

いろいろぐぐってみると、両者を含めて Unsolicited って言ってると
思われる文章もあるし(arping のマニュアルとか)、Stevens の「詳解
TCP/IP」では前者の記述は無くて Gratuitous ARP って書いてあるね。

# 「根拠のないARP」って一瞬なんだかわからんかったぞ。>詳解TCP/IP
# 「余計なARP」とか「押し付けARP」とかそんな感じじゃないかな。
392デフォルトの名無しさん:2005/11/04(金) 17:33:43
gratuitousというのは、
与えられられたが、その根拠はない、その両方の状態のこと。
393デフォルトの名無しさん:2005/11/04(金) 21:28:56
質問です。
Linuxだと、IPヘッダ構造体はインクルードすれば利用できるんですが、
winsockの場合だと、自分で定義しなきゃダメですか?
394デフォルトの名無しさん:2005/11/04(金) 23:12:51
>>393
IncludeすればOK
395デフォルトの名無しさん:2005/11/04(金) 23:49:10
土管屋の集落。だな。
技術者気取りやがって。
OSI 2階層のバカ共めが。
396デフォルトの名無しさん:2005/11/05(土) 00:02:48
>>395
も、もっと言ってぇ〜
397釣られるなよ ⇒ おれ。(w:2005/11/05(土) 00:04:39
>>395
なんだなんだ、いきなり。
話についていけなくなって嵐に走ったのか?
398デフォルトの名無しさん:2005/11/05(土) 00:14:13
>>395
かなり的を射ている。彼らは土管屋なのだ。
右から左へ。左から右へ。双方向リストくらいの知能しか持ち合わせていない。
399デフォルトの名無しさん:2005/11/05(土) 00:20:34
だからマリオが好きなのか
400デフォルトの名無しさん:2005/11/05(土) 00:26:02
おいらはL7のもの作るよりL2〜L4のもの作ってるほうが楽しい。
401デフォルトの名無しさん:2005/11/05(土) 00:27:49
簡単だからな。ドカタ的な「ノリ」で作れちゃうもん。ルータなんて。
402デフォルトの名無しさん:2005/11/05(土) 00:33:03
>>401
warata。
403デフォルトの名無しさん:2005/11/05(土) 00:47:19
資材運びみたいなもんだろ
404デフォルトの名無しさん:2005/11/05(土) 01:10:20
ARPポイズニングなんてハッカーきどりのリア厨ぐらいしか興味ないよ
そういう話はセキュリティ板か初級ネット板(旧ハッカー板)でどうぞ
405デフォルトの名無しさん:2005/11/05(土) 01:23:45
>>404
で、チミはどんな高度な話題を振ってくれるんだ?
406デフォルトの名無しさん:2005/11/05(土) 01:27:12
自分でちょっと勉強がてらパケットフィルタ自作してみようと思っているんですが、

今蟹とマベのDualLAN用意して、
蟹-->マベに生パケットそのまま転送するところまで作ったので、
パケットフィルタを今度は実装しようかと思ってます。
参考文献などあったら教えてください。
とりあえず、目標は、仕事場に転がってる10GBpsのネットワークで
大域98.9%維持しつつフィルタリングできるようになりたいです。

407デフォルトの名無しさん:2005/11/05(土) 01:35:00
>>406
蟹って・・・ギャグ?

OSは?
フィルタリングならカーネルレベルで動作しないとパフォーマンス悪いと思うぞ
snortとかWin/Unixでソースも公開してるんじゃないか?
Winの場合デバドラキットを買わないといけないが
408デフォルトの名無しさん:2005/11/05(土) 01:37:12
1GB/s*2ってどんなインターフェースだyo
409デフォルトの名無しさん:2005/11/05(土) 02:10:06
いや目標なので今はまだ使っていない10GBPSのネットワーク載せてみたいだけですよ
今は会社に転がっていたパーツ組み合わせた即席Linux鯖作ってそこで勉強中です
410デフォルトの名無しさん:2005/11/05(土) 07:44:16
>>406
10GBps なんて云うあまり聞いたこともない通信速度だし。
98.9% なんて、中途半端な仕様だし。

まあ、釣りやね。
411デフォルトの名無しさん:2005/11/05(土) 12:37:52
>>410
蟹とかマベとか意味わかんないし、DualLANってオレ用語だけど、
ほんとに職場に10GbE NICが転がってて、それをアピールしたかったんだろうよ。
412デフォルトの名無しさん:2005/11/05(土) 12:43:04
>>408
>>410
大文字のBはバイトを表すことが多い、って教えてやれよ。
413デフォルトの名無しさん:2005/11/05(土) 13:55:09
414デフォルトの名無しさん:2005/11/05(土) 13:55:44
415デフォルトの名無しさん:2005/11/05(土) 19:15:33
時間切れとかの判定のタイマーって sleep() 使うのが普通なのですか?
416デフォルトの名無しさん:2005/11/05(土) 19:21:22
知らん
417デフォルトの名無しさん:2005/11/05(土) 19:22:00
>>415
ウェイトハンドルかタイマー(シグナル)
418デフォルトの名無しさん:2005/11/05(土) 20:11:30
タイマーってSleep() と同じ割り込みつかってなかったか?
419デフォルトの名無しさん:2005/11/05(土) 23:13:19
>>412
決まりってわけでもないしな。
420デフォルトの名無しさん:2005/11/05(土) 23:44:24
>>419
まあ、この板に来てる奴なら常識だろ。
421デフォルトの名無しさん:2005/11/06(日) 02:36:01
ARPってDoSしやすいよね。
物理的に繋げられれば確実に勝てる。
つーかおまいらルータ屋なのか?
422デフォルトの名無しさん:2005/11/06(日) 03:05:43
> 物理的に繋げられれば

この時点で
423デフォルトの名無しさん:2005/11/06(日) 13:53:33
今とあるアプリを作っていて、その機能を独立させたいので
アプリへはローカルからソケット経由で情報のやり取りができるようにしようと思っています。
で、通信その相手はUIです。WindowsのGUIだったり、CGIだったり。

質問は通信プロトコルに関してなのですが、多くの人に扱いやすいプロトコルは、
テキストベースとバイナリベースだと、テキストベースと思ってよいでしょうか?
テストベースの場合どのようなものが扱いやすいでしょうか?

ここでの扱いやすいというのは、
1.さまざまなプログラムから扱える
2.複雑な処理を必要としない(複雑なフォーマットをものすごいアルゴリズムで解析したりしない)

そこで、、個人的には、要求はライブラリの多いHTTPベースで、応答はCSVかなと思っていますが、
もっとよいものありますか?
424デフォルトの名無しさん:2005/11/06(日) 14:05:04
>>423
XMLを使え!!
425デフォルトの名無しさん:2005/11/06(日) 14:21:19
>>423
XMLは考えていたのですが、ライブラリがないと自分でパーザ書くのは敷居たかいかなと思いました。
ちなみに自分はDでこれ作っているのですが、標準ライブラリにXMLがないです。
YAMLとかもいいのですが、同じ理由で。

ちなみに、ぱっとライセンスに制限されずにXMLが扱えるプログラミング言語って何があります?
java、C#、VB.NET...
426423:2005/11/06(日) 14:22:49
GPLならいくらでもありそうだけど・・
427デフォルトの名無しさん:2005/11/06(日) 14:26:02
>>425
それ全部使えるよ
428423:2005/11/06(日) 14:40:26
あ、失礼。使えそうなものをあげました。
使えなさそうなもの(別途自分でライブラリを用意しないといけないもの)
C, C++, D, HSP(-_-), VB6..
案外あるものなんです?XMLのライブラリ。
画面くらいしか作れない!と言い切るような方でも簡単にXML使えますでしょうか。
429デフォルトの名無しさん:2005/11/06(日) 14:55:31
XMLは5年後には滅亡するよ
430デフォルトの名無しさん:2005/11/06(日) 15:00:04
XML SUCKS, SEXP RULES!!
431デフォルトの名無しさん:2005/11/06(日) 15:12:01
XML SUCKS, SSTP RULES!!
432デフォルトの名無しさん:2005/11/06(日) 16:30:11
XML SUCKS, SEX RULES!!
433デフォルトの名無しさん:2005/11/06(日) 16:46:24
>>423
どのレイヤーのプロトコルを作ろうとしてる?
ちなみに要求をHTTP、応答はCSVなんて言っちゃってるけど
もう少しお勉強してから作った方が良いのでは?

今のまま作らせると要求応答、HTTPでやるんでしょう、どうせ。
HTTPより上層のプロトコルを決めようとしてるの?
434デフォルトの名無しさん:2005/11/06(日) 18:50:08
>>423
SOAPにしろよ。全部揃ってるし。
435デフォルトの名無しさん:2005/11/06(日) 18:55:42
今日のまとめ
SEXはSOAPにしろよ
436デフォルトの名無しさん:2005/11/06(日) 22:45:00
>>428
CもC++もXMLライブラリくらいある。
「画面くらいしか作れない」ってどういう意味?
個人的にはXML-RPCかSOAPを推す。
437デフォルトの名無しさん:2005/11/06(日) 23:00:21
>436
428をよく読め
438デフォルトの名無しさん:2005/11/07(月) 00:01:02
selectでfd_setを指定しますよね?read/writeは分るんですがexceptってなんでしょうか?
帯域外データって奴ですか?それともエラーですか?
439デフォルトの名無しさん:2005/11/07(月) 00:19:43
エラー
440423:2005/11/07(月) 01:17:14
>>433
ああ、すみません。
HTTP上でデータ部が絶対にCSVであること保障するって意味です。
441423:2005/11/07(月) 01:20:30
できるかぎり敷居を下げたいので、いろいろと悩んでいたのですが、
TCP上に独自のプロトコルを定義して、ライブラリは要求に応じてこっちで作ることにしました。
それが一番敷居を低くできるかなと。
442デフォルトの名無しさん:2005/11/07(月) 01:34:39
>>439
さんくる
443デフォルトの名無しさん:2005/11/07(月) 01:39:07
>>441
敷居下げるんならSOAP使った方がいいと思うんだけどな。
444デフォルトの名無しさん:2005/11/07(月) 03:06:18
ま、HTTP/App鯖で実行するアプリケーションならHTTPでもSOAPでもいいだろうけど
そうではないようだから、>>441が楽じゃないの。
HTTP鯖の機能を自前で実装するのは面倒くさいでしょ。

ま、Windows限定なら、そういうのはCOMサーバにしちゃうのが普通な気もするが。
445デフォルトの名無しさん:2005/11/07(月) 04:00:35
結局はまたソケットの話になるのかよ・・・
446デフォルトの名無しさん:2005/11/07(月) 14:24:25
WSAEventSelectで、FD_CONNECTが起きる前にFD_READ, FD_WRITEが起きることはあるのでしょうか?
447デフォルトの名無しさん:2005/11/07(月) 14:49:35
ない
448デフォルトの名無しさん:2005/11/07(月) 14:55:39
UDPの場合とか?
449デフォルトの名無しさん:2005/11/07(月) 19:29:55
今スタティックコントロールを使用していてどうしたらいいか不明な点があるので教えてください。
Win32オンリー非MFCです。

スタティックコントロールに文字列を表示しているのですが
CreateWindowする際のウィンドウスタイルで
SS_WHITEFRAME
SS_BLACKFRAME
SS_GRAYFRAME
SS_SUNKEN
SS_ETCHEDFRAME
のいずれかを指定すると文字列が表示されなくなっていまします。
これらを指定した状態で文字列を表示するにはどのようにしたらよいでしょうか?

450449:2005/11/07(月) 19:31:06
あ、スレ違いでした・・・
Win32API質問箱スレとおもって書き込んでました。
失礼しました。
451デフォルトの名無しさん:2005/11/08(火) 00:57:15
socketの質問で申し訳ありませんが、
selectでFD_ISSET(s,&fdread)のときにrecvをしないでFD_CLR(s,&fdread)としても
受信内容は失われませんよね?
次にまたselectしたときにまたFD_ISSET==TRUEになりますよね。
452デフォルトの名無しさん:2005/11/08(火) 00:58:47
はい。
453デフォルトの名無しさん:2005/11/08(火) 02:32:39
さんきゅ
454デフォルトの名無しさん:2005/11/08(火) 04:03:47
>>451
出た。ソケット。やっぱり来るんだよな。
前スレ見ろ
455デフォルトの名無しさん:2005/11/08(火) 09:26:09
またソケットか
456デフォルトの名無しさん:2005/11/08(火) 12:08:45
わざわざ&fdreadとやってるのに>>451はなんで受信内容が失われると考えたのだろうか
457デフォルトの名無しさん:2005/11/08(火) 20:26:01
winsockを使っているんですが、
recv(sock1, buf, BUFSIZE, 0);
recv(sock2, buf, BUFSIZE, 0);
と受信しようとすると、sock1で受信してからsock2で受信することになるんですよね。

いつどちらからデータが送られてくるのか予想できないので、
sock1,sock2とも両方から同時にrecv()をしたいのですが可能なのでしょうか?
事情があって、同一スレッド内で処理をしないといけません。
458デフォルトの名無しさん:2005/11/08(火) 20:38:18
>>457
非同期ソケット使えば?
459デフォルトの名無しさん:2005/11/08(火) 21:27:59
select関数使うとか?
460デフォルトの名無しさん:2005/11/09(水) 00:45:50
>>456の言っている意味がよく分らない。
461デフォルトの名無しさん:2005/11/09(水) 00:47:01
設計が糞
462デフォルトの名無しさん:2005/11/09(水) 00:52:25
457の書いたソース読むの怖いな。
463デフォルトの名無しさん:2005/11/09(水) 02:13:17
recv(sock1, buf, BUFSIZE, 0
   sock2, buf, BUFSIZE, 0
);

>>462
>>462
>>462
>>462
>>462
>>462
>>462

で?何よ
464デフォルトの名無しさん:2005/11/09(水) 02:31:51
>>463
で、何が言いたいのかな?
465デフォルトの名無しさん:2005/11/09(水) 05:34:28
>>460
書き直すと、
FD_SETでfdreadにセットしたのだから、FD_CLRはfdreadをクリアする
何故受信バッファ云々を考えたのだろうか。
466デフォルトの名無しさん:2005/11/10(木) 01:00:54
CLeaRだけに、安易に使うとプログラムも消えちゃうよ! (注意)
467デフォルトの名無しさん:2005/11/10(木) 16:44:14
WSAEventSelectで(FD_CONNECT | FD_READ | FD_WRITE | FD_CLOSE) としているのですが
自分がshutdown(SD_SEND)した場合、これ以降FD_WRITEイベントは起きないことは決まっているのでしょうか?
468デフォルトの名無しさん:2005/11/10(木) 17:09:02
NATはどんな影響があるのでしょうか?

ソケットで言うと、

TCPの場合、NAT内からconnect()することはできるが、accept()できない。
UDPの場合、sendto()はできるがrecvfrom()ができない。

ということでいいのでしょうか?
469デフォルトの名無しさん:2005/11/10(木) 17:48:56
>>468
できないってことはない
acceptはUPnP, SOCKS, あるはい静的NATやDMZのどれかでもあれば出来る
recvfromはsendtoで送った相手からなら一定時間はできる(そうでないと通信にならない)
470デフォルトの名無しさん:2005/11/10(木) 22:13:25
>>457
> sock1,sock2とも両方から同時にrecv()をしたいのですが可能なのでしょうか?

せめて、別々のバッファにしとけよ。
471デフォルトの名無しさん:2005/11/10(木) 23:50:06
>>470
なにその角度
472デフォルトの名無しさん:2005/11/11(金) 11:03:48
非同期ソケット(ストリーム)のテストプログラムを作っていて
クライアントはデータを送信し、サーバはそれを受信しサイズを表示する
を繰り返す単純なものです。
ところが、クライアントがsendに渡すデータサイズが232912バイト(1024*227+256+128+64+16)を1バイトでも超えると
SOCKET_ERRORが返り、WSAGetLastErrorはWSAECONNABORTED(10053)が返ります。

送信できるサイズを超えた場合は、送信できる分は送信してくれてそのサイズを返す、と思っていたのですが違うのでしょうか?
232912バイト以下なら正常に送信できてます。
473デフォルトの名無しさん:2005/11/11(金) 11:30:57
WSAEMSGSIZEじゃないのか?

まあWinsockだから諦めた方がいいかも。
そもそもSO_MAX_MSG_SIZEをgetsockopt()してそのサイズで切った方がいいし。
474デフォルトの名無しさん:2005/11/11(金) 12:28:50
>>473
そうなんですか・・・面倒くさいですね。

>WSAEMSGSIZEじゃないのか?
デバッガで見てもprintfでも10053でした。
サーバ・クライアント共に同一マシン上で動かしてるのは関係ないですよね?
475デフォルトの名無しさん:2005/11/11(金) 13:53:16
WSAEMSGSIZEが返るときなら、
プロトコルスタックがギブアップした時だから、
関係あるかも知れないけれど、
接続切れちゃうなんてバグ(MS的には仕様か?)でしょう?
476デフォルトの名無しさん:2005/11/11(金) 16:25:02
>>472
OSはなに?2kだとそんな問題起きないが
477デフォルトの名無しさん:2005/11/11(金) 17:44:23
初めての入門には、winsockとunixのソケットのどちらから先に学ぶのが良さそうでしょうか?
unixでは、open,close,writeを*FILEの代わりに使ってファイル入出力ができます。
windowsでは、コピペでつくったプログラムを少しいじれる程度でしかありません。
478デフォルトの名無しさん:2005/11/11(金) 17:57:57
>>476
2000SP4です。
479デフォルトの名無しさん:2005/11/11(金) 18:21:34
自分で調べると、ネットワークの書籍はどれも値段が高いので慎重です
480デフォルトの名無しさん:2005/11/11(金) 18:27:15
ならばやめてしまえ
481デフォルトの名無しさん:2005/11/11(金) 18:29:08
>>480
人間やめてしまえ
482デフォルトの名無しさん:2005/11/11(金) 18:30:45
もういいや。今まで通り、両方やります。
483デフォルトの名無しさん:2005/11/11(金) 18:31:42
そして、今まで通り有益な情報は出さないようにします
484デフォルトの名無しさん:2005/11/11(金) 18:41:31
>>477
aio_*()のあるやつならUNIXでもいいんじゃない?
シリアスなアプリやサーバでオープンソースなものが多いから参考になるし。

定番書籍は、>>5
>UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
485デフォルトの名無しさん:2005/11/11(金) 18:52:11
ネットワークってUNIX(BSD)が元祖の所が有るからなあ。
各OSの方言から入ると苦労するかも。
486デフォルトの名無しさん:2005/11/11(金) 19:36:54
Winsock2の独自APIにもいいのがあるけれど、
実装の制限が多くていろいろ苦労が多いからねえ。
487デフォルトの名無しさん:2005/11/11(金) 19:38:54
無料で配布して後から勝手に使うなと文句をいう
それがBSDクオリティ
488京子:2005/11/11(金) 20:21:22
あのー心理テストのHP作りたいんですけど、結果のところで答えを
いくつかに分けなきゃいけないじゃないですか?やり方が分からないので誰か教えて頂けませんか?
どこで聞いたらいいか分からないので・・お願いします!
489デフォルトの名無しさん:2005/11/11(金) 20:22:46
490477:2005/11/11(金) 20:27:00
>>484さん
ご親切にありがとうございます。
unixの定番の書籍の方を検討してみたいと思います。(値段は高いスけど ^^;)
明日本屋へ探しに行ってみます
491477:2005/11/11(金) 20:30:32
皆さんも貴重なご意見を、有難うございました。
492デフォルトの名無しさん:2005/11/11(金) 21:16:25
商用UNIXこそが本流だよ。
まがい物にだまされないように。
493デフォルトの名無しさん:2005/11/11(金) 21:17:29
本物はソラリスだけ
でも最近無料とかオープンソースとか下品なことやってるので心配
494デフォルトの名無しさん:2005/11/11(金) 21:46:19
MMO作ろうと思ってんだが、とりあえずマルチスレッドで複数クライアントでチャットが出来るようにしたい。
サーバーはDOSプログラムの方がいいよな?
スレッドの種類はとりあえず、接続・受信・送信スレッドでいいよな
1対1の通信は出来たんだが、複数人でチャットするにはどうすればいい?
非同期だから、select使うのはわかるが・・・
495デフォルトの名無しさん:2005/11/11(金) 21:52:29
>>494
とりあえず>>1
>Winsock Programmer's FAQ (日本語訳)
>http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
は通読しといた方がいいぞ。
これ読まないとできることが分からないから設計できないでしょ。
496デフォルトの名無しさん:2005/11/12(土) 02:13:13
>>487
むしろ日本人のフリーソフトにそういうの多くないか
BSDライセンスだけど転載のときは連絡をするのが「礼儀」だとか
だったらライセンスに書いとけと
497デフォルトの名無しさん:2005/11/12(土) 02:16:31
>>496
あるあるw
498デフォルトの名無しさん:2005/11/12(土) 02:57:30
GPLだけどソースは公開しないし、望外な値段でなら見せるよって所も多い悪寒。
だったらGPLって言うな。
499デフォルトの名無しさん:2005/11/12(土) 03:23:44
そんな事は無いから。馬鹿は黙ってろ。
500デフォルトの名無しさん:2005/11/12(土) 08:30:05
ライセンスの話は専用のスレで。
501デフォルトの名無しさん:2005/11/12(土) 23:29:21
日本人はライブラリに弱いからな
改良は得意だけど本流を作る能力がないってのが原因か。
502デフォルトの名無しさん:2005/11/13(日) 18:44:55
.NET 2.0(Visual C# 2005 Express)でソケット通信のサーバプログラムを非同期式に書こうと思っています。
イメージとしてはGUI(Form)アプリケーションのStartやStopボタンで制御するWebサーバのようなものです。

メインのクラスではBindしてListenしたSocketに対し、コールバック関数を指定してBeginAcceptとしています。
コールバック関数ではEndAcceptして処理してShutdownしてCloseしてからBeginAcceptとしています。

ここでお聞きしたいのですが、メインのクラス側からこのサーバを停止させたいと思うのですが、
そのままメインのクラスでShutdownしてCloseしようとするとコールバック関数のEndAcceptで例外が発生します。
既に閉じられたSocketに対してEndAcceptするからだと思います。

このようなケースではどのようにするのが定石なのでしょうか。
503デフォルトの名無しさん:2005/11/13(日) 18:57:20
え?コネクション毎にListeningSocket閉じてるの?
504デフォルトの名無しさん:2005/11/13(日) 19:14:03
>>502
そのようなケースでは貴方が業界から去ることが定石です。
505デフォルトの名無しさん:2005/11/13(日) 19:34:14
>>494
> とりあえずマルチスレッド

お前みたいなヴォケがいるから
糞スレになるんだよ
506デフォルトの名無しさん:2005/11/13(日) 19:39:17
>>505
お前みたいに釣られる屑がいるから
糞スレになるんだよ
507デフォルトの名無しさん:2005/11/13(日) 21:15:14
508デフォルトの名無しさん:2005/11/14(月) 12:14:39
>>501
ヲレライブラリを作ると、車輪の再発明とか逝って叩こうとする風習が有るのも問題。
なんか天才じゃないとライブラリ作っちゃダメみたいなところはあるよな。

日本発のソフトなんてことごとく批判されるし、育たない。
亜米利加人が適当に作ると、すぐ日本語化対応されて広まるのとは対象的。
509デフォルトの名無しさん:2005/11/14(月) 12:35:37
>>502
このような時マジレスされないのが定石
510デフォルトの名無しさん:2005/11/14(月) 12:49:21
>>508
日本のはただのラッパー
メインルーチン隠しておまけにいくつかの機能潰してそれが何かの役に立つわけ?
汎用ですよー、速いですよーって機能縮小してなにをいってるんだか
向こうはSocketでもDirectXでも機能を付け足していってるのに
日本は元APIに無いからそんな機能は無理ですってアフォだろ
アメリカなんて叩かれることすらなく消えていくのがほとんどなのに
ちょっと注目集めたらすぐに放り出してギャラリーのせいにする
方向性がボケてるから外野の声に惑わされるんだよ
511デフォルトの名無しさん:2005/11/14(月) 13:06:54
>>510
「日本のはただのラッパー」というラップの歌詞かと思った
512デフォルトの名無しさん:2005/11/14(月) 15:16:22
Yo! Yo! 日本人! Yo!
513デフォルトの名無しさん:2005/11/14(月) 16:31:09
>>510
> 向こうはSocketでもDirectXでも機能を付け足していってるのに
> 日本は元APIに無いからそんな機能は無理ですってアフォだろ

SocketのIPv6拡張は日本人の貢献も大きいんだが?
514デフォルトの名無しさん:2005/11/14(月) 17:04:58
IPv6「拡張」って言ってる時点でオリジナルではない希ガス
515デフォルトの名無しさん:2005/11/14(月) 18:35:04
>>512
わろた
516デフォルトの名無しさん:2005/11/14(月) 18:46:15
>>514
> オリジナルではない希ガス

>>510
> 機能を付け足していってるのに
> 日本は元APIに無いからそんな機能は無理です

そもそもIPv6に日本人の寄与があるって書くと、v6だからオリジナ(ry
517デフォルトの名無しさん:2005/11/18(金) 03:37:13
Windows上でIPv6に対応したLinuxのようなtraceroute(UDP撃ってICMP受ける)を作りたいのですが、
IPv4はできたのですが、IPv6がうまいこといきません。
WinsockでIPv6のRAWモードソケットってちゃんと使えるのでしょうか?
やっぱりWinPCapが必要なのかな...
518デフォルトの名無しさん:2005/11/18(金) 05:41:39
AF_INETソケットだと、IPv4しか取得できない。
UNIXの場合は、socket(2)の第三引数にIPPROTO_RAWを指定すると何でも取得できる。

WinPcapはlink-layer network accessを使っている。
519デフォルトの名無しさん:2005/11/18(金) 06:07:34
とりあえず、XP以降じゃなきゃ無理だとは想ったけど
520デフォルトの名無しさん:2005/11/18(金) 23:20:02
IRCの通信内容の概要とかを分かりやすく解説したサイトってないでしょうか
RFCの日本語訳を読んだんですがさっぱりで。
521デフォルトの名無しさん:2005/11/18(金) 23:35:54
>>520
PING
PONG
522520:2005/11/18(金) 23:43:51
>>521
すみません、どういう意味でしょうか
523デフォルトの名無しさん:2005/11/19(土) 00:27:38
>>522
ほんとにRFC読んだのか…?
524デフォルトの名無しさん:2005/11/19(土) 06:24:18
>>516
IPv4にインスパイアされてアドレス空間を増やしてみましたが
IPv4の使用を制限するものではありません
525デフォルトの名無しさん:2005/11/19(土) 09:21:10
むしろIPv4から派生したIPv6が有名になっていくことに
IPv4の方々が喜んでくれるのではとも思っていました
526デフォルトの名無しさん:2005/11/19(土) 11:29:28
そこは「インスパイヤ」と書かないと
527デフォルトの名無しさん:2005/11/19(土) 18:13:24
inspiya
528デフォルトの名無しさん:2005/11/19(土) 21:55:09
WSARecvで非同期で受信する方法としては何がありますか?
CompleteRoutinもWSAOVERLAPPEDのhEventも使わず、
WSAGetOverlappedResutも使わない場合、他に受信する手だてはありますか?
Winsok2はどうもわけがわかりません。
529デフォルトの名無しさん:2005/11/19(土) 22:09:46
他に(winsock非標準ながら)IOCPにする手も無くはないが、
意味的にはGetOverlappedResultと大差ないし。
つーか、自分で挙げた手段では何が不満なの?
530デフォルトの名無しさん:2005/11/19(土) 22:19:30
IOCPってI/O completeってやつですか?
そこらへん解説してる本とかってありませんか?

WinsockやWinowsのI/Oの仕組みが全然わかってないので、
どういう方法で通信が出来るのかが知りたいのです。
Winsock FAQを読むと、もっと効率の良い方法があるのかなと思いまして。
531デフォルトの名無しさん:2005/11/19(土) 23:04:28
つまり、自分で調べる気も勉強する気もないと。
532デフォルトの名無しさん:2005/11/19(土) 23:14:10
ここで聞いたら簡単に勉強できるかなと思いまして
533デフォルトの名無しさん:2005/11/19(土) 23:16:50
自分で調べるの面倒なんですよ
534デフォルトの名無しさん:2005/11/19(土) 23:21:27
「Win32ネットワークプログラミング」にだいたい書いてあった気がする
535530:2005/11/20(日) 09:04:07
そんなに教えて君な書き込みだったでしょうか。
当然、531,533は偽者です。

IOCPに関して書いてある書籍でもあれば買って
それを読んで勉強しようと思っています。
どうも"complate"とか"port"とか一般的な単語のせいで
いまいちgoogleでの検索ヒットも芳しくありません。

もしよろしければ、せめて幾つかお薦めの検索キーワードだけでも教えていただけないでしょうか?

>>534
読んでみるとします。
536デフォルトの名無しさん:2005/11/20(日) 09:16:39
IOCP
CTRL+F
537517:2005/11/20(日) 09:18:52
>>518
AF_INET6を指定すれば、IPv6のパケットを拾える、
ということではないのでしょうか?
MSDNヘルプには出来るとも出来ないとも書いてないもので。

>>519
実行環境はXPのSP2です。
開発環境はVisual Studio .NET 2003 + Platform SDKです。
538デフォルトの名無しさん:2005/11/20(日) 23:53:36

ttp://mzweb2.econ.doshisha.ac.jp/1998/Study/tuusin/tera.html
ここにあるソースをコンパイルして実行すると、

java.net.BindException: Permission denied
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:331)
at java.net.ServerSocket.bind(ServerSocket.java:318)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:141)
at Receiver.mainproc(Receiver.java:123)
at Receiver.main(Receiver.java:137)

このようなメッセージが出てきて実行できません。
このエラーメッセージはMacOSのターミナルからの場合ですが、LINUXマシンからもpaermission系のエラーで動かないようです。

とりあえずこのプログラムを走らせてみたいのですがどこをどう設定すればいいのかよくわからないのです。

ものすごく初歩的な質問だとは思うのですが、どなたかお答え頂けませんか?
539デフォルトの名無しさん:2005/11/21(月) 00:01:53
1024より下のポートにbindするには特権が要る。
Linuxなら、rootか。MaxOSは知らんが、基本がUNIX系なら、
同じように管理者系の権限が要るはず。
540538:2005/11/21(月) 00:30:25
>>539
LINUXではrootログインで解決できました。ありがとうございます!

MacOSではrootログインの仕方がよくわからないので調べてみます。
541デフォルトの名無しさん:2005/11/22(火) 00:35:52
>>540
> MacOSではrootログインの仕方がよくわからないので調べてみます。

sudo
542デフォルトの名無しさん:2005/11/22(火) 01:42:46
winpcap 3.1b4のドライバってカスタムハックドライバだよな?
なんかウイルスがどうのこうのとか出るときあるんだがこいつ
raw socketでも見にいってるのか?ちなみにWin2000でもwinXP SP1でもSP2
でもそうなる。怪しいよな
543538:2005/11/22(火) 18:13:22
>>541
実行できました。ありがとうございます。
544デフォルトの名無しさん:2005/11/22(火) 21:19:24
winpcapは悪用されることも多いのでウィルスとして検出されがち
545デフォルトの名無しさん:2005/11/24(木) 02:19:35
Winでネットワークのドライバを作りたいのですが資料となるものを
集めたいのですがどこから手をつけたらいいのか教えてください。
546デフォルトの名無しさん:2005/11/24(木) 06:30:37
>>545
NDIS
547デフォルトの名無しさん:2005/11/28(月) 22:35:00
現在マルチスレッドにて通信プログラムを作成しているのですが、
IOスレッドとaccept()スレッドに分かれており、ユーザーの入力に
より任意のタイミングでaccept()スレッドを終了させたいのですが、
accept()ではずっと待ち状態になってしまっているのでどうしたら
よいのかが皆目見当もつきません。
何かいい案はないでしょうか?
548デフォルトの名無しさん:2005/11/28(月) 22:43:12
connect()
549デフォルトの名無しさん:2005/11/28(月) 22:43:36
select系でソケットと一緒にパイプやEventを待つ
550デフォルトの名無しさん:2005/11/28(月) 23:00:04
close()で抜けて来るようにお願いする
551デフォルトの名無しさん:2005/11/28(月) 23:19:16
close()さん抜いてください。
552デフォルトの名無しさん:2005/11/29(火) 00:37:33
>>547
退職する。これ名案。
553デフォルトの名無しさん:2005/11/29(火) 07:58:56
>>540
linuxでもsudoの癖付けた方がいいよ。
運用ではroot権限でなんて怖くて動作させないだろうし。
554デフォルトの名無しさん:2005/11/29(火) 08:22:08
>>547
接続をaccept()でなく、select()→accept()で待つ。
555デフォルトの名無しさん:2005/11/29(火) 23:02:43
「TransmitPacketsが使える環境なら使う」を同一実行ファイルでやろうとする場合、
LoadLibrary+GetProcAddressではなく、WSAIoctlにSIO_GET_EXTENSION_FUNCTION_POINTERを渡すのが
正統で保証されたやり方なのね。
前者だと、自動的にリンクされるものと同じDLLを複数回ロードすることになって
両方を経由しての呼び出しで整合性が保証されるのか、若干の不安があるし。
556デフォルトの名無しさん:2005/11/30(水) 03:02:07
>>552
最後のプロセスがcloseすると手放しちゃうからな
それは会社としてまずい
557デフォルトの名無しさん:2005/12/02(金) 00:39:30
SetSockOpt()でSO_RCVBUF(受信バッファ)を32KBに設定したんですが
イーサリアルでwindow sizeを見ても64240(←デフォルト?)から
変更されてませんでした。
GetSockOpt()で取得すると32KBとなってます。

ソケットに対して設定はされているようですが
適用されていないような感じがします。

どなたかなにか分かる人いますか?
[WinXp VC6 MFC CAsyncSocket]

ちなみにレジストリをいぢる(追加する)とちゃんと
window sizeがかわってました。

558デフォルトの名無しさん:2005/12/02(金) 06:36:00
>>557
もう一回勉強しよう。
答え:バッファサイズとウィンドウサイズは関係がない。
559デフォルトの名無しさん:2005/12/02(金) 17:54:31
>答え:バッファサイズとウィンドウサイズは関係がない。
初耳だ。
560デフォルトの名無しさん:2005/12/02(金) 18:23:31
>>560
じゃあどういう関係があるかの説明と>>557の原因についての講釈をキボンヌ。
561デフォルトの名無しさん:2005/12/02(金) 18:55:15
560の講釈を拝聴するスレになりました
562デフォルトの名無しさん:2005/12/02(金) 18:56:13
コネクション成立後にSetSockOptを呼んだに一票。
563デフォルトの名無しさん:2005/12/02(金) 19:20:19
>>559
関係があるって聞いた覚えもないなw
564デフォルトの名無しさん:2005/12/02(金) 19:28:02
565デフォルトの名無しさん:2005/12/02(金) 23:30:52
>>564
アホですか?
566デフォルトの名無しさん:2005/12/03(土) 00:06:49
557です。

>>558
自分は
受信バッファ≒window size
ぐらいに思っていたので全く関係がないことはないと
思っているのですが、いかがでしょうか?
ちょっとして根本的になにかまちがってます?自分...

>>562
さすがにそれはないですw
567デフォルトの名無しさん:2005/12/03(土) 00:41:02
An Interdisciplinary Approach to Designing Fast Networked Devices
これ読んで勉強しているのだがイマイチプログラム書き方がわからない
何か他にいい本紹介してくれないか?
568デフォルトの名無しさん:2005/12/03(土) 00:45:08
>>567
>プログラム書き方がわからない
”3日で覚えるC言語”みたいな本から始めたら?
カッコつけて難しい本読まなくていいじゃん。
569デフォルトの名無しさん:2005/12/03(土) 01:05:03
>>566
SO_RCVBUFはTCPウィンドウサイズとは別ものです。

http://msdn.microsoft.com/library/?url=/library/en-us/winsock/winsock/setsockopt_2.asp

SO_RCVBUF
int
Specifies the total per-socket buffer space reserved for receives.
This is unrelated to SO_MAX_MSG_SIZE or the size of a TCP window.


送信バッファ、受信バッファ、TCPウィンドウの説明は以下にあります。
http://www.7key.jp/nw/window.html#window
570デフォルトの名無しさん:2005/12/03(土) 01:22:59
>This is unrelated to SO_MAX_MSG_SIZE or the size of a TCP window.
これはSO_MAX_MSG_SIZEとは関係なくて、TCP windowのサイズです。
571デフォルトの名無しさん:2005/12/03(土) 01:47:21
>>569
>>564のリンク先に
>DefaultReceiveWindow
>値の種類 : REG_DWORD
>既定値 : 4096/8192/8192
>説明 : フロー制御を適用する前に AFD が接続上でバッファに格納する受信バイトの数。
>アプリケーションによっては、この値を増やすと、パフォーマンスが若干向上することがあります。
>ただし、リソースの使用率が大きくなります。
>アプリケーションからこの値をソケット別に変更するには、SO_RCVBUF ソケット オプションを使用します。
って書いてあるけど、これは大嘘?
572デフォルトの名無しさん:2005/12/03(土) 08:35:05
>>571
お前はTCPの"window"って概念を理解してないんだから、
せめて>>569の挙げてくれたURLを精読するまで発言するな。

>>570
これはSO_MAX_MSG_SIZEにもTCP windowのサイズにも関係ありません。

>>564のページの
> 受信ウィンドウのサイズを特定の値に設定するには、次の 2 通りの方法があります。
> ・"TcpWindowSize" レジストリ パラメータ (「付録 A」参照)
> ・Windows Sockets の "setsockopt" 関数 (ソケット別の設定)
は間違いな。

前者は「提示可能な TCP 受信ウィンドウ の最大サイズ」(動作中小さくなりうる)
後者は「内部バッファの合計サイズ(送受別)」
573デフォルトの名無しさん:2005/12/03(土) 08:35:49
>>566
全く関係がないとは誰も言ってない。
574デフォルトの名無しさん:2005/12/03(土) 08:50:38
>>572
>Windows Server 2003 では、アドバタイズした TCP 受信ウィンドウの既定サイズは、以下の要因に依存します。
>なお、これらの要因は優先度の高い順に示してあります。
>1.接続の SO_RCVBUF WinSock オプション。
>2.インターフェイス別の TcpWindowSize レジストリ設定値
>3.グローバル TcpWindowSize レジストリ設定値
575デフォルトの名無しさん:2005/12/03(土) 09:13:33
>>573
以下の3人は関係がないと思っているようですが。

>>558
>答え:バッファサイズとウィンドウサイズは関係がない。
>>563
>関係があるって聞いた覚えもないなw
>>572
>これはSO_MAX_MSG_SIZEにもTCP windowのサイズにも関係ありません。
576デフォルトの名無しさん:2005/12/03(土) 14:09:18
>>575
「関係」って単語でレス抽出するんじゃなくて、内容よく読んだほうがいいよ。
最後のやつなんてmsdnそのまま訳しただけじゃん。msdnに文句言いたいの?
577デフォルトの名無しさん:2005/12/03(土) 15:25:21
パフォーマンス改善には関係あるけど、直接には関係ないでしょ。
バッファとウィンドウって別の物だし。
578デフォルトの名無しさん:2005/12/03(土) 15:37:37
>>570
英語勉強しなおせ
579デフォルトの名無しさん:2005/12/03(土) 22:58:48
UNIX 系 OS だと、SO_RCVBUF と、受信ウィンドウの最大値は同じだよ。
Windows 系がそうじゃなくて、SO_RCVBUF よりも大きな値になるって
ことの方が驚いた。
580デフォルトの名無しさん:2005/12/03(土) 23:04:28
> バッファとウィンドウって別の物だし。

受信ウィンドウってのは、あとどれくらい受けとれるかを通知する値。
だからバッファサイズよりも受信ウィンドウが大きいというのは、変。
もちろんウィンドウが開ききるまでは
 バッファの空きサイズ>受信ウィンドウ
ということはありうる。でも
 バッファサイズ<受信ウィンドウ
ってことはありえない。

というのが UNIX のソケット実装での常識。
581デフォルトの名無しさん:2005/12/03(土) 23:14:07
OSはLinux、コンパイラはgcc。
struct sockaddr_in構造体を使用する前にmemset(3)でゼロクリアしてる
例をよくみかけますが、なぜゼロクリアしているのですか?

/* 例 */
struct sockaddr_in to;

memset(&to, 0, sizeof to); /* ゼロクリアしてるのはどうしてなぜ? */
to.sin_addr.s_addr = inet_addr(ip);
to.sin_family = AF_INET;
to.sin_port = htons(port);
582デフォルトの名無しさん:2005/12/03(土) 23:18:56
sin_addr.s_addr, sin_family, sin_port 以外のフィールドにも
意味があるかもしれない、あるいは今は意味がなくても、将来
拡張されて意味があるようになるかもしれないから。
ゼロクリアしておけば、そういう場合でも互換性が保障される。
583デフォルトの名無しさん:2005/12/03(土) 23:19:20
予防的措置。

memset後の3行が全体を覆うという保証があるならいいけど、
Linuxのような紛い物のunixだとそうはいかない
584デフォルトの名無しさん:2005/12/03(土) 23:23:05
>>581
そのようなコーディングをよく見かけます。
個人的には、memset関数などによるゼロクリアは好きではない。
あまりお勧めしません。
構造体を初期化するなら、各々のメンバー変数ごとに、初期値を代入すべきであろう。
初期化する必要のないメンバー変数は、初期化する必要もなかろう。

memset関数などによるゼロクリアの利点をあえて挙げるとすると、メモリダンプしたとき、
見やすいということはある。

585デフォルトの名無しさん:2005/12/03(土) 23:23:56
> Linuxのような紛い物のunixだとそうはいかない

別にLinuxに限らず、あの3行で struct sockaddr_in の
全てを多うOSなんてないのでは? もしあったら、OSの
名前とバージョン、struct sockaddr_in のコピペきぼん。
586デフォルトの名無しさん:2005/12/03(土) 23:25:52
俺はさ、sockaddr_inをバイナリで扱う処理系があるから0クリアしろって覚えたんだけど。
587デフォルトの名無しさん:2005/12/03(土) 23:26:47
> 構造体を初期化するなら、各々のメンバー変数ごとに、初期値を代入すべき
> であろう。

現在存在しないメンバー変数が、将来拡張されて増えるという可能性
もある。そういう場合、初期値の代入は、やりたくてもできない。

> 初期化する必要のないメンバー変数は、初期化する必要もなかろう。

ゼロクリアしておかないと、将来メンバーが増えたときに困る。

実際、*BSD では 1990年頃に sin_len というメンバー変数が増えたわけだし。
588デフォルトの名無しさん:2005/12/03(土) 23:27:56
> sockaddr_inをバイナリで扱う処理系があるから

言ってる意味が分かんない。
sockaddr_in はバイナリで扱う処理系しかないと思う。
たとえばテキストとして扱う処理系があるならお目にかかりたい。
589デフォルトの名無しさん:2005/12/03(土) 23:36:27
>>587
>ゼロクリアしておかないと、将来メンバーが増えたときに困る。

どう困るんだ?
具体的な例をあげてほしい。
590デフォルトの名無しさん:2005/12/03(土) 23:39:08
>>589

*BSD での sin_len。
591デフォルトの名無しさん:2005/12/03(土) 23:50:23
>>590
それは例えば、sin_lenが適当な値(256とか)なら問題が発生し、
0ならその問題を回避できるという意味ですか?
592デフォルトの名無しさん:2005/12/03(土) 23:57:21
sin_len の場合は、メンバーが増えた例として挙げただけで、
ユーザランドからカーネルへのインターフェースとしては使わ
れてないと思う。だから、ゴミが入ってても大丈夫な筈…
ちなみに *BSD の sin_len は 1 バイトなので、世にあるほと
んどのマシンでは 256 にはなりえないと思う。

でもどのメンバーでも、将来的にこういう保障が成り立つとは
限らないので、アドレス構造体はゼロクリアしておいた方が
安全じゃないかなー。
593ヨコレス:2005/12/04(日) 00:04:31
ハナシの流れを読まずにレス

初期化されていないフィールドをアクセスする行為は実装バグ
だとおもいますが、バグに耐えられるように初期化して置けと
いうことですか?なんかおかしくないですか?
594デフォルトの名無しさん:2005/12/04(日) 00:09:44
いや実装バグうんぬんじゃなくて、API の仕様として、ゼロクリア
することが求められているかどうかって話だと思う。
特定の OS に限って言えばゼロクリアしてなくても大丈夫な筈
だけど、OS によってはフィールドが増えてることもあるし、
そういう OS では、そういうフィールドに意味があるかもしれない。

*BSD の場合には意味がないみたいだけど、全ての OS で意味が
ないかどうかは分からないでしょ。ゼロクリアしておけば、知らない
OS でも無変更で動くことを期待できるんじゃないかってこと。

OS 限定なら、ゼロクリアしなくても大丈夫でしょ。きっと。
595デフォルトの名無しさん:2005/12/04(日) 00:16:24
仕様では、リザーブされた引数やメンバ変数は0セットしとけ、というのが多いね
拡張したときに、0だったらこれまでどおりの挙動にするということだろう

明示されてるのがベストだが
なくても暗黙の了解ってことで0にするなあ

なんかC言語スレっぽいね
596デフォルトの名無しさん:2005/12/04(日) 00:23:15
>>595
>仕様では、リザーブされた引数やメンバ変数は0セットしとけ、というのが多いね
ほう、そうなのですか。ゼロクリアは仕様なのですか!?
597デフォルトの名無しさん:2005/12/04(日) 00:26:35
ルータ側でパケット圧縮効率がよくなるからでは?
598デフォルトの名無しさん:2005/12/04(日) 00:33:35
文盲?
599デフォルトの名無しさん:2005/12/04(日) 00:35:38
*BSD の socket のドキュメントがゼロクリアしてるから、
もともとは仕様だったんじゃないかなあ。

>>597
sockaddr_in 構造体そのままで、ネットワークに送ることは
ないから全く関係ない。送るのは sin_addr.s_addr と
sin_port の部分だけ。
600デフォルトの名無しさん:2005/12/04(日) 00:54:05
スティーヴンス本くらい読んでおこうね。
601デフォルトの名無しさん:2005/12/04(日) 01:13:25
Stevens は bzero() しているから、あの本で勉強した人は
みんなゼロクリアしてるだろうね。
602デフォルトの名無しさん:2005/12/04(日) 01:36:57
ゼロクリア処理は処理が重くなるの?
603デフォルトの名無しさん:2005/12/04(日) 01:41:25
そういう話ではない。
ユーザに分かるレベルでは重くならない。
604デフォルトの名無しさん:2005/12/04(日) 01:42:49
CreateGame〜陸海空オンライン〜
ただ今、プログラマ募集中!力ある奴だけ来いw
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
605デフォルトの名無しさん:2005/12/04(日) 01:45:56
チアリーダー部門(女性3名)、広報担当(女性1名)
606デフォルトの名無しさん:2005/12/04(日) 01:58:56
慰安部門(女性4名)
607デフォルトの名無しさん:2005/12/04(日) 02:15:21
>>580
だからさ、バッファサイズを32KBに増やしたからって、通常の使い方で受信ウィンドウがいきなり大きくなったりはしないでしょ。
タイムシェアリングである間隔で定期的にしか取りに逝けない時に、取りこぼすのを回避したくてバッファサイズを増やすのに、受信ウィンドウも連動して大きくなったら増やしたのに取りこぼしてしまって意味無いじゃん。
608デフォルトの名無しさん:2005/12/04(日) 02:26:07
>>607
そうじゃなくて、バッファが32KBしかないのに、
受信ウィンドウサイズが64KB近くもある(>>557)
のが変だって言ってるの。
バッファサイズ以上に受けとれるわけないでしょ?
609デフォルトの名無しさん:2005/12/04(日) 02:37:36
なんかUNIX板某スレの422に誤爆した香具師がいるような気が
610デフォルトの名無しさん:2005/12/04(日) 02:49:24
俺もそれ見てここの誤爆と思った>spamとWordについて話し合うスレ
611デフォルトの名無しさん:2005/12/04(日) 03:21:46
>>609->>611はFreeBSDユーザなのよん
612デフォルトの名無しさん:2005/12/04(日) 13:15:55
DirectPlayまじいらね
613デフォルトの名無しさん:2005/12/04(日) 15:20:29
バイナリとして扱う云々ってあれじゃね
バイトオーダのみ逆で実行バイナリは互換という環境。
614デフォルトの名無しさん:2005/12/04(日) 18:26:15
ゼロウィンドウって何やってるのよ
通信できるかどうかピンポンダッシュしてるの?
615デフォルトの名無しさん:2005/12/04(日) 19:56:44
>>608
 バッファサイズ32KBにしてもウィンドウサイズ64KBのままだった
 ↓
 関係ない(→から変わるわけがない)
 ↓
 「関係ないなんて初耳だな」(こっから話がずれ始める)
サイズが連動して変わらない理由として「関係がないから」と言ってるのを読まず、
「いやこういう関係がある」と別の話をしだして話をこじらせてる人がいるのです。
言葉の不足につけこんだ揚げ足取りですね。

580は補足のつもりだったんだろうけど、「初耳だな」の人のせいで、反論のつもり
だったと勘違いされたんですよ。ID出ない板ではレスに注意が要りますね。
616デフォルトの名無しさん:2005/12/04(日) 22:34:15
Linuxでデフォルトゲートウェイを取得するCプログラムを作りたいと思っています。

一応Rubyでこんな感じでやれば良いということは解ったのですが…
IO.foreach('/proc/net/route') do |x|
a=x.split(/\t/)
if a[1] == '00000000'
p a[2].scan(/../).collect{|i|i.hex}.reverse.join('.')
end
end

これをCで実現するにはどうしたら良いのか…
なにか良い/proc/net/routeの解析方法は無いでしょうか。
617デフォルトの名無しさん:2005/12/04(日) 23:01:57
このスレには時々英語のできない人と日本語のできない人が
偉そうにレスするから話がこじれるんだろ
618デフォルトの名無しさん:2005/12/04(日) 23:22:17
>>616
CでRuby呼べばおk
619デフォルトの名無しさん:2005/12/05(月) 04:06:23
俺は英語も日本語もできるけどな
620デフォルトの名無しさん:2005/12/05(月) 08:41:01
>>618
Ruby環境を入れることが出来ない制約条件があるので…
Cオンリーで書かなくてはいけなかったり。
字句解析をCでするのは大変そうだなぁ…
621デフォルトの名無しさん:2005/12/05(月) 22:31:37
>>617
君の日本語もおかしいけど、意味は通じる。
寛大な俺は許してやるよ。
622デフォルトの名無しさん:2005/12/05(月) 23:25:31
>>620
netstat -rのコード頂いちゃえば?
623デフォルトの名無しさん:2005/12/05(月) 23:32:00
>>622
routeコマンドを参考にして、こんな感じで出来ました。ありがとうございます。

FILE *route;
char g[MAX_VAL][MAX_LEN];
char gwc1[3],gwc2[3],gwc3[3],gwc4[3];
int gw1,gw2,gw3,gw4;

route=fopen("/proc/net/route","r");
if(route == NULL){
return -1;
}

while(fscanf(route,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
&g[0],&g[1],&g[2],&g[3],&g[4],&g[5],&g[6],&g[7],&g[8],&g[9],&g[10]) != EOF){

if(strcmp(g[1],"00000000") == 0){
gwc1[0]=g[2][6]; gwc1[1]=g[2][7]; gwc1[2]='\0';
gwc2[0]=g[2][4]; gwc2[1]=g[2][5]; gwc2[2]='\0';
gwc3[0]=g[2][2]; gwc3[1]=g[2][3]; gwc3[2]='\0';
gwc4[0]=g[2][0]; gwc4[1]=g[2][1]; gwc4[2]='\0';

gw1=strtol(gwc1, NULL, 16); gw2=strtol(gwc2, NULL, 16);
gw3=strtol(gwc3, NULL, 16); gw4=strtol(gwc4, NULL, 16);

printf("%d.%d.%d.%d\n",gw1,gw2,gw3,gw4);
}
}
fclose(route);
624デフォルトの名無しさん:2005/12/06(火) 00:52:20
ムズス
625デフォルトの名無しさん:2005/12/07(水) 01:23:04
MFCスレかもしれんけど

CMySocket : public CSocket { hoge... } ってかんじでCSocketから派生させたクラスCMySocket。
あるスレッドで、 CMySocket *aaa = new CMySocket(); と、インスタンスを生成して、
別スレッドから CMySocket.CreateだとかConnectだとか呼び出すと、もれなく挙動不振になる。

CSocketは同じスレでしか使えないとかいう厳しい掟でもあるの・・・??
626デフォルトの名無しさん:2005/12/07(水) 02:12:49
627デフォルトの名無しさん:2005/12/07(水) 02:18:48
MFCなんてうんこ使うなよ
628デフォルトの名無しさん:2005/12/07(水) 02:22:24
>>625
MFCのクラスオブジェクトを共有するマルチスレッドセーフなコーディングはややこしいから、
MFCのクラスオブジェクトはスレッド間で共有しない!(それじゃあ、回答にならんか)
629デフォルトの名無しさん:2005/12/07(水) 02:38:11
ていうか、実用的には
CSocketはメッセージループが動いているスレッド以外使い物にならないと思った方が良い。

より正確には
CSocketは[メッセージループが動いているスレッド以外]使い物にならない[と思った方が良い]。
だが。
630デフォルトの名無しさん:2005/12/07(水) 02:40:52
要するに CSocket は使い物にならない!
631デフォルトの名無しさん:2005/12/07(水) 03:29:56
Windowsで組むんならWinSock直叩きが基本だろ
632625:2005/12/07(水) 08:56:04
サンクス…。まじやる気なくすわ。

どうも見ても糞ライブラリです。
本当にありがとうございました。
633デフォルトの名無しさん:2005/12/07(水) 10:20:18
何か良いライブラリはないのかなと思っていたけど、Winsock直叩きが基本なのか。
もっともやる事って、繋いでsendするだけに見えるけど、甘いんだろうな…。
634デフォルトの名無しさん:2005/12/07(水) 13:35:15
>>633
sock直叩きしなくても済む良いライブラリを作って公開してくれ。
635デフォルトの名無しさん:2005/12/07(水) 15:25:45
繋いでsendする以外に何かすることあったっけ
636デフォルトの名無しさん:2005/12/07(水) 16:57:13
かなりデカいけどACEとかいうライブラリがあるよ。
使ったことある人、いる?

まあちょっとした仕事なら、socket直叩きでいいだろうし、その簡単なラッパーぐらいは
必要に応じて皆作っているとは思うがね。

MFCのSocketラッパーは糞ってのは常識っす。
637デフォルトの名無しさん:2005/12/07(水) 20:16:02
>>635
recvとか?
638デフォルトの名無しさん:2005/12/07(水) 23:02:33
低レベル関数なんだから、いろいろ制御できるんじゃね?
accept,bindとかもあるじゃん。
639デフォルトの名無しさん:2005/12/07(水) 23:03:24
>>636
漏れACE使った。詳細は社外秘のため教えられない。
640伝説新人タクシ:2005/12/07(水) 23:11:48
上に出たソケット関数は覚えるべき
サーバとクライアントが繋げられるのを理解するのにもね
そういうのを知ってると後々イメージを広げられるよ
641デフォルトの名無しさん:2005/12/07(水) 23:21:27
ふつーにTCPを使う場合はsendとrecv
サーバーも考慮すればbindとlistenとaccept
本質的にはこれだけなんだけど

こいつらはブロックするという特徴があって
それを回避するため、あるいは効率よく動かすために
覚えないといけないことが、環境依存なものも含めててんこ盛り。
642デフォルトの名無しさん:2005/12/07(水) 23:24:39
ノンブロッキングIOしか使ったことねーや・・・
643デフォルトの名無しさん:2005/12/08(木) 00:47:50
パケットのフィルタ作ろうと思うんだけどね
unsiged char *でデータ見ていって
該当offsetのデータだったらね

if(daga[4] == 0x44)とかやってるけどなんか遅いのね
もっと高速化する方法おちえて

644デフォルトの名無しさん:2005/12/08(木) 01:20:23
>>642
パフォーマンスの悪いシステムをお作りになられてるのですか?
645デフォルトの名無しさん:2005/12/08(木) 01:30:01
>>644
高スケーラビリティ確保のために、1スレッドで複数ソケットに
対する多重監視をする仕組みにしておく、という手法は、あり
がちだと思うのですが。

あなた、10000ユーザ同時接続のサーバーの稼動に10000スレッド
割り当てるんですか?
646デフォルトの名無しさん:2005/12/08(木) 01:31:48
ノンブロッキングI/O ≠ 非同期I/O
>>644は、非同期I/Oを使えやゴルァ
といいたいのかもしれない
647デフォルトの名無しさん:2005/12/08(木) 01:36:42
>ノンブロッキングI/O ≠ 非同期I/O

ノンブロッキングI/Oって非同期I/Oの実現手段じゃないっけ。
648デフォルトの名無しさん:2005/12/08(木) 01:36:49
>>645
10,000スレッドの解決策が多重監視のみだと言ってる気がしてならんのだが?
今一歩考えを深めたまえ。
649デフォルトの名無しさん:2005/12/08(木) 01:37:51
>>647
何だそれは。
650デフォルトの名無しさん:2005/12/08(木) 01:51:59
>>647
Stevens本でも嫁
>>645
preforkとかthreadpoolってしってる?
651デフォルトの名無しさん:2005/12/08(木) 02:01:04
>>650
おいおい、非同期I/Oって、ノンブロッキングだけじゃないぜ。
Windowsで普通に使われている完了待ちも、非同期I/Oの一つだろ。
もちろん、Unix系でもaioとして、Stevens本でも触れているはずだが?

それに、Stevensを読むまでもなく
1接続1スレッド/プロセスという形態の非効率さは
ちょっと考えるだけでもわかりそうなものだが。
652デフォルトの名無しさん:2005/12/08(木) 02:02:04
間違ったスレッドプールの設計を何度も見てきた。
653デフォルトの名無しさん:2005/12/08(木) 02:04:19
>>651
だから何言ってんだよって。
要件に応じて設計するんだから、お前の言ってる一般論での
効率・非効率なんて変わるだろそんなもん。
一般論だけで決めつけるなよ。
654デフォルトの名無しさん:2005/12/08(木) 02:05:39
何を求めてるかをハッキリさせずに、ちょと考えるだけでもと考えることが
考え早まりすぎ。お前、すぐコーディングに取りかかる性質だろ?
655デフォルトの名無しさん:2005/12/08(木) 02:07:20
と、最初に
一般論どころか、パフォーマンスが悪いものと決めつけて>>644を書いた人が申しております。

説得力抜群ですな。
656デフォルトの名無しさん:2005/12/08(木) 02:08:45
以上、ジサクジエンデシタ。
657デフォルトの名無しさん:2005/12/08(木) 02:09:53
必要条件と十分条件の違いすら分からない人が居るようですね
658デフォルトの名無しさん:2005/12/08(木) 02:12:30
会話が全くかみあってない気がするんですが。
659デフォルトの名無しさん:2005/12/08(木) 02:37:26
お祭りワショーイ?
660デフォルトの名無しさん:2005/12/08(木) 03:05:08
ま、パフォーマンスの問題は宗教論争に近いからな。
661デフォルトの名無しさん:2005/12/08(木) 09:15:40
662しぃ:2005/12/08(木) 11:09:27
質問なんですがmoteでセンサネットワークを作ってデータをPC側に
送信したいんですけど、何から手をつけていいかまったくわかりません。
そこら辺に詳しい方がいましたら連絡頂けるとうれしいです。
663デフォルトの名無しさん:2005/12/08(木) 11:40:28
メールを大量に送るメールボムをプログラムしたいんです。どうやればよろしいでしょうか?力を貸してください。
664デフォルトの名無しさん:2005/12/08(木) 11:43:21
通報しました。
665デフォルトの名無しさん:2005/12/08(木) 12:00:47
まさか自分に送るのも違法?
666伝説新人タクシ:2005/12/08(木) 12:06:00
はい。モード: プロミスキャスですから〜!
667デフォルトの名無しさん:2005/12/08(木) 12:16:24
よくわかんないけどダメなんだ…

変な事聞いてごめんなさい。
668伝説新人タクシ:2005/12/08(木) 12:25:10
ジョークにジョークで返したつもりだったが。
例えば、インターネットを使って離れた「自分の」PCに送りつける。
これはネットワークに負荷がかかり、プロパイダや他人の迷惑。
ウィルスを送る場合なら、盗聴している人が感染する。
どっちもよくないかと。
そのパケットがマシンから外へ全く送られないならいいんじゃね?
669デフォルトの名無しさん:2005/12/08(木) 12:35:48
アホは無理して回答側に回らなくていいよ
670伝説新人タクシ:2005/12/08(木) 12:41:56
あなたはアホではないのですね
671デフォルトの名無しさん:2005/12/08(木) 12:52:06
>>662
んなもんベンダに問い合わせろよ。
672デフォルトの名無しさん:2005/12/08(木) 13:07:03
>>663
自分に向けてメッセージを送るなら、こうだ。

for(;;) SendMessage(hWnd,rand(),rand(),rand());
673デフォルトの名無しさん:2005/12/08(木) 13:08:36
学校でメールはごくたまに届かない事がある。と教わったので、実験してレポートとして出してみようと思いまして…。メールボムを使うのが調べるのにちょうどいいと思ったんです。

1つ1つ送るのは流石にダルくて…他にいい案ありましたら教えてください。
674デフォルトの名無しさん:2005/12/08(木) 13:13:36
>>673
他人に迷惑かけるな馬鹿
675デフォルトの名無しさん:2005/12/08(木) 13:15:29
ローカルでメールサーバ立てて
スクリプトでメール送信しまくれ
676伝説新人タクシ:2005/12/08(木) 13:20:20
無闇にトラフィックを激増させるな。
他の生徒や担当しているシステム管理者に迷惑だ。
そういうことすると、フィルターで弾かれるぞ。
つか、それ自体が十分、要因になるじゃないか
677デフォルトの名無しさん:2005/12/08(木) 13:22:46
>他の生徒や担当しているシステム管理者に迷惑だ。
ヒント:テスト専用のスイッチングハブにぶら下げるだけ
678伝説新人タクシ:2005/12/08(木) 13:29:56
いや、学校鯖へ送るのかと思ってた。
>ヒント:テスト専用のスイッチングハブにぶら下げるだけ
レイヤ3スイッチ?
679デフォルトの名無しさん:2005/12/08(木) 14:01:09
>>673
1. 自分でMTAの動いているサーバを立ち上げる。
2. メールを送る。
3. メールをPOPで取得する前にサーバのハードディスクを破壊する。
というわけで、板違いです。
680デフォルトの名無しさん:2005/12/08(木) 14:18:37
spam業者の案件でも取ったのか?
「特定電子メールの送信の適正化等に関する法律」違反で摘発されるのがヲチ。
681デフォルトの名無しさん:2005/12/08(木) 16:27:48
DNSサーバのソースコードが載っているページを教えて下さい。
BIND以外のもので。
682デフォルトの名無しさん:2005/12/08(木) 16:38:38
>643
もっと詳しく書いてくれないと無理
683デフォルトの名無しさん:2005/12/08(木) 17:06:07
>>681
sf.netで、DNSで検索すればいいじゃん。
2ちゃんねる的にはMaraDNSがお勧め。
684デフォルトの名無しさん:2005/12/08(木) 17:09:43
>683
そのページは知りませんでした。
返信ありがとうございます。

685デフォルトの名無しさん:2005/12/08(木) 17:13:18
ルートサーバーって何使ってるんだろ?
BIND?
686デフォルトの名無しさん:2005/12/08(木) 23:25:38
プログラマの先輩がネットワークの知識がまるでないのに無茶な要求ばかりする件についてどう思いますか
687デフォルトの名無しさん:2005/12/08(木) 23:29:51
日々勉強。今質問してる間もだ。
まずはスレッドを2,3常駐させ、それぞれがselectで処理する鯖を作ってみよう。
688デフォルトの名無しさん:2005/12/08(木) 23:57:05
>>662 いいから たかあき はもう来るな
689デフォルトの名無しさん:2005/12/10(土) 22:41:35
UNIXネットワークプログラミング は非常にいい本なんだが
いたるところに必ず出てくるオレ関数がうっとおしい
それに目を瞑れば、多分世界一わかりやすくてためになる
690デフォルトの名無しさん:2005/12/10(土) 22:45:37
必ずラップするところか?
691デフォルトの名無しさん:2005/12/10(土) 22:47:24
>>690
そそそそれだだだ
692デフォルトの名無しさん:2005/12/10(土) 22:51:24
性善説はよくないというポリシーがあったんだろうな。
693デフォルトの名無しさん:2005/12/10(土) 23:49:14
海外でもいいんで誰かMMORPG用のサーバプログラム解説してるとこしらないですかね
694デフォルトの名無しさん:2005/12/10(土) 23:52:41
MMO用のって決め付ける必要がそもそも無いでしょ
大規模なチャットをどう捌くかとかそういう路線だから
695デフォルトの名無しさん:2005/12/11(日) 00:01:57
なんかそういう本をつい最近本屋でみかけたな。
著者が韓国の人で、韓国のなんちゃらってゲームの人。
全然知らないけど。
696デフォルトの名無しさん:2005/12/11(日) 00:12:48
>693
RPGもFTPも基本は一緒だからな、とりあえず解説ページ
ttp://css.bcc.cc/multiplayer_networking.html

具体的なソースがみたいんだったらもっと別のところ行けよ?
697デフォルトの名無しさん:2005/12/11(日) 00:13:39
FTP→FPS
ファイル転送プロトコルはこの際関係ないね
698デフォルトの名無しさん:2005/12/11(日) 00:15:22
シングルラインテキストでパケット作るならどんな仕様がオススメ?
command<Base64>とか考えてるんだけど、もっとヨサゲな規格があったらおせーて。
699デフォルトの名無しさん:2005/12/11(日) 00:15:59
パケットっていいかたは変か。メッセージ?
700デフォルトの名無しさん:2005/12/11(日) 00:44:08
ここマジレスありですか?
701デフォルトの名無しさん:2005/12/11(日) 00:44:53
ありあり
702デフォルトの名無しさん:2005/12/11(日) 00:46:09
勇者と変体はマジレスOK
それいがいはだめ
703デフォルトの名無しさん:2005/12/11(日) 00:47:57
質問していいですか?2chもcgiも初心者です。

704デフォルトの名無しさん:2005/12/11(日) 00:53:41
フリーで配付されてるFLASHのSWFファイルとHTMLファイルありますよね
OSはFedora4でapacheでcgi-binにperlのスクリプト内に配布されてるHTMLをコピペで貼り付けたのですがうまく動作しません。
/var/www/htmlにファイルを置くと正常に動作するのですが?
要はFLASHをperlスクリプトで動かしたいのですが?
何か御教授いただけませんか?

705デフォルトの名無しさん:2005/12/11(日) 00:57:58
ですが?って半疑問系攻めは先鋭的だな
Flashはサンドボックスの一環でドメイン制限があるからそっちじゃね?
サブドメイン間でしか一緒で居られないはず。
706デフォルトの名無しさん:2005/12/11(日) 00:58:41
つーか、Webprog板の方が適切だと思うよ。
707デフォルトの名無しさん:2005/12/11(日) 01:00:43
Base64って解凍速度速いの?
708デフォルトの名無しさん:2005/12/11(日) 01:06:30
うーーーわかりません。。。
FLASH サンドボックスでグぐってみたのですが。。。。
何かセキュリティーが関係ありそうですね?
つまりスクリプトでFLashを動かすとセキュリティー上問題ありという事なのでしょうか?

709デフォルトの名無しさん:2005/12/11(日) 01:06:32
>>707
何を基準に?
710デフォルトの名無しさん:2005/12/11(日) 01:09:29
>>709
何を基準にしたら良いのか・・・
URLのescape文字と比べて。
711デフォルトの名無しさん:2005/12/11(日) 01:28:53
どっちも簡単な処理だし、ほとんど違いないと思う。
712デフォルトの名無しさん:2005/12/11(日) 01:34:49
・文字種の使用制限を受けない
・というかデータ全般の形式に制限を受けない
・コンバートのAPIが簡単に手に入る
・高速
とまあ、データ量4/3倍のデメリットなんて微々たるものだよね
713デフォルトの名無しさん:2005/12/11(日) 01:35:53
>>707
っつーか解凍ってなんだよ
714伝説新人タクシ:2005/12/11(日) 01:43:04
不思議なくらいにプロトコルと圧縮を誤解してるのか?
むしろ、Base64は"解凍"するとデータ量が小さくなるんだが。
715デフォルトの名無しさん:2005/12/11(日) 01:48:21
ん?氷だってそうじゃん
716デフォルトの名無しさん:2005/12/11(日) 02:28:35
>>714
便宜的に解凍という言葉を使っているに過ぎない。
717デフォルトの名無しさん:2005/12/11(日) 02:35:24
>>716
なら、便宜上、もうその表現はやめた方がいいな
718デフォルトの名無しさん:2005/12/11(日) 02:36:52
デコード=解凍だろ、何が問題あるんだか
719デフォルトの名無しさん:2005/12/11(日) 02:39:09
>>718
今後は デコード=復号 という表現に切り替えるんだな
円滑なコミュニケーションを取りたかったらな

おっと、キレるなよ? これはお前に対する愛の忠告だぜ?
720デフォルトの名無しさん:2005/12/11(日) 02:40:25
円滑なコミニュケーションはとれてるじゃん
721デフォルトの名無しさん:2005/12/11(日) 02:45:36
まあ、少なくとも一般的には
解凍というのはextractを指す言葉で、decodeを指す言葉ではないな。
722デフォルトの名無しさん:2005/12/11(日) 02:50:02
アーカイブを圧縮ファイルと訳すのも問題あるし
圧縮ファイルを複合するのを解凍と訳すのも問題ある
問題は山済みだがフィーリングで分かればどうということはない
723デフォルトの名無しさん:2005/12/11(日) 03:06:14
結局は便宜上じゃねーか
724デフォルトの名無しさん:2005/12/11(日) 03:35:49
日本語を説明するのに英語を持ち出す必要がある訳ですね
725デフォルトの名無しさん:2005/12/11(日) 03:37:45
>>722
圧縮すらされていないファイルを復号するのを”解凍”と呼ぶのはさらに問題あるだろ
726デフォルトの名無しさん:2005/12/11(日) 03:59:11
アーカイブするという日本語がないな。これが混乱の元か。
「書庫に入れる」というのが本来の意味なんだけどね。
727伝説新人タクシ:2005/12/11(日) 04:25:24
GUIの弊害ともいえるのではないかと思うのだが、
(窓OSの見かけとか立派だもんなあ)
利用者はコードや内部が何をしているかはどうでもいい。
解凍だろうと復号だろうと同じ。
便宜上という言葉が出たが、いいたいことは話の流れからわかるだろうけど、
新しい別の話になるようならオレはそれなりの説明がほしい場合があるな。
728デフォルトの名無しさん:2005/12/11(日) 06:20:44
>>727
>利用者はコードや内部が何をしているかはどうでもいい。
>解凍だろうと復号だろうと同じ。
ここはプログラム板だ
おまえのようなヤツはパソコン一般板へ行け
729デフォルトの名無しさん:2005/12/11(日) 08:58:03
>>728
利用者がコードや内部で何をしているかを意識しないといけないプログラムを書くのか?
730デフォルトの名無しさん:2005/12/11(日) 09:02:59
この板で「利用者」と言えば「プログラム書かない香具師」のことでは?
731デフォルトの名無しさん:2005/12/11(日) 09:38:41
>>729
そんな話はしてない。プログラマ同士のコミュニケーションにどんな言葉を使うか、だよ
732デフォルトの名無しさん:2005/12/11(日) 09:58:11
 てす
733デフォルトの名無しさん:2005/12/11(日) 10:01:01
日本語が不自由なようだが
頭も不自由らしいな。
734デフォルトの名無しさん:2005/12/11(日) 10:02:07
interface 暗号化 {
    復号化();
};

interface 圧縮 implements 暗号化 {
    解凍();
};

圧縮は復号化でも解凍でもできるが、暗号化は復号化しかできない。
こんな感じ?
735デフォルトの名無しさん:2005/12/11(日) 10:06:59
ところでおまいらBase64は暗号化じゃないぞw
736デフォルトの名無しさん:2005/12/11(日) 10:16:48
細かいが、暗号化の反語は復号だよな。非対称なのが美しくないが
737デフォルトの名無しさん:2005/12/11(日) 10:24:28
暗号化のとこを符号化とでも読んでくれくれ(;´Д`)
738デフォルトの名無しさん:2005/12/11(日) 10:35:40
符号化 ⊇ 暗号化
だから厳密には同じではないな。
Base64は符号化はされているが暗号化はされていない例として挙げられるな。
739デフォルトの名無しさん:2005/12/11(日) 10:49:31
お前らマ板行けよ。
740デフォルトの名無しさん:2005/12/11(日) 10:49:40
interface 暗号化 implements 符号化 {
741デフォルトの名無しさん:2005/12/11(日) 12:10:49
interface A implements B って
A ⊇ B だよね
class A extends B
みたいに
742デフォルトの名無しさん:2005/12/11(日) 15:31:05
俺便宜上とかいった奴だけど
一晩寝て目覚めた


どうでもいい・・
743デフォルトの名無しさん:2005/12/11(日) 15:32:27
目冷めなくていい
一生寝てて欲しい
744デフォルトの名無しさん:2005/12/11(日) 15:38:29
Javaで表現するのは止めようぜ。馬鹿になる。
745デフォルトの名無しさん:2005/12/11(日) 15:41:37
>>744がバカということだけ証明できるレスだな
プログラマは言語を選ばない
746デフォルトの名無しさん:2005/12/11(日) 15:44:37
バカはお前だ。適した言語を選べ。
747デフォルトの名無しさん:2005/12/11(日) 15:48:21
JAVAってどういうスクリプト言語なんですか?
748デフォルトの名無しさん:2005/12/11(日) 15:50:54
>>746は厨論争をしたいさかりの厨だからな。
749デフォルトの名無しさん:2005/12/11(日) 15:52:26
>>743
人生思い通りになると思うな馬鹿やろう
750デフォルトの名無しさん:2005/12/11(日) 15:53:54
>>748
自己紹介乙。
751デフォルトの名無しさん:2005/12/11(日) 15:58:22
じゃあ744が厨と認めたようなので再開
752デフォルトの名無しさん:2005/12/11(日) 16:00:57
つーかスレ違い
753伝説新人タクシ:2005/12/11(日) 16:18:44
>>747
スレ違っただけなの私たち。ここで扱っているのはJavaです。
pc8.2ch.net/test/read.cgi/tech/1132601948/l50
かJavaスクリプトならWebProg板で訊きなおすことを勧めます。
754デフォルトの名無しさん:2005/12/11(日) 17:06:43
バカはWebProg板逝け
戻ってくるな
755デフォルトの名無しさん:2005/12/11(日) 17:12:46
へいへい、馬鹿騒ぎはその辺にしておいてくれ
ところで質問よろしいか?
756デフォルトの名無しさん:2005/12/11(日) 17:14:01
どうぞ
757デフォルトの名無しさん:2005/12/11(日) 17:19:57
ではあらためて
JAVAってどういうスクリプト言語なんですか?
758デフォルトの名無しさん:2005/12/11(日) 17:21:30
unix系で使うalarm()と同じ機能の関数をvcでも使いたいのですが、
なんという名前の関数なんでしょうか?
759デフォルトの名無しさん:2005/12/11(日) 17:32:31
>>757-78 WebProg板へどうぞ
760デフォルトの名無しさん:2005/12/11(日) 17:54:24
>>757
面白すぎw
761デフォルトの名無しさん:2005/12/11(日) 18:17:53
んじゃ、お言葉に甘えて
Rawソケットを使ってPingプログラムを作ろうと思っているのですが
WinXP SP2ではRawソケットが廃止されたと聞きました
だったら、ICMPヘッダはどうやって作ったらいいのでしょうか?
762デフォルトの名無しさん:2005/12/11(日) 18:53:19
自称中級者の巣窟2chム板で聞いていい内容じゃないな
763デフォルトの名無しさん:2005/12/11(日) 19:06:49
もうこのスレダメポ
まともな会話が出ない

スレ違い、もしくはたまに出る本線の話題をも茶化す。

>>761
自分でヘッダ作るのは諦めれ
Pingは専用のがあるでしょ
764デフォルトの名無しさん:2005/12/11(日) 19:19:26
>758
ブロックコールを中途脱出させる目的でのalarmの同等品は、
Winsockには無かった気がする。
EINTRはブロッキングフックの絡みしか無いはずだし。
765デフォルトの名無しさん:2005/12/11(日) 19:31:05
>>761
まじ?

Rawソケット廃止されたのは随分前なんだが
それでもあの方法を使えば出来ていた

ひょっとしてその方法も禁止されたという意味?
766デフォルトの名無しさん:2005/12/11(日) 19:36:17
あの方法
その方法
どの方法?
767デフォルトの名無しさん:2005/12/11(日) 20:55:28
icmpsendechoとか
768デフォルトの名無しさん:2005/12/11(日) 22:01:37
>763,>765,>767
わかりました
XP SP2に関しては自前でヘッダ作らずにAPIに任せることにします
どうも、ありがとうございました
769デフォルトの名無しさん:2005/12/11(日) 22:03:27
でも、icmp.dllは将来的にwindowsから消される…とか見たことがあるけど。
770デフォルトの名無しさん:2005/12/11(日) 22:04:58
windows捨てればおkwwww
771デフォルトの名無しさん:2005/12/11(日) 22:12:09
それを捨てるだなんてとんでもない!
772758:2005/12/11(日) 22:58:48
ソケット管理スレッドを立てることにしました。

struct tag {
SOCKET sock;
DWORD t;
};
struct tag foo;
構造体にソケットを含めておいてrecv()を呼び出す直前に
foo->t = timeGetTime();
にて時間を取得。

管理スレッドにてソケットが有効かつtimeGetTime() - foo->t > 10 * 1000
ならば障害が発生したとしてclosesocket(foo->sock)とする。

こんな感じで解決しました。
お騒がせいたしました。
773デフォルトの名無しさん:2005/12/11(日) 23:40:00
>>758
ない。
自分の場合は、ノンブロッキング方式にして、自分でタイムアウト監視をした。
774デフォルトの名無しさん:2005/12/11(日) 23:53:27
select関数様には本当にお世話になりっぱなしで、ええもう
775デフォルトの名無しさん:2005/12/11(日) 23:57:06
Winsock2での送受信に限るなら、SO_RCVTIMEO、SO_SNDTIMEOとかあるけどね。
776デフォルトの名無しさん:2005/12/12(月) 00:14:59
>>772
それ使えば、connect()を中断…タイムアウトを変えることも可能かな?
777デフォルトの名無しさん:2005/12/12(月) 00:30:22
ノンブロッキングで思い出したが
昔おれは、「ノンステップバス」を「ノンストップバス」だと本気で勘違いして
怖くて絶対乗らないようにしてた。なんであのバス事故らねーんだ? と
周りが危険視して避けるせいかな? とか思ってた。
778デフォルトの名無しさん:2005/12/12(月) 00:40:29
ちゃんと信号では止まるよ
基本的にバス停に止まらないだけ
779デフォルトの名無しさん:2005/12/12(月) 11:43:10
>776
できましたよ。
個人的にはconnect()のタイムアウト時間を変える必要性がわかりませんが・・・
780デフォルトの名無しさん:2005/12/12(月) 19:15:06
connect()のタイムアウト設定に>>772みたいな回りくどいことするのか。。
781デフォルトの名無しさん:2005/12/12(月) 22:37:30
要は着信がなかったらタイムアウト処理すればいいんだろ?
select関数でソケット監視するのが簡単じゃね?
WinならWSAAsyncSelect関数使うとか
782デフォルトの名無しさん:2005/12/12(月) 22:55:46
758とは別人だが...
WSAAsyncSelectもひとつの手だがサービスにしたい場合、
メッセージポンプ回してウインドウハンドルを扱うのはちと抵抗がある。
権限渡せば動くんだろうけどさ。
Windowsってサービスまでウインドウハンドル扱うの普通なのかな
783デフォルトの名無しさん:2005/12/12(月) 23:16:20
>>782
仕事でWSA系の関数使う機会なんてないよ
そういう意味で

> Windowsってサービスまでウインドウハンドル扱うの普通なのかな
784デフォルトの名無しさん:2005/12/12(月) 23:54:14
TCP WinSock2 WSASendで、 重複IOを使って送信した場合、指定したバッファの全てが送られた時に、完了通知が発生するのでしょうか?

それとも、1度のWSASend で、何度かに分かれて完了通知が送られてくることがある?
英語読めませんorz
785デフォルトの名無しさん:2005/12/12(月) 23:58:13
読めない、と読もうとしないのではいつまでたっても読めない
一通り目を通して、自分の解釈があってるかどうかを聞くぐらいならわかるが
786デフォルトの名無しさん:2005/12/13(火) 00:05:20
Sendは全部完了しないとダメ
Recvは途中で完了通知がくる
787デフォルトの名無しさん:2005/12/13(火) 00:07:37
>>785
すいません

>>786
ありがとうございます。助かりました。
788デフォルトの名無しさん:2005/12/13(火) 01:36:00
windowsのコンソールアプリで、acceptをタイムアウトさせたいんですけど、どの方法が一番良いでしょうか?
789デフォルトの名無しさん:2005/12/13(火) 01:41:45
どの方法が一番いいかってどんな状況を想定してるのかわかんねぇ。
790デフォルトの名無しさん:2005/12/13(火) 01:41:53
791デフォルトの名無しさん:2005/12/13(火) 02:03:29
acceptしてから、10秒間接続が来なかったら、
acceptをやめて別の処理に移ろうとしています。
acceptで接続が確立されてからは、
同期、非同期どちらの方式で通信しても構わないと思っています。
また、connectも行いますが、
acceptと同一の方法でタイムアウトしたいと考えています。
792デフォルトの名無しさん:2005/12/13(火) 02:15:13
>>791
>acceptしてから、10秒間接続が来なかったら、
>acceptをやめて別の処理に移ろうとしています。
11秒目に接続要求がきたらどうするんですか?
別の処理とはなんでしょうか?

>また、connectも行いますが、
>acceptと同一の方法でタイムアウトしたいと考えています。
connectはタイムアウトを考えなくてよいのでは。
793デフォルトの名無しさん:2005/12/13(火) 02:17:32
>>791
>>772でいいでしょ。
794デフォルトの名無しさん:2005/12/13(火) 02:23:35
> 11秒目に接続要求がきたらどうするんですか?
接続を受け付けません。

> 別の処理とはなんでしょうか?
すでに確立されている別のtcpソケットでメッセージを送信します。

> connectはタイムアウトを考えなくてよいのでは。
そうでした。すみません。

795デフォルトの名無しさん:2005/12/13(火) 02:47:51
>>794
>>793さんも指摘されているように、>>772の監視スレッドを作成して、その監視スレッド
で所定時間が経過したら、socketを強制的にclosesocketするでどうでしょうか?
796デフォルトの名無しさん:2005/12/13(火) 02:55:38
無理にconnectを中断させなくても、
別スレッドで動かして放置すればいいと思うのだが。
Listenで5ぐらい指定しとけば、
忙しくない鯖じゃ、さしつかえないと思う。
797デフォルトの名無しさん:2005/12/13(火) 07:37:57
selectとか、AsyncEventとかAcceptExとか
798デフォルトの名無しさん:2005/12/13(火) 22:41:13
レスどうもありがとうございます。
ちなみに、accept中のソケットに対して、別スレッドからcloseという行為は、
winsockの仕様上問題無いでしょうか?
799デフォルトの名無しさん:2005/12/13(火) 22:48:19
connect時のハンドシェイク途中で、相手側がselect使ってて
何秒かACKがこないままとまる様な場合ってのはよくあることなんだろうか?
800デフォルトの名無しさん:2005/12/13(火) 22:55:40
SYN+ACKに対する返事のACK?
それにはselectは関与しないはずだけど。
801デフォルトの名無しさん:2005/12/13(火) 23:19:06
開いてないポートにconnectすると、仕様で何度もSYN送りつけて、相当時間がかかるから
タイムアウトを変更する事が全く無意味とは思わないけど…そうでもないの?
802デフォルトの名無しさん:2005/12/13(火) 23:21:55
SYNフラッシングとかするツール作ってるの?
803デフォルトの名無しさん:2005/12/13(火) 23:34:27
>>801
馬鹿は相手にしない方がいい。
804デフォルトの名無しさん:2005/12/13(火) 23:50:44
何が馬鹿なんだ?
805デフォルトの名無しさん:2005/12/13(火) 23:54:59
connectやacceptでなんで別スレッドが必要になるんだ
selectでタイムアウトできるじゃあないか
806デフォルトの名無しさん:2005/12/13(火) 23:57:44
accept中のソケットに対して、別スレッドからcloseという行為は、
winsockの仕様上問題無いかどうか調べています。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11743&forum=7
で「MFC時代のソケットは、外(別スレッド)から閉じるとGP起きましたので・・・ 」
という書き込みを見つけましたが、GPってなんですか?
又、これはcsocketのお話で、ただのsocketには関係ないんでしょうか?

この方法がダメなら、selectを用いようとしていますが、
所々のサイトで、winsockでselectはあまり良くないっぽいことが書いてありますが、
問題ないですよね?
807デフォルトの名無しさん:2005/12/13(火) 23:59:59
>>805
レス見逃して書き込んでしまいました。

selectで良いですよね?
808デフォルトの名無しさん:2005/12/14(水) 00:01:03
>>806
問題ないかどうかは要求仕様しだいなんじゃあないの?
809デフォルトの名無しさん:2005/12/14(水) 00:10:42
>>806
一般保護エラーのことじゃない? (General Protection Error)

Winsockは実装の問題としか思えないものが仕様となっていたり、
バージョン違いで振る舞いが違ったり、問題が多いから、
出来るだけジェントルに処理した方がいいよ。

Winsock FAQ(>>1)より
2.14 - How can I change the timeout for a Winsock function?
810デフォルトの名無しさん:2005/12/14(水) 00:12:05
>>805
acceptはselectでいいとしても、
connectは多くの場合タイムアウトの方が自然な実装だと思う。
811デフォルトの名無しさん:2005/12/14(水) 00:14:51
>>810
connectもselectでタイムアウトを実装しないと
結構面倒な場面が多いよ
812810じゃないけど:2005/12/14(水) 00:31:20
> connectは多くの場合タイムアウトの方が自然な実装だと思う。
connectは多くの場合タイムアウトを設定しない方が自然な実装だと思う。

こうだな
813810じゃないけど:2005/12/14(水) 00:32:10
まぁ俺はどっちもselectで実装してる。
814デフォルトの名無しさん:2005/12/14(水) 00:35:21
よく見かけるのは他のスレッドからいきなりcloseksocketするようなソース。
たいていはもうぐっちゃぐちゃで直す気にもなれない
そんな時もし他のスレッドからclosesocketしても問題ないと誰かが言ってくれたら
飛びつきたくなる気持ちはわかる。
815デフォルトの名無しさん:2005/12/14(水) 00:42:24
>>811
selectだとnon-blockingになっちゃうしなあ。
816デフォルトの名無しさん:2005/12/14(水) 00:54:02
>>815
基本はノーブラだから問題ない

オレの場合、ブロッキングありでの実装のときはそもそもselect使わないしなぁ
817デフォルトの名無しさん:2005/12/14(水) 00:54:55
TCPのヘッダのバージョンで4以外のもって
今どれくらい使われているのでしょうか?

また、5になることってありますか?
818デフォルトの名無しさん:2005/12/14(水) 00:55:06
connectで10分とか待たされてようやく失敗に
なったりするのでconnect放置実装は危険と
思ったり
819デフォルトの名無しさん:2005/12/14(水) 00:55:17
今ものすごいオヤジを見た( ゚Д゚)
820デフォルトの名無しさん:2005/12/14(水) 01:14:55
>>816
問題ないかどうかは状況しだいなんじゃあないの?
821817:2005/12/14(水) 03:14:34
すみません、ちょっと調べたところ、
どうやら僕の言ってるバージョン4というのは
IPヘッダのことっぽいです
そしてIPのデータ部に
TCPヘッダとそれに続くHTTPなどの
プロトコルのTCPデータが乗ることが解かりました。

ネットワークっておもろいっすね。
822デフォルトの名無しさん:2005/12/14(水) 08:42:24
select-acceptで取得したソケットはnon-blockingですか?
又、selectでnon-blockingになったソケットは、blockingにすることはできませんか?

要は、aaceptの時だけselectでタイムアウトしたいので、
他の処理では、blockingで構わないのです。
823デフォルトの名無しさん:2005/12/14(水) 09:13:26
だめでづ
824デフォルトの名無しさん:2005/12/14(水) 09:59:23
acceptはブロッキングのままいけるよ
あと一般の環境ではselect使ってもnon-blockingになることはないと思う
825デフォルトの名無しさん:2005/12/14(水) 10:00:57
connect()だけnonblockで通したあとselectで見張らないとダメなだけ。
accept,recv,sendはblockingのままselectする。
826デフォルトの名無しさん:2005/12/14(水) 10:13:46
>>822
可能だよ
827デフォルトの名無しさん:2005/12/14(水) 10:15:50
windowsのイベントでソケットを処理すると、
コネクションが相手に閉じられた時、
1回だけしかそのイベントが発生しませんが
(ソケットでその1回を見逃したら2度とイベントが来ないので、イベント待ちで固まってしまう)、

selectの場合はどうなるのでしょうか?

例えば、相手にコネクションを閉じられて、
selectで1度その情報を取得したソケットに対して、
もう一度selectすると、固まっちゃいますか?
それとも、もう一度、コネクションが閉じられた情報を取得できますか?
828デフォルトの名無しさん:2005/12/14(水) 10:22:03
readを二回やって読み出しエラーとかではだめなん?
829デフォルトの名無しさん:2005/12/14(水) 14:04:16
>>827
> selectで1度その情報を取得したソケットに対して、

取得したらその時にちゃんと処理すればいいじゃん。
830デフォルトの名無しさん:2005/12/14(水) 16:49:23
質問です。
VBでつくったプログラムとUDPにてVC(CAsyncSocket)で通信をしたいです。
VBどおしではBindをやっただけで通信が可能になるのことは確認しています。
ですがVCではどのようにプログラムしたらいいかわかりません。
現在偶然と思いますがVC側で受信のみできています。
TCPでは通信を作ったことがあります。

サンプルなどを見るとBindの後にConnect もしくは Listenをとかいてありますが、
VBではConnectなどは必要なく通信が出来ているのでConnectはかえってきません。
831デフォルトの名無しさん:2005/12/14(水) 16:53:00
>>830
↓読め
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
(>>1より)
832830:2005/12/14(水) 18:30:12
よみました。いろいろわかりましたが解決に至っていません。
受信は出来ますが、送信が出来ません。
CAsyncSocketの場合、BindはCreate内にあったので、Createの前に

SetSockOpt( SO_BROADCAST, &iOptionValue, sizeof(BOOL), SOL_SOCKET);

を入れ、Connectなどもしていませんが、状況は変わりません。
833デフォルトの名無しさん:2005/12/14(水) 19:43:50
たぶんWSAStartupしてないとかじゃない?
834デフォルトの名無しさん:2005/12/14(水) 19:49:47
>>830
UDPでしょ?
CAsyncSocketとかいう糞は使ったことが無いが、
基本的には
1. bind() → recvfrom()/sendto() (相手が不定の場合)
2. bind() → connect() → recv()/send() (相手が固定の場合)
でいいはずよ。
835デフォルトの名無しさん:2005/12/15(木) 02:39:10
簡易proxyサーバを作っています。
accept→forkしてごにょごにょ、てな流れなんですが、
accept時にforkしなくて済むようなpreforkというやり方があると聞き調べていました。
が、イマイチどういうモノなのか分かりません。
acceptするプロセスをたくさん作っておき、それらがforkせずにそのまま処理するだけの話なんでしょうか?
そうすると同時最大接続数=accecpt待ちしてるプロセス数?
同時最大接続数を越えた場合は待ちが発生するという感じ?
pgpoolなんかも読んではみたんですがいまいち理解には至らず。
良いサイト等あれば教えて下さい。
836デフォルトの名無しさん:2005/12/15(木) 06:18:35
その理解でおk
837デフォルトの名無しさん:2005/12/15(木) 06:25:54
835じゃないんですが、
通常acceptしてからforkするのを
bind→fork→accept という位置にもってきたということかな?
838デフォルトの名無しさん:2005/12/15(木) 07:30:55
>>835
ミックスすれば、
> そうすると同時最大接続数=accecpt待ちしてるプロセス数?
とは限らないが、プロセス間で処理中かどうか情報を共有する必要があるね。
空いているプロセスが減ってきたら、acceptしてからfork。

いずれにせよ、最大接続数制限は必要になるだろうから、
諦めるというのも一つの考え方。
839835:2005/12/15(木) 08:29:01
レスどうもです。

>>837そうっす。listenまでやってからforkして子プロセスを複数つくり、
それらがacceptして待ちます。

>>838
ミックスかぁ。なるほどなあ。
apacheは子プロセス当たりの処理数を設定して、その数だけこなすとそのプロセスは
終了するんですね。
このヘンを上手く組み合わせれば、混んでる時にはプロセスが沢山出来て、
空いて来たらプロセスが減っていく、という流れができるんですね。
それで最大接続数制限も必要になってくるわけか。

各プロセスの状況を共有するのはやっぱり共有メモリになるんですかね?
840デフォルトの名無しさん:2005/12/15(木) 08:39:26
>>839
> apacheは子プロセス当たりの処理数を設定して、
> その数だけこなすとそのプロセスは終了するんですね。

モジュールのメモリ管理がいい加減でも、
サーバのデータ領域が肥大化するのを防ぐことができる。
841デフォルトの名無しさん:2005/12/15(木) 12:08:25
javaでネットワーク層での通信がやりたいのですが可能でしょうか?

なぜかといいますと、SMTPサーバでパケットのトンネルをさせて、
特定メールアドレスにメールが来たときに処理を実行する
プログラムを動かしているのですが、
これだと、greylistingするときにIPアドレスがローカルホストになってしまい
greylistingの意味がなくなってしまっているのです。

ネットワーク層でIPパケットのヘッダを元のIPアドレスに変えて、
転送してあげればgreylistingできるかなと思ったわけなんですが・・・
842デフォルトの名無しさん:2005/12/15(木) 12:14:47
と思ったけどチェックサムでIPチゲーよってはじかれそうですね。
843デフォルトの名無しさん:2005/12/15(木) 12:22:01
チェックサムも書き換えればいい
844デフォルトの名無しさん:2005/12/15(木) 12:41:24
845デフォルトの名無しさん:2005/12/15(木) 14:03:58
>>843
まさしくそのとおりですね。

>>844
最初は僕もパケットをスニファして動かせばいいと思ったんです。
そのライブラリは試してみたんですが、
windows版はパケットをTCPに変換する処理でVM落ちちゃうし、
unix版はJNI用のso作るコンパイルができないしで、
なんかあんまり使えたものじゃないんです。
sourceforgeにある奴に至ってはキャプチャできない。
846デフォルトの名無しさん:2005/12/15(木) 16:53:45
javaでないといけないの?
自分ならcで書いてJNI通すかな
847デフォルトの名無しさん:2005/12/15(木) 19:00:13
>>846
それがCが書けないんですよ・・・・
848デフォルトの名無しさん:2005/12/15(木) 19:35:03
>>847
そんな会社やめちまえ
849デフォルトの名無しさん:2005/12/16(金) 08:48:31
ethereal使え
つーか点プレくらい読んで来い
850デフォルトの名無しさん:2005/12/16(金) 10:37:52
ネットワークのテストで、遅い(負荷の高い)状態でテスト
したいんですが、意図的にそういう状態を高い専用機材を
使わずに作り出したいんですが、良い方法ないでしょうか?
851デフォルトの名無しさん:2005/12/16(金) 10:51:11
それプログラミング関係ないですから。
852830:2005/12/16(金) 10:52:20
CAsyncSocketの中身のソースを見ることに成功し、
なんとかなりました。ありがとうございました。
CAsyncSocketは使いたくないんですが
前任者がつくったソースを改造しろと言われて四苦八苦です。
853デフォルトの名無しさん:2005/12/16(金) 11:05:23
イーサネットエミュレータ Linee
でぐぐってみて >>850
854デフォルトの名無しさん:2005/12/16(金) 15:41:15
こういうとこ時間かけたくないからGUIのやつがほしい
855デフォルトの名無しさん:2005/12/16(金) 17:31:25
>>850
何この馬鹿。
856デフォルトの名無しさん:2005/12/16(金) 21:50:42
>>849
ethrealってCUI使えますか?

といいますか、
http://www.microolap.com/products/network/tcpdump/
これ使って Runtime.exec(String cmd) で取得して、
解析するものを作り始めたんですが、
意外と重い。
857デフォルトの名無しさん:2005/12/16(金) 23:53:45
>>856
tethereal
858デフォルトの名無しさん:2005/12/17(土) 00:13:55
このスレは、作ったプログラムのテスト方法等に関しては議論してはいかんのかな…

>>853
ありがとう

>>855
うんこは氏ね
859デフォルトの名無しさん:2005/12/17(土) 00:43:17
JavaのJMeterってのは使えんの?
860デフォルトの名無しさん:2005/12/17(土) 09:56:01
>>850
負荷をかければいいと思うよ
861デフォルトの名無しさん:2005/12/17(土) 12:13:37
>>858
> このスレは、作ったプログラムのテスト方法等に関しては議論してはいかんのかな…

じゃあどういうプログラムなのかくらい書けよ。
>>850じゃ、「ネットワークのテスト」だろ。
862デフォルトの名無しさん:2005/12/17(土) 16:36:28
>>860
ネットワークのプログラミングすればいいと思うよ
863デフォルトの名無しさん:2005/12/17(土) 19:08:42
グラはファミコン以下ですが、
個人的には結構面白いサッカーゲームです。
一人用ですが。

某雑誌に掲載されてた記事
「一試合3分から楽しめる本格派サッカーゲーム。
グラフィックは簡素だが、やり込み派にはオススメしたい一本。
 
こだわりのカスタマイズが面白い。
簡素なグラフィックとは逆に、戦術面は細部まで作りこまれている。
システムやプレスのON/OFFから、なんと選手一人一人のポジショニングまで設定可能だ。
こだわりのチーム作りが楽しめる。」

フリーゲームなんですが、管理人がいないらしいので、
サッカー好きでプログラムのできる方居たら助けてやってください。
このゲームで対戦できたら面白いと思うので

RolePlaying Eleven
http://ime.st/www.geocities.co.jp/Bookend-Kenji/2279/

最近立った2chスレ
http://game10.2ch.net/test/read.cgi/netgame/1134392861/
864デフォルトの名無しさん:2005/12/17(土) 19:11:21
> グラはファミコン以下ですが、

グリはスーパカセットビジョン以下です
865デフォルトの名無しさん:2005/12/17(土) 20:59:08
実際のIPパケット長と
IPヘッダの total length の値が違うときってありますか?
866デフォルトの名無しさん:2005/12/17(土) 21:04:30
ICMPでそういう攻撃が昔あった。
だから、ありますか?という問いの答えとしてはある。
867デフォルトの名無しさん:2005/12/17(土) 21:11:23
サンクス。
正常な通信としてはありえないってことですね。

うーん、解析ミスかな。
868デフォルトの名無しさん:2005/12/17(土) 22:59:44
mswsock.dll内のアセンブラ命令
int 3
ってどういう命令なのでしょうか?
現在相互通信アプリを作っているのですが、
なぜか上記の部分でエラーが出てしまい実行がとまってしまいます。
869865:2005/12/17(土) 23:09:35

パケット長 と IPヘッダのtotal packet の長さが違う件。

http://www.microolap.com/products/network/tcpdump/
このtcpdumpがいけなかったようです。

winpcap + winpdump つかったら整合性の取れないパケットは
発生しなくなりました。
tethereal でも問題なかったです。

皆様情報サンクスです。
870865:2005/12/17(土) 23:24:12
嘘です、やっぱり発生しました。
サーバからの応答でパケット長が40バイトのときのみ
なぜか46バイト送られてきます。
なんなんでしょ?

ちなみに多い6バイトは一定ではないです。
871デフォルトの名無しさん:2005/12/17(土) 23:37:42
どんな通信のときか分からないのは私だけだろうか。
872865:2005/12/17(土) 23:52:35
>>871
普通のHTTP通信です。
873デフォルトの名無しさん:2005/12/18(日) 00:01:31
>>868
Win32のdebug break
874デフォルトの名無しさん:2005/12/18(日) 11:31:45
64バイト以下のイーサパケットでpaddingされるのはいいよな?
875865:2005/12/18(日) 15:11:57
>>874
!!!!
マジですか?
でもそうだとしたら、
TCPデータなしのパケットの場合、
イーサヘッダ(14byte)+IPヘッダ(20byte)+TCPヘッダ(20byte) = 54byte
で10byteパディングされそうなんですが、どうなんでしょ?
876デフォルトの名無しさん:2005/12/18(日) 17:15:45
>>875
CRC 4バイトとかは?
Ethernetはコリジョン検出のために最低送信時間が決められてるため
64バイト以下のパケットは送信できない。
877デフォルトの名無しさん:2005/12/18(日) 17:28:59
AのグローバルIPをgA、送受信ポート番号をpA
BのグローバルIPをgB、送受信ポート番号をpBとすると、
UDPホールパンチングって
1.AがgB:pBに適当なパケットを送信(Bのルーターで破棄)
2.Aが同じポート番号で受信待機
3.BがgA:pAに対して適当なパケットを送信
4.Bの送ったパケットをAが受信
5.その後双方向にUDPパケットを投げ合える

だと思うんだが、Aが何回かBにパケット送ってから同じポート番号でBからのデータを待機してもBが送ったデータが来ない。

根本的に間違いをしているように思うんだがどこが間違ってるんだろう?
878865:2005/12/18(日) 18:20:09
>>876
--------------------
MACソース  6 byte
--------------------
MACディスト  6 byte
--------------------
タイプ 2 byte
--------------------
IPパケット
TCPの場合最低 40 byte
--------------------
CRC 4byte
--------------------

ってときだと 6+6+2+40+4=58
このとき最低パケット長に達していないために
"IPパケット部分末尾"にパディングが足されるってことでしょうか?
879デフォルトの名無しさん:2005/12/18(日) 20:22:27
880デフォルトの名無しさん:2005/12/18(日) 22:14:48
>>877

>だと思うんだが、Aが何回かBにパケット送ってから同じポート番号でBからのデータを待機してもBが送ったデータが来ない。

ちゃんとBはAのグローバル(WAN)のポートにデータ送ってるの?
881デフォルトの名無しさん:2005/12/18(日) 23:04:22
はじめまして

インターネットからデータをロードしようとしております。
通信に時間がかかることとUI的に動作を俊敏にするためにマルチスレッドを用いております。
_beginthreadを使ってスレッドを作成し、

InternetAttemptConnect
、InternetCrackUrl、InternetOpen、InternetConnect、HttpOpenRequest、HttpSendRequest
とWinINet関数を使って通信しております。

このとき、ソフトウェアファイヤーウォールがインストールされている環境では、
この自分のプログラムに対して通信を許可するかどうかというダイアログが表示される場合があります。

そこで、ダイアログをの返答をユーザが行わない状態で、自分のプログラムを終了しようとすると、
ソフトウェアファイヤーウォールによってロック状態となり、
プロセスが残って停止させることが出来ません。

たとえばZoneAlarmではユーザがダイアログに答えるとロック状態が解除されプロセスを
終了させることが出来ます。


これをロック状態でもプロセスを終了させる方法は無いでしょうか?
要約すると、ソフトウェアファイヤーウォールのロック状態にはどのように対応すればよいのでしょうか?

よろしくお願い致します。


開発:VisualStudio.net 2003
OS:WindowsXp SP2
882877:2005/12/18(日) 23:28:37
AのグローバルIPをgA、送受信ポート番号をpA
BのグローバルIPをgB、送受信ポート番号をpBとすると、
C#で書いてるんだが、
ホストA:
System.Net.Sockets.UdpClient udpa1 = new System.Net.Sockets.UdpClient(pA);
udpa1.Send(sendbytes, sendbytes.Length, gB, pB);
udpa1.Close();
System.Net.Sockets.UdpClient udpa2 = new System.Net.Sockets.UdpClient(pA);
System.Net.IPEndPoint ipe = null;
byte[] recvbytes = udpa2.Receive(ref ipe);
上記の後(udpa.Receiveでブロック中)ホストB:
System.Net.Sockets.UdpClient udpb = new System.Net.Sockets.UdpClient(pB);
udpb.Send(sendbytes, sendbytes.Length, gA,pA);
とやってもAには何も届いている様子がない。
どちらもちゃんと相手のグローバルIPを入れてるはずなのになあ…
883デフォルトの名無しさん:2005/12/18(日) 23:44:56
まずはNATを通さなければ繋がることを確認しる。
あとはBのパケットが届くまでAも送信し続けてみれ。
それでもだめならルーターを変えてみれ。
実はルーターの特性によって結構違ってノウハウがある。
けど仕事内容に抵触するので詳細は言えん。
884デフォルトの名無しさん:2005/12/19(月) 01:11:30
>>881
ロック状態というのがいまいちよく分からん。
プロセス側でreturn 0した場合にそこで止まるってことか?んん?
885デフォルトの名無しさん:2005/12/19(月) 01:14:56
あ、分かった。
スレッドがconnect()とかで止まってるんだろ。>プロセスが残る

終了時にそのスレッドを_endthreadすればえーんちゃうの
886881:2005/12/19(月) 02:09:03
>>884
>>885

わかりにくかったと思います。
申し訳ないです。
HttpSendRequest でリクエストを出すとブロック状態となります。
ダイアログに回答するとHttpSendRequestが終了し、プログラムを続けることが出来ます。
つまり_endthreadしようにも、ブロック状態で出来ません。

そこで、TerminateThreadでスレッドを終了しようとしたのですが、
スレッドを終了することが出来ませんでした。

ユーザが回答してくれれば正常に動作しますが。。。
887デフォルトの名無しさん:2005/12/19(月) 02:26:33
>>881
InternetSetOptionでタイムアウト時間を指定しても無理かな?
888865:2005/12/19(月) 04:46:18
>>879
レスありがとうございます。

ぐぐっては見たんですけど、
わかったのは自端末発のデータは46byteに満たなくても
tcpdumpで見ている時点ではデータの付け足しはされない
ということで、これは、合計64byte以上にするのはインターフェースの責任で、
インターフェースを通過していないデータだから64byteに満たなくてもそのまま。

ってことなんです。
ネットワーク層のデータに付加されるって言うのは見当たらないんです。
削ってもきちんとデータの整合性が取れているので、
おそらくこれが46byteにするために追加された物っぽいんですが、
どうも気持ち悪い感じです。

取り急ぎお礼を申し上げます。
ありがとうございます。
889881:2005/12/19(月) 11:02:37
>>887

レスありがとうございます。
試してみます。
890デフォルトの名無しさん:2005/12/19(月) 22:45:39
> つまり_endthreadしようにも、ブロック状態で出来ません。
好奇心。どんなエラー返るのー?

あとTerminateThreadも_endthreadもたぶん中身同じだよ
891デフォルトの名無しさん:2005/12/20(火) 01:13:51
ソケットをつかってデータ通信をしたいのですが、クライアントがそれぞれA,Bと2つで受信サーバが1つ
この状態でAとの通信で受け取ったソケットはbuff1に格納、Bから受け取ったソケットはbuff2に格納という具合にしたいのですが
クライアントAとBを区別するにはどうすればいいでしょうか?
OSはLinuxでC言語を使っています。
892デフォルトの名無しさん:2005/12/20(火) 01:23:48
TCPならacceptしたソケットハンドルそのものが別だし、
UDPならrecvfromしたとき一緒にに貰うsockaddrで判別できる。
しかし、この質問にはデジャブを感じる。
893デフォルトの名無しさん:2005/12/20(火) 04:47:17
>>891
というか、>>1のFAQから読め。サンプルプログラムもある。
894デフォルトの名無しさん:2005/12/20(火) 08:10:21
Winsockのことなんですが、connectで一つのポート番号に何個もソケットを作ってもいいんでしょうか。
895デフォルトの名無しさん:2005/12/20(火) 10:34:10
WinSockを勉強しています。
非同期、非ブロッキングでsendの送信完了のタイミングを
知りたいのですが、ご教授願えませんでしょうか。
896デフォルトの名無しさん:2005/12/20(火) 11:23:27
FAQくらいは読め。
897デフォルトの名無しさん:2005/12/20(火) 18:51:42
ついでにRFCもナー
898デフォルトの名無しさん:2005/12/20(火) 19:05:54
>>888
tcpdump のダンプを見られない状況なので憶測だけど
送信データはパディングされてなくて
受信データはパディングされてる
ってことではなくて?
だとすればキャプチャしたあとにパディングされるのでそうなるかも。
受信したデータは相手がパディングしたものが届いてる。
899デフォルトの名無しさん:2005/12/20(火) 20:22:49
MS-DOS = NDIS 2.0
Windows 3.1 = NDIS 2.0 or 3.0
Windows NT 3.51 = NDIS 3.0
Windows 95a = NDIS 3.0

Windows 95B = NDIS 3.0 or 4.0
Windows NT 4 = NDIS 3.0 or 4.0
Windows 98 = NDIS 3.0 or 4.0
Windows 98se = NDIS 3.0 or 4.0

Windows 2000 = NDIS 4.0 or 5.0
Windows Xp = NDIS 4.0 or 5.0

で、対応関係はOK?

900デフォルトの名無しさん:2005/12/20(火) 23:10:04
>>895
Select
ただしブロッキングする
901デフォルトの名無しさん:2005/12/20(火) 23:57:51

複数のクライアントがサーバ上のディスクのDBを更新するようなシステム
における排他制御について勉強しています。
この場合、同一マシン内の異プロセス間ならセマフォでできますが、ネットワーク
経由での排他制御はどのようにすれば良いのでしょうか?
それとこの問題について何か良い文献ありますか?
902901:2005/12/20(火) 23:58:38
すみません。ちょっと訂正します。
>同一マシン内の異プロセス間

>同一マシン内の異スレッド間
903デフォルトの名無しさん:2005/12/21(水) 00:05:06
データ毎にオーナーになるノードを決める
データをモディファイする際はオーナーにお伺いを立てる(オプション)
オーナーは一定時間毎にアップデートを通知する
904デフォルトの名無しさん:2005/12/21(水) 00:35:50
>>901
DB使ってるんならDBに任せれば?
905デフォルトの名無しさん:2005/12/21(水) 00:47:10
複数のクライアントにユニークなアカウント配布で排他すれば?
不特定多数なら、IPをハッシュで持ってセッションの度に検索チェックするとか(ぉぃ

NATは面倒だね。基本は常に内側からセッション張らせる事。内々で繋ぎたいのは諦めろ(w
もうすこしすればチャンコロがIPv4を食いつぶしてくれるから、IPv6まで待った方がいいカモな(w
906デフォルトの名無しさん:2005/12/21(水) 01:57:23
>>898
送信のときはなくてと受信あるパディングについては、
私もそう思うのですが、
そのパディングの値が0ではなくて、
さらにIPパケット部分の末尾につくのでしょうか?

http://www.ne.jp/asahi/earth/stomomi/RFC/rfc894-ja.txt

の Frame Format の章によると、
このパディングは、IP パケットの一部分ではなく、
IP ヘッダの全長フィールドには含まれない。

となってるんですよね・・・・
907デフォルトの名無しさん:2005/12/23(金) 00:05:42
accept()中のソケットを正しく終了させる方法はどんな方法でしょうか?

TCPソケットの終了の仕方は
ttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/newbie.html#howclose
2.10 - TCP ソケットを正しく close するにはどうすれば良いのですか?

から知ることができましたが、accept()中のソケットの正しい閉じ方は
具具って見てもわかりませんでした。

もうひとつ質問があるのですが、IPアドレスを複数用意することは無
理なのでしょうか?
というのはIPアドレスを元に接続要求を受け入れるか判断する関数を
作成しようとしているのですが、127.0.0.1 とローカルIPアドレスひとつだ
けでは、テストがはかどりません。

開発中のPCでは外部ネットワークに接続できません。
908デフォルトの名無しさん:2005/12/23(金) 01:39:29
accept関数から抜け出してcloseすればよろしい
IPアドレスを複数用意したいなら単純にNIC増設すればよろしい
909デフォルトの名無しさん:2005/12/23(金) 03:20:46
NIC増設せんでもIPエイリアスで
ってwinsockてことはWindowsか
910881:2005/12/23(金) 17:14:42
>>890

HttpSendRequestを呼び出すと、通信許可を求めるダイアログが表示されます。
ダイアログでユーザが返答し、通信が許可されると関数は成功し普通に通信できます。

一方、ダイアログでユーザが返答し、通信が許可されなければ関数は失敗し、
GetLastErrorは「0x00002EE7」を返します。
このエラーって何なのでしょうか?
FormatMessageでは探せませんでした。

ユーザが返答しないと関数はブロック状態で帰ってきません。
とりあえず5分待ちましたがブロック状態でした。
911デフォルトの名無しさん:2005/12/23(金) 18:08:35
ダイアログ出してるのはノートン先生かXPのセキリティ、
WSAGetLastErrorではCONNECTION-REFUSEDが来ていると予想
912デフォルトの名無しさん:2005/12/23(金) 18:26:15
WindowsでもIPエイリアス出来た気がする
記憶違いならごめん
913890:2005/12/23(金) 20:50:24
>>910
_endthread()のエラーが知りたかった^^;
914881:2005/12/24(土) 09:35:55
>>911


WSAGetLastErrorでも同じく「0x00002EE7」が帰ってきます。
0x00002EE7=12007なので、
#define WSABASEERR 10000

からエラーだといえますが、2007が何なのか定義されていません。

CONNECTION-REFUSEDは
#define WSAECONNREFUSED (WSABASEERR+61)
と定義されていると思います。

>>913
_endthread()はスレッドが終了するので何も返さなかったです。
で正しいですか?
915デフォルトの名無しさん:2005/12/24(土) 10:06:32
> つまり_endthreadしようにも、ブロック状態で出来ません。
どっちなんすか(;´Д`)
ダイアログに返答するまで_endthread()ででも待たされるってことかいな?
916デフォルトの名無しさん:2005/12/24(土) 10:35:49
ああ、勘違いしてたスマソ
917デフォルトの名無しさん:2005/12/24(土) 10:38:31
_endthreadはExitThreadと同じタイプなんだな。
TerminateThreadで外部から消しちゃえ。
918881:2005/12/24(土) 11:44:15
>>917
あ〜、でダイアログに答えなくても中断できるようにTerminateThreadで終了しようとしています。

BOOL ret;
int Priority = GetThreadPriority(m_hThread);
if( THREAD_PRIORITY_ERROR_RETURN != Priority )
{
if( SetThreadPriority( m_hThread, Priority|THREAD_TERMINATE ))

{


DWORD dwExitCode;
GetExitCodeThread(m_hThread, &dwExitCode);
if (dwExitCode == STILL_ACTIVE)
ret = TerminateThread(m_hThread, -1);
m_hThread = NULL;
}
}


ってやっています。
retには1が返ってきますので、正常に終了できているようです。
しかし、プロセスはダイアログに答えるまで消滅しません。

環境:WinXp
919デフォルトの名無しさん:2005/12/24(土) 22:24:55
>>918
WinInetが内部でスレッド作ってるのかも。
解決するにはWinsock使えばいいよ。とか言う。
920ぴんこ:2005/12/25(日) 12:53:46
質問です!
WindowsでFTPツール作ろうと思ってるんですけど
WinsockではFTPで送受信することはできないのですか?
TCPやUDPでしか通信できないのでしょうか?
921& ◆B/HIERpVzQ :2005/12/25(日) 12:58:33
あ、作りたいのはFFFTPのような、FTPサーバーにファイルを送れるクライアントです。
922ぴんこ:2005/12/25(日) 12:59:46
Firefoxで書き込んだら名前がおかしくなりましたが、921は私です
923& ◆B/HIERpVzQ :2005/12/25(日) 13:03:01
もしかして、FTPって、ポートの番号を21にすればいいだけ???
普通にTCP/IPでport21で通信すればいいんですか?
924& ◆B/HIERpVzQ :2005/12/25(日) 13:04:32
また名前がおかしくなってますが、気にしないで下さい
925デフォルトの名無しさん:2005/12/25(日) 13:13:43
>>923
ああ。TCPでな。
926ぴんこ:2005/12/25(日) 13:21:59
>>925
ありヵヾとう
927デフォルトの名無しさん:2005/12/25(日) 13:55:38
コード書く前にPASVコマンドを勉強しとけな。
928ぴんこ:2005/12/25(日) 17:19:48
サーバーのIPアドレスはどうやって調べるんですか?
server.sin_addr.S_un.S_addr = inet_addr("");
この""のところにホスト名を入れても接続できますか?
929デフォルトの名無しさん:2005/12/25(日) 18:29:34
ぽかーん
930デフォルトの名無しさん:2005/12/25(日) 19:53:57
テンプレを読むだけで解決する質問だな
931ぴんこ:2005/12/25(日) 21:08:56
テンプレってどこですか??
932ぴんこ:2005/12/25(日) 21:11:29
あ、最初のほうのレスか
933ぴんこ:2005/12/25(日) 22:05:08
というか教えてくださいよ藻前らさま
934ぴんこ:2005/12/25(日) 22:11:07
>>933は偽者です!
テンプレ見たんですが、よくわかりません。
なんかいいサイトありませんか?
935デフォルトの名無しさん:2005/12/25(日) 22:20:10
>>934
マジレスすると、TCPで繋いでからが色々あるから、本買ったほうが良い。
サンプルソースが載ってるやつとか
936デフォルトの名無しさん:2005/12/25(日) 22:26:23
そんなレヴェルで Winsock を使うことが間違い。
WinInet でも使っとけ。
937& ◆B/HIERpVzQ :2005/12/25(日) 22:33:41
>>935
猫でもわかるネットワークプログラミングというのがよさそうだと思ったんですが
ちょっと高いので買えそうにないです

>>936
調べてみたんですが、BCCでしか使えないのですか?
私はVisualC++6.0を使っているのですがwininet.libやwininet.hはVCでも使えますか?
938デフォルトの名無しさん:2005/12/25(日) 22:41:58
図書館行こうぜ
939デフォルトの名無しさん:2005/12/25(日) 23:54:27
>>937
そのレベルでネットワークプログラムなんて、相手のサーバに迷惑だからマジでやめてくれ
940わたこ:2005/12/26(月) 00:13:43
つかさと申します。
市販のPersonalFireWallってアプリケーションが通信を開始しようとすると
それを検出してユーザに確認を取りますよね。
あるアプリケーションが通信を開始しようとするのを検出する方法って
C言語とかで簡単に書けるのでしょうか。
それとも、独自のソケットとかを使ってやってるんでしょうか。
知識のある方、お願いいたします。
941わたこ:2005/12/26(月) 00:15:07
申し訳ないです。
↑はつかさではなく、わたこの間違いでした。
お騒がせいたしました。
942デフォルトの名無しさん:2005/12/26(月) 03:05:41
おまいらプログラミングの前にネットワークの勉強が必要だよ。
943伝説新人タクシ:2005/12/26(月) 18:58:32
自分のサーバなら良くないパケットも実験し放題。
Apacheが檄有名所で無料だぞ。
表象的にはサーバもポートを利用するソフトに過ぎないことがわかる
のではないだろうか
あと、存在しない相手に送るのも良くない。親ノードに大きな負担になる。
と、一応言っておく。

>>928
Cは門外漢だが、名前解決って知ってる?
944デフォルトの名無しさん:2005/12/26(月) 19:28:01
どうしてApacheが出てくるんだ
945デフォルトの名無しさん:2005/12/26(月) 20:19:15
じゃあ鯖ソフトの代表を述べよ。
946デフォルトの名無しさん:2005/12/26(月) 20:34:50
>>944
馬鹿はHTTPサーバしか知らないから。
947デフォルトの名無しさん:2005/12/26(月) 20:58:14
>>945
バカだな。
948伝説新人タクシ:2005/12/26(月) 21:24:35
それでなんでも試せるとは思っていない。
専門といえるまでの知識を持ち合わせてないことは自覚してるよ。
サーバーぐらい入れるべきと、当然のことを言ったつもりだったよ。
DNSのBINDぐらいは知っている。触ったことはないけど orz
HTTPでもプログラムで繋がるかは試せるし、自分なら好きに出来るしさ。
949デフォルトの名無しさん:2005/12/26(月) 21:34:07
>>948
馬鹿は黙ってろ。
950デフォルトの名無しさん:2005/12/27(火) 00:54:11
サーバを実際に立ててみるってのは重要だとは思うけどな。
プログラムする前に、まともな動作を見てないとまともなのは作れないだろ。
サーバ立ててるうちにネットワークの知識も必要だしさ。
何も知らずにいきなりプログラムは無理。
951デフォルトの名無しさん:2005/12/27(火) 03:15:05
どこからどこまでがネットワークプログラミングなの?
952デフォルトの名無しさん:2005/12/27(火) 03:29:29
家にたどり着くまでがネットワークプログラミングです
953デフォルトの名無しさん:2005/12/27(火) 07:02:13
家にたどり着いてからネットワークプログラミングですう
954デフォルトの名無しさん:2005/12/27(火) 11:17:16
バナナはネットワークプログラミングではありません。
955デフォルトの名無しさん:2005/12/27(火) 11:28:38
ネットワークプログラミングは500円まで
956デフォルトの名無しさん:2005/12/27(火) 13:10:46
最近は300円じゃないのか。
957デフォルトの名無しさん:2005/12/27(火) 20:04:05
winsock使ってSniffer作ってみたんですが、
高い頻度(約1割)で取りこぼしが発生してしまいます。

これってWinsockの仕様?
それともコーディングがダメなだけ?
958デフォルトの名無しさん:2005/12/27(火) 20:10:50
>高い頻度(約1割)で取りこぼしが発生してしまいます。
うーむ、3割なら蟹の問題なんだが。
959デフォルトの名無しさん:2005/12/28(水) 15:22:32
ネットゲーム作りたいんですが、winsockの使い方解説してる良いサイトありますか?
あとwinsock以外にネット通信できるライブラリってありますか?
960デフォルトの名無しさん:2005/12/28(水) 16:12:34
まず、テンプレに目を通してから質問しようぜ
961デフォルトの名無しさん:2005/12/28(水) 17:18:15
Snifferで取りこぼし無しって結構なパフォーマンスが必要だよ。
おまいらのプログラムがそんなにパフォーマンス有ると思うのか?

ネトゲの本が有るから買った方が速い。
買えなきゃ諦めな。
962957:2005/12/28(水) 19:44:10
>>961
具体的にどのような"パフォーマンス"が必要なのですか?

解説されているサイト等ありましたら教えてもらえないでしょうか
963デフォルトの名無しさん:2005/12/28(水) 21:55:11
パフォーマンスいるのはドライバまわりの方だけどな。
キャプるのにGbE使ってみれ。(100Mにして)
バッファが大きいのと動作が速いぶん割込みが軽くなってとりこぼしが少ない。
964デフォルトの名無しさん:2005/12/29(木) 03:02:53
>>958
うちの蟹は4割5分こぼしますよっと。
965デフォルトの名無しさん:2005/12/29(木) 03:12:56
蟹ってなに?
966デフォルトの名無しさん:2005/12/29(木) 03:27:12
967デフォルトの名無しさん:2005/12/29(木) 07:40:55
>>966
どうしてくれる!!蟹食いたくなったじゃないか!!
968デフォルトの名無しさん:2005/12/29(木) 09:23:19
WSAAsyncSelectで非同期モードにして
Selectでsend、recvのブロッキング終了を待つのは邪道でしょうか?
969デフォルトの名無しさん:2005/12/29(木) 09:28:43
間違えましたSelectのブロッキングを待ってsend、recvをする でした
970デフォルトの名無しさん:2005/12/29(木) 11:18:03
邪道かどうかで何を判断するんだ?
971デフォルトの名無しさん:2005/12/29(木) 11:48:53
リアルタイムでパケット解析させたら、おまいらの糞プログラムで処理が追いつく訳ないじゃん。
仮に100Mbpsとして、一つのパケット舐めるのに何クロック必要で、実際のPCが何GHzの処理能力かよく考えろ。

糞プログラムではバッファが溢れる頻度でしか取りに逝けないよ。
972デフォルトの名無しさん:2005/12/29(木) 12:47:07
>>971
IPパケットの形にしてカーネルに渡すのはインターフェースなんだけど、
インターフェースってそんなに素敵なCPU積んでるのか。ふーん。
973デフォルトの名無しさん:2005/12/29(木) 16:33:08
IPパケットからデータを取り出すのは、おまいの作ったプログラムとCPUだから。
IPパケットがどんどん来てバッファから全部読み出せなければ溢れて捨てられるよ。
974デフォルトの名無しさん:2005/12/29(木) 19:18:50
リアルタイムに解析したらこぼすって言ってる?
Etherealみたいにとりあえずキャプチャしてメモリかファイルに保持しておいて
後から解析なら取りこぼさないって事?
975まっさ:2005/12/30(金) 12:57:47
WSOCK32.dllとws2_32.dllのsendとconnectをフックした状態でWSAStartup
呼ぶとWSASYSNOTREADYエラーになるんだけどなんでだこれ??
976デフォルトの名無しさん:2005/12/30(金) 19:21:37
ネットワークゲーム作ろうとしてるのにシーケンス図わかんねーとか話になんねーんだけど。
頼みますよ先輩。

愚痴スマソ
977デフォルトの名無しさん:2005/12/30(金) 20:09:54
ネットワークプログラミングならUML不要、状態遷移図だけで足りるぜ
978デフォルトの名無しさん:2005/12/31(土) 12:17:38
>>973
ふ〜ん、CPUまで自作か。スゲェな...
979デフォルトの名無しさん:2005/12/31(土) 12:31:42
ネットワークゲーム作るときってシーケンス図用意しないとつらいの?
980デフォルトの名無しさん:2005/12/31(土) 13:58:49
方針が決まるまではないとつらいなあ
981デフォルトの名無しさん:2005/12/31(土) 14:08:06
ネットワークプログラミング相談室 Port16
http://pc8.2ch.net/test/read.cgi/tech/1136005644/
982デフォルトの名無しさん:2005/12/31(土) 21:47:55
>>978
日本語文の読みって難しいよな
983デフォルトの名無しさん:2006/01/01(日) 20:55:08
>>978はここではきものをぬいでください
984デフォルトの名無しさん:2006/01/01(日) 21:37:48
ここで履物
ここでは着物
ここで吐き
985デフォルトの名無しさん:2006/01/04(水) 00:03:38
>>981
986デフォルトの名無しさん:2006/01/05(木) 21:36:36
サーバとクライアント間のシミュレートを一台のパソコンでできますか?
987デフォルトの名無しさん:2006/01/05(木) 21:41:56
構造体をhtons処理したいのですが、
構造体の中身を配列のように順番に列挙してくれるものってありますか?
988デフォルトの名無しさん:2006/01/05(木) 21:44:05
>>986
ローカルホストに接続するんじゃ駄目なの?

>>987
シリアライザでも使えば?
989デフォルトの名無しさん:2006/01/05(木) 22:01:45
>>988よく知らないのですが、ホスト(サーバソフトに標準装備とか?)に接続ってのをすると
サーバとIEの通信の様子が見えるのでしょうか。APACHEってのは9xに入れられますか
990デフォルトの名無しさん:2006/01/05(木) 22:13:33
「様子が見える」って何よ?

cygwinのapacheなら動くんじゃない?
991デフォルトの名無しさん:2006/01/05(木) 22:15:47
Apacheならxamppでインスト出来るな
httpサーバならもっとWindows寄りの(素人が触りやすい)がいっぱいあると思うが
992デフォルトの名無しさん:2006/01/05(木) 22:17:35
>>989
その前に、お前は何がしたいんだ?
993伝説新人タクシ:2006/01/05(木) 22:20:44
>>989
ローカルホストとは自分自身。
鯖に同一マシン上から自分自身に接続できる。
994986:2006/01/05(木) 23:18:56
サーバとクライアントの間でどんなデータのやりとりをしているのかを
一台のPCで見てみたくて。ホストというのは何かのファイルの事ですか?
ネットワークアダプタのことだと思っていました
995わくわく南門診療所:2006/01/05(木) 23:24:11
>>994
ホストはネットワークアダプタというよりは
プログラムとかのことになるのかね
996デフォルトの名無しさん:2006/01/05(木) 23:39:26
えせりあるでも入れとけ
997986:2006/01/05(木) 23:41:23
Wsock32.dllとかですか(ws2_32.dllはみつからない)?他にありますか?
作るとしたら、スタジオが必要ですか?フリーのLsicとかでつくれますか
998デフォルトの名無しさん:2006/01/06(金) 00:38:44
もういいからさ
RFC2068でも読んでなさい
999デフォルトの名無しさん:2006/01/06(金) 00:53:30
初めて書き込むオレが999!
1000デフォルトの名無しさん:2006/01/06(金) 00:54:01
初めて書き込むオレが1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。