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

このエントリーをはてなブックマークに追加
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辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port17
http://pc8.2ch.net/test/read.cgi/tech/1148944560/
2デフォルトの名無しさん:2006/10/01(日) 17:54:57
3デフォルトの名無しさん:2006/10/01(日) 17:56:00
図書コーナー:
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/
4デフォルトの名無しさん:2006/10/01(日) 17:57:16
マスタリング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/
Visual Basicではじめるネットワークプログラミング超入門
 http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/
5デフォルトの名無しさん:2006/10/01(日) 17:58:30
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
★プログラミング
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/
6デフォルトの名無しさん:2006/10/01(日) 18:01:00
71:2006/10/01(日) 18:14:26
・Wiresharkはetherealから名称変更しためテンプレに追加した。
8デフォルトの名無しさん:2006/10/01(日) 18:31:04
/* tcp.h

「SYN」
「ACK」
さわやかな接続の挨拶が、混みきったセグメントにこだまする。
ARPA様のお庭に集うパケットたちが、今日も天使のような無垢なTTLで、
高価なゲートウェイをくぐり抜けていく。
下位レイヤを知らないデータを包むのは、幾重ものヘッダ。シーケンス番号は
乱さないように、経路上のノードは輻湊させないように、ゆっくりスタートするのが
ここでのたしなみ。
もちろん、ウィンドウサイズギリギリで帯域を占有するなどといった、はしたない
TCPスタックなど存在していようはずもない。

Transmission Control Protocol。
1982年確立のこのプロトコルは、もとは軍のネットワークのためにつくられたという、
伝統あるストリーム系プロトコルである。
インターネット。シリアル通信の面影を未だに残しているデータ損失の多いこのネットワークで、IETFに見守られ、
フレームリレーからWDMまでの一貫接続がうけられる通信の要。
時代が移り変わり、大統領がレーガンから三回も改まった平成の今日でさえ、
十八ヶ月で性能を倍化させ続ければ電話屋育ちの純粋培養プロトコルが棺入りで出荷される、
という仕組みが未だに残っている貴重なプロトコルである。
*/
9デフォルトの名無しさん:2006/10/01(日) 18:40:06
もうスレ埋めたのか?速いな。
前スレのように、俺だけしか分からない話を「レベル高い」とかいうザコはお断り!
10デフォルトの名無しさん:2006/10/01(日) 18:41:43
>>9は何言ってるかわかんないので男割りなんです ><;
11デフォルトの名無しさん:2006/10/01(日) 18:43:06
>>9粘着もいい加減にしろよ低レベル
12デフォルトの名無しさん:2006/10/01(日) 19:38:03
さー、低レベルの話をおおいに議論しようじゃないか。

*************************************************
主にソケットに関しての低レベル質疑応答スレッドです。
*************************************************
13デフォルトの名無しさん:2006/10/01(日) 19:42:03
安全じゃないサーバってどういう基準でわかるの?
ポート80以外を排他して、決められたバッファ以上は一度に受け取らないなら安全?
14デフォルトの名無しさん:2006/10/01(日) 19:48:40
俺様の前に安全なサーバーなぞ存在しないぜ。
15デフォルトの名無しさん:2006/10/01(日) 20:12:17
マシン室に誰でも入れて、
パスワードが書かれた付箋紙がディスプレイに貼ってあるサーバは
全部ポート閉じてても危ないな
16デフォルトの名無しさん:2006/10/01(日) 20:17:06
というわけでリスクと効用を天秤にかけなきゃ話にならんです
17デフォルトの名無しさん:2006/10/01(日) 22:40:37
質問です。
Javaで
JList(Object[] listData)
JList.setListData(Object[] listData)
でリストにファイル表示させるみたいに、
リモートのファイルを表示させるやりかたってあるんですか?
18デフォルトの名無しさん:2006/10/01(日) 22:41:18
ないです。
19デフォルトの名無しさん:2006/10/01(日) 22:45:04
「リモートのファイル」って簡単に言っちゃってるけど、
リモートのファイルってどういうパスに成るの?
2017:2006/10/01(日) 22:45:37
別なやり方知ってますか?
21デフォルトの名無しさん:2006/10/01(日) 22:47:12
リモートのファイル一覧取得してコンテナにぶっこむんじゃダメなの?
何がわからんのかがわからん
2217:2006/10/01(日) 23:03:37
>19
そう言われれば、考えて無かった・・
繋げてからもう一度質問します
23デフォルトの名無しさん:2006/10/01(日) 23:39:50
ブラウザってIEとかFireFoxとか全部同じポート番号なのに
サーバーからクライアントに入ってきた情報をどのブラウザに渡せばいいのかって
どうやって識別してるか?

IPとポートだけで識別してるなら
どっちのブラウザに渡せばいい情報なのか解らないと思うんですが
他に何かプログラムを識別する物があるんでしょうか?
24デフォルトの名無しさん:2006/10/01(日) 23:42:49
>>23
80番に送っているのであって、80番から送っているわけではない。
2523:2006/10/01(日) 23:44:46
>>24
ありがとうございます!
という事は80番で接続した後に
クライアント側でソケットのポート番号を違う値にしても問題ないんですか?
26デフォルトの名無しさん:2006/10/01(日) 23:47:34
おまえ自分で何言ってるかわかってないだろ
2723:2006/10/01(日) 23:52:28
>>26
いえ、一応解ってるつもりなんですが

例えば、Javaで1000番ポートを開放してるサーバーに
Socket sock=new Socket("127.0.0.1",1000);
と接続した後に、受信用の1000番のポートを変える方法ってあるんですか?
28デフォルトの名無しさん:2006/10/01(日) 23:55:59
>>27
29デフォルトの名無しさん:2006/10/01(日) 23:56:03
どう見てもわかってません。
30デフォルトの名無しさん:2006/10/02(月) 00:00:41
>>27
acceptすると待ち受け用とは別のソケットが生成される。
通信はそのソケットを使って行い、新規の待ち受けは引き続き今までのソケットで行う。
3123:2006/10/02(月) 00:03:17
>>30
ありがとうございます。
それなら納得です。
ちなみにacceptで新規に生成されたソケットのポート番号はどうやって決まるんですか?
32デフォルトの名無しさん:2006/10/02(月) 00:04:51
いちいち人に聞くな
33デフォルトの名無しさん:2006/10/02(月) 00:05:49
>>31
待ち受けポートと同じ。

cli * srv 10000
cli 2222 srv 10000
cli 2223 srv 10000

相手のIPアドレスとポート番号は一意なのでソケットの仕組みが勝手に取捨選択してくれる。

3423:2006/10/02(月) 00:10:31
>>33
重ね重ねありがとうございます!
とても助かりました!!
35デフォルトの名無しさん:2006/10/02(月) 01:12:36
とりあえず、この程度の事は人に聞くだけでなく自分でも試してみる事
36デフォルトの名無しさん:2006/10/02(月) 02:27:38
レベルの低い話すんな糞がき
37デフォルトの名無しさん:2006/10/02(月) 04:38:00
人に訊く前にプログラム組んで試さないプログラマってクズだよな。

今時、80番ポートで何でも通しちゃうので、ポート番号で語る事自体が無意味。
変なネットワークが広まって変な使い方が当たり前になってきて、どんどんインターネットの精神が崩壊していく。
みんなでリセットしてUUCPからやり直した方が良いと思う。
38デフォルトの名無しさん:2006/10/02(月) 04:53:49
ドキュメント調べずに、とりあえず処理系依存でたまたま動いたからOKにするプログラマが最大の癌
それだったら作れない方がマシ。そんな危険なコードが出回ったら大変な事になるぜ。
39デフォルトの名無しさん:2006/10/02(月) 05:59:46
早起きしてみれば、ゴミが2個あったよー
40デフォルトの名無しさん:2006/10/02(月) 09:11:33
>>8は新着テンプレだな。

> 電話屋育ちの純粋培養プロトコルが棺入りで出荷される

の意味が分からないのだが、これは何なの?
41デフォルトの名無しさん:2006/10/02(月) 16:59:59
>>38
教えて君は処理系依存の動作について自分で調べるかわりに他人の結果を聞いて丸写しするから余計悪い
ドキュメントや規格書は絶対に読まない
42デフォルトの名無しさん:2006/10/02(月) 17:36:05
宿題感覚だよな。
とりあえず動けば終わり。
だから社会に出て正解が無いと、とたんに詰まって鬱に成る。
43デフォルトの名無しさん:2006/10/02(月) 19:20:20
エーテルネットワークが速くなったので、非同期転送モードが廃れたよ、という話じゃまいか
44デフォルトの名無しさん:2006/10/02(月) 20:35:54

前スレで紹介のあった(無償の)Visual C++ Express Edition
のインストールがうまくいきません。正確にはSDKが追加インストールできないのです。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=780120&SiteID=7
・・・ここに質問を書いたのでMSサイトへ回答ヨロ!

45デフォルトの名無しさん:2006/10/02(月) 21:03:30
>>44
・どこがネットワークプログラミングの質問だ
・よそで質問してこっちまで引っ張ってくるな

氏ねばいいのに。
46デフォルトの名無しさん:2006/10/02(月) 21:14:34
俺も正直SOAPはやりすぎたと思うな。
しかし使っていいプロトコルを絞るという意味では
他に良い手があるとも思えん
47デフォルトの名無しさん:2006/10/02(月) 22:18:58
>>43
WDM, ATM, IPそれぞれが、X over Yとなるなら分かるが、TCPって何よ?
4833:2006/10/02(月) 22:35:34
初心者いじめが大好きな君のために、>>33に三つの嘘を入れておいた。
それには触れずねちねちねちねち・・・w
49デフォルトの名無しさん:2006/10/02(月) 22:37:37
>どこがネットワークプログラミングの質問だ

説明すると、
ネットワークのプログラミングのツールとしてVC++を使うという
依存関係から話が派生したものです。

そう口汚くののしる態度は世の中ではうまくやっていけない
人であろう・・・と思いました。大変残念です。

50デフォルトの名無しさん:2006/10/02(月) 22:44:47
>>46
APレベルのRPCの標準化としてSOAPを決めるならば、
それは異なる機種間で制御データを共通化してやりとりするという意義において、
必要性や利便性が出せると思うが、

自分の会社だけの装置に特化できるものならば、
そのほうが単純なプロトコルになれると思う。
51デフォルトの名無しさん:2006/10/02(月) 23:54:41
SOAPって本当に使われてるんですか?
52デフォルトの名無しさん:2006/10/02(月) 23:55:37
使ってるよ。
53デフォルトの名無しさん:2006/10/02(月) 23:56:37
うちも。
54デフォルトの名無しさん:2006/10/03(火) 00:04:26
5年待って普及せん技術ってダメでしょ。もう。
55デフォルトの名無しさん:2006/10/03(火) 00:06:46
かわいそうに…僻地にいるんだね
56デフォルトの名無しさん:2006/10/03(火) 00:12:34
楽天もvectorもmixiも東証一部もみんなSOAPのレシーバを持っていて、状況に応じてウェブサービスを繋ぎ変えてビジネス革命!みたいなことになってないじゃないですか。
57デフォルトの名無しさん:2006/10/03(火) 00:15:24
なんていうか、花形だけで舞台作ってる感じがするなぁ
そんなんじゃないすよ
58デフォルトの名無しさん:2006/10/03(火) 00:29:30
>>54
当然、SOAPの話だよね。
59デフォルトの名無しさん:2006/10/03(火) 00:37:43
僕もSOAPに行きたいです。
60デフォルトの名無しさん:2006/10/03(火) 01:13:48
マスターアップまで我慢しろ
61デフォルトの名無しさん:2006/10/06(金) 16:34:35
ウィルス対策ソフトみたいにメール受信してるものを横取りして特定のキーワードがあったら
件名に印をつけるというSPAM対策ソフトを作りたいんですが、Winsock2でできるもんでしょうか?
できるとしたら何を調べにいけばいいでしょうか?
62デフォルトの名無しさん:2006/10/06(金) 21:02:19
無理です。諦めてください。
63デフォルトの名無しさん:2006/10/06(金) 21:09:58
POPFileを調べに行けばいいと思うよ?
64デフォルトの名無しさん:2006/10/07(土) 01:22:39
LSP使えばできるだろ
65デフォルトの名無しさん:2006/10/07(土) 04:00:04
ローカルにPOPのプロキシ鯖でも作ればいいんでね
ついでにWinsock2.1以降ならキャプチャできた…けど意味ないか
66デフォルトの名無しさん:2006/10/07(土) 09:25:09
>>61
つwinpcap
67デフォルトの名無しさん:2006/10/07(土) 12:26:59
プロキシPOPサーバ作る方が遙かに簡単だと思う。
68デフォルトの名無しさん:2006/10/07(土) 13:31:17
質問です。
winsock2で自分マシンに割り振られたのサブネットマスクを取得する方法ってありますか?
69デフォルトの名無しさん:2006/10/07(土) 14:31:17
70デフォルトの名無しさん:2006/10/07(土) 14:46:45
>>69
そのページは、元質問と何か関係があるのか?
7168:2006/10/07(土) 16:31:34
他の方法で自分のマシンに割り振られたサブネットマスクを取得する方法ってありますか?
当方の環境はOSがWindowsXP SP2、コンパイラがVS2005で、言語はC++を使ってます。
72デフォルトの名無しさん:2006/10/07(土) 17:56:51
>>71
>>69にあったのじゃだめなの?
WinXPHomeSP2だとできたよ?
7368:2006/10/07(土) 18:27:53
実は今、自分のIPアドレスとサブネットマスクをどうにかして取得して
ネットワークアドレスを出力するっていうしょーもないプログラムを
作ってるんです。winsock2だとIPアドレスはgethostbyname関数で簡単に
取得できたんですけどねぇ、今日は朝からずっとググってるんですけど
わからないので書き込ませていただきました。
74デフォルトの名無しさん:2006/10/07(土) 18:46:56
getsockoptで出来なかったっけ。
75デフォルトの名無しさん:2006/10/07(土) 18:54:33
ていうか、平然と「自分の」という言葉をずっと使っているけど
IPアドレスもサブネットマスクも、NICごとに割り当てるものだろ?(仮想も含めて)
だから、インターフェースを特定してそれを元に取得するものであって
「マシン全体で」のものなんかないんじゃないのか?

どうやって取得するのかは知らんけど。
76デフォルトの名無しさん:2006/10/07(土) 19:09:51
ioctlで取れるな。unixでは。

77デフォルトの名無しさん:2006/10/07(土) 20:24:57
>>73
>>72も言っているが、>>69のリンク先の、IPヘルパー「Ethernetアダプタ情報の取得」じゃあ
ダメなのか? 確かに、そこの例はVBだけどさ。ソース見ればAPIは分かるかと。

MSDN LibraryのGetAdaptersInfoの、Example Codeを参照。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getadaptersinfo.asp
78デフォルトの名無しさん:2006/10/08(日) 00:08:03
「自分の」IPアドレスならloopbackでいいんでねw
ってのはともかく、通信相手から見える自分を指すIPアドレスってのは
自分だけで知るのは困難だよな。
NICごとどころか仮想でインターフェース増やしまくれるし
ルーティングの段階で相手ごとに選択されるわけだからな
7968:2006/10/08(日) 11:54:54
GetAdaptersInfoで上手くIPアドレスとアブネットマスクを取得できました!
ありがとうございました。
80デフォルトの名無しさん:2006/10/09(月) 16:00:02
アブネットマスク
81デフォルトの名無しさん:2006/10/09(月) 16:03:15
あぶね!!!っとマスク

82デフォルトの名無しさん:2006/10/09(月) 16:17:04
192.168.0.1/32
83デフォルトの名無しさん:2006/10/09(月) 18:46:41
255.255.255.255/35
84デフォルトの名無しさん:2006/10/10(火) 09:51:59
WindowsXP Professional SP2 上で自作のTCP/IPサーバープログラムを24時間連続稼動させています。
クライアントはLinuxで1秒間隔でサーバー側でデータを送っています。

で、通信ログを出力させて稼動状態を見ていたのですが、
3日に一回程度の頻度でサーバーが一瞬応答しなくなる (10秒ほど) 現象に悩んでいます。
3日に一回程度(1日置いて発生することもあれば1週間何事もないことも・・・)、時間帯は不規則です。

Windowsインストール後、自作のサーバープログラム以外はインストールしてません。
Windowsは不規則にOSが負荷の高い処理を実行して、その間ユーザープロセスを止めてしまうようなことがある。
と、以前何かで見たことがあるのでそれが原因かと思ってるのですが。

このWindowsでユーザープロセスを止めるような不規則な処理がなんだか、ご存知が説明のあるHPを知ってる人いますか?
85デフォルトの名無しさん:2006/10/10(火) 10:13:32
>>84
原因がWindowsであると断定した理由は?
86デフォルトの名無しさん:2006/10/10(火) 10:26:27
>>85
実はまだ断定してません、というか原因調査中の状態です。

「応答しなくなる」と書きましたが、詳しくはサーバーの応答が10秒ほど遅れて送信されてくる、です。
クライアント側でタイムアウトを1秒としているため、通信ログに異常が記録されていました。

サーバープログラムでは、データ受信後に決まった処理しか行わず、特に負荷に波がある処理はさせていません。
遅れても応答は返ってくるので、サーバプロセス自体が一瞬停止させられたのではないかと疑っています。
(ちなみにネットワークですがPC〜Linux間をクロスケーブルで繋いだだけの最小構成です)

後Windowsがプロセスを停止させたと判断するような材料ですが。
別プログラムでCPU/メモリに負荷を与えると、サーバープロセスが一時的に停止したりしますが、
この時残されている通信ログが、前述した異常時のログと動きが一致してました。
87デフォルトの名無しさん:2006/10/10(火) 11:34:40
じゃあタイムアウトを15秒ほどに伸ばせば解決だ。
88デフォルトの名無しさん:2006/10/10(火) 11:38:03
省電力関連で一時的にNICが止められた とか?
後ろ向きな解決法は >>87 だろうけどね。
8984:2006/10/10(火) 11:58:38
回答ありがとうございます

>>87
おまいとは気が合いそうだ。 orz

>>88
コントロールパネルの電源オプションは全て"なし"に設定してるのですが。
他にNIC止める要因ってあるでしょうか。
でもNICの電源供給やめられたらsocketも生きてないような気が・・・、遅れても応答が返るんで
socket自体は生きてるようなんですよね。

簡単なデータロガー的なものを作ってる人で、似た問題が起きてる人いないかな。
90デフォルトの名無しさん:2006/10/10(火) 12:51:09
なんで後ろ向きやねん。
遅れても問題無いように作るのが先だろ。1秒は厳しすぎだ。
91デフォルトの名無しさん:2006/10/10(火) 12:56:34
ま、順序はどうでも良いんだけどさ。
なんとなくわからずに延ばしただけじゃ気持ち悪いじゃん。
まして、クロスケーブルのピアピア接続なわけだし…
92デフォルトの名無しさん:2006/10/10(火) 13:02:52
くだらない事にこだわるんだな。
9384:2006/10/10(火) 13:03:51
>>90
1時間分のバッファを持たせて、送信できるようになったら送信するようにしてます。
なのでデータロストはなく、「仕様です」と無表情に言えば通る話だと思います。
・・・やっぱり1秒は厳しいのかな。

>>91
そうなんですよ、気持ち悪くって・・・しかもログに残るようになっちゃってるし。
後で、「しまった!、ログに吐かなきゃバレなかったのに」とは思いましたが。
94デフォルトの名無しさん:2006/10/10(火) 13:08:55
>87でおわっとるやんけ。
9584:2006/10/10(火) 14:55:20
>>94
いやいや、障害対処じゃなくて原因が知りたいんですよ。
ユーザーアプリを止めるような高負荷なことをWindowsXPが不定期にやってるのかなと。
96デフォルトの名無しさん:2006/10/10(火) 15:09:03
   . . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::
       ∩___ ∩ . . . .: : : ::: : :: ::::::::: ::::::::::::::::
       / :::::::::::::::::ヽ:| 監視銘柄殆どナイアガラなのになんで日経プラス?
       |/ ̄X ̄丶;:丶. .日経平均って絶対計算間違ってるクマ
     ミ/ :::/●ヽ  ヽ::| . .:: :.: ::: . ::::::::::::::::::::::::::::::::
     / :::/ ;;:|∪| ::ヽ  ヽ .. :. :. .:: : :: :: :::::::: : ::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ ̄ヽ、_ノ ̄
97デフォルトの名無しさん:2006/10/10(火) 15:12:13
>>95
ネットワークプログラミングとしての話は終わってる。
続けたければ他所へ行け。
98デフォルトの名無しさん:2006/10/10(火) 15:18:46
>>97
それもそうだ

>>96
ぶっ、こんな所に誤爆してやがる。もうどうでもよくなってきた、吊ってくるわ
99デフォルトの名無しさん:2006/10/10(火) 15:35:37
>>93
そのサーバアプリって、接続元を逆引きしたりしてるんじゃない?
んでへぼISPのせいで名前解決が時々遅れるとか。
100デフォルトの名無しさん:2006/10/10(火) 15:37:48
クロスケーブルの中のISPも大変だな
101デフォルトの名無しさん:2006/10/10(火) 15:43:28
Win2Kでプログラムをwebを取得するような組んでいます。
初心者なのでブラウザーが送信するコマンド(?)を使っていますが、
recv関数で止まります。

GET http://www.google.co.jp/ HTTP/1.0
Accept: */*
Accept-Language: ja
Cookie: PREF=ID=d3dc13c725aba505:TM=1131299185:LM=1131299185:S=7Z_D3LwF_ybAD27s
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.google.co.jp
Proxy-Connection: Keep-Alive

だと、無事にhttpが取得できるのですが、
>>102に続く

102デフォルトの名無しさん:2006/10/10(火) 15:44:42
>>101の続き

GET http://www.google.co.jp/ HTTP/1.1
Host: www.google.co.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.0.7) Gecko/20060
909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
n;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: PREF=ID=452332018f76a489:TM=1159774461:LM=1159774543:L=156aP5bKh55yM5YyX
5Lmd5bee5biC5YWr5bmh6KW_5Yy65p2x5bed6aCt55S6:S=UEbzdt83qv13aXSX

だと、recvで受信に行ったところで止まってしまいます。
telnetで同じように送信しても途中で止まっているのですが、
接続を完了するにはどうしたらよいでしょうか?

あと、なぜ受信途中で止まってしまうのでしょうか?
すみません、どなたか教えてください。
103デフォルトの名無しさん:2006/10/10(火) 15:46:42
>>102の訂正です。

変なところに改行が入っていました。

GET http://www.google.co.jp/ HTTP/1.1
Host: www.google.co.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: PREF=ID=452332018f76a489:TM=1159774461:LM=1159774543:L=156aP5bKh55yM5YyX5Lmd5bee5biC5YWr5bmh6KW_5Yy65p2x5bed6aCt55S6:S=UEbzdt83qv13aXSX
104デフォルトの名無しさん:2006/10/10(火) 16:14:45
>>101-103
改行コードはちゃんと CR LF にしてる?
最後のヘッダ(この場合 Cookie:)の後にさらに CR LF してる?
(最後は S=UEbzdt83qv13aXSX CR LF CR LF になる)
105デフォルトの名無しさん:2006/10/10(火) 16:53:51
>>104
最後のヘッダはきちんと空行を入れるようにしています。
あと、>>101ならば自前のプログラム上でも、telnet上でも、
きちんと取得できるので、基本的に手法は間違っていないと思っています。
ただ、telnetでのアクセスでも>>103だと途中で止まったままになっています。

問題点はどこにあるのでしょう?
106デフォルトの名無しさん:2006/10/10(火) 17:01:41
>>105
うちから >>103 のリクエストをtelnetで投げたら、ちゃんとレスポン
スが表示されたよ。

107デフォルトの名無しさん:2006/10/10(火) 17:08:41
>>105
ちなみに>>101-103のリクエストはproxyに対して行うものであることは
ちゃんと理解してる?
108デフォルトの名無しさん:2006/10/10(火) 17:37:16
>>107
ありがとうございます。
すみません。
書き込んでいたのはリクエストを取るために作った、
自前の簡易サーバーのログからでした。
プロクシに対してのリクエストなのをすっかりと忘れていました。

リクエストを“GET http://www.google.co.jp/ HTTP/1.0\r\n\r\n”とすると
問題はありませんが、“HTTP/1.0”を“HTTP/1.1”にすると
recvの所で止まってしまいます。
telnetでも“HTTP/1.0”ならば“ホストとの接続が切断されました。”まで
一気に表示されてtelnetが終了します。
“HTTP/1.1”にするとレスポンスの後に改行を入れなければ、telnetの終了まで
いきませんでした。(Win2Kで試しました)
問題点はここだったようです。

まだ疑問点などは色々とありますが、もう一度勉強をしなおしてきます。
ありがとうございました。
109デフォルトの名無しさん:2006/10/10(火) 17:49:55
>>107
HTTPの今後の仕様で変わるかもしれないから、相手がプロクシじゃなくても
通るようになってるって話がどこかになかったっけ?
110デフォルトの名無しさん:2006/10/10(火) 18:04:01
keep-aliveあたりが問題じゃないの
111デフォルトの名無しさん:2006/10/10(火) 18:07:43
>>110
リクエストを“GET http://www.google.co.jp/ HTTP/1.1\r\n\r\n”だけに
しても同様の問題がおきます。

もう一度、勉強のしなおしとプログラムの見直しをします。
112デフォルトの名無しさん:2006/10/10(火) 18:20:08
この際RFC読めよ。
113デフォルトの名無しさん:2006/10/10(火) 18:22:11
ソース晒す方が早いよ
114デフォルトの名無しさん:2006/10/10(火) 18:29:11
>>113
ソース晒すとパクラレルので・・・
115デフォルトの名無しさん:2006/10/10(火) 18:35:17
そんなバグったソースパクってどうするんだよ。
116デフォルトの名無しさん:2006/10/10(火) 18:37:48
>>115
それはパクル人に聞いてもらわないとなんとも・・・
117デフォルトの名無しさん:2006/10/10(火) 18:41:00
>>114
HTTPのGET/RESPONSEぐらい、お前からパクるまでもないから心配しなくて良い。
そんなもんWeb上にいくらでも転がってる。

100本以上のセッションをIoCompletionPortとか使いながらスレッドプールで
捌いて、しかも連続する同一ホストに対するセッションをpipelineでまとめたり、
サーバがパイプラインを嫌ったときに、自動的に再試行してくれたりとかまで
対応してるんならパクるが。
あと、別スレッドのロジック処理に回す時も、memory-to-memoryのコピーが
最少となるように工夫されてると良い。
118デフォルトの名無しさん:2006/10/10(火) 18:48:10
>>117
当然ながらIO完了ポートを使っていますし、
スレッドもプールして使いまわしています。
HTTP1.1でパイプラインが使える場合は使いますし、
使えない場合は使いません。
スレッドが違ったとしても態々コピーするようなことはしてません。
というような当たり前の実装をしていますが・・・
119デフォルトの名無しさん:2006/10/10(火) 19:20:48
メイル欄、空の人は荒しだな。放置推奨
120デフォルトの名無しさん:2006/10/10(火) 23:41:48
>>95
やってるよ!
だから諦めろ
--
121デフォルトの名無しさん:2006/10/10(火) 23:45:03
>>118
じゃ、IO完了ポートも使わない
スレッドもプールしない
パイプラインが使える時も使わないし、そうじゃない場合も使わない
同じスレッドでもメモリコピーしまくりの
単純なプログラムで検証汁
122デフォルトの名無しさん:2006/10/10(火) 23:49:32
なんか変なところを刺激されたみたいだな
123デフォルトの名無しさん:2006/10/10(火) 23:53:11
そもそも毎秒おきに受け取って処理するなんてリアルタイムOSじゃ無いと無理。
リナクスでも受け側では遅延すると思うよ。もちろんXではDVDでも見てて負荷かけててくれ。
124デフォルトの名無しさん:2006/10/11(水) 00:22:30
>>119
この場合、荒しとは言わない
ただの厨房だ
125デフォルトの名無しさん:2006/10/11(水) 00:24:14
気に入らないならスルーしろ
126デフォルトの名無しさん:2006/10/11(水) 00:54:43
>>123
お前プログラム組んだことあるのか?
127デフォルトの名無しさん:2006/10/11(水) 01:18:03
>>124
>>101-103の質問をしたものです。
>>119は私ではありませんが、質問した本人以外がパクラレルから
ソース公開は嫌だという書き込みは荒らしだと思うんですよ。

C言語を勉強して一週間程では>>117-118が何のことやら。(^_^;
128デフォルトの名無しさん:2006/10/11(水) 01:23:29
接続が切断されるまでに時間が掛かる理由は
ttp://www.studyinghttp.net/connections
でいいんじゃね?
129デフォルトの名無しさん:2006/10/11(水) 01:56:36
http1.1のRFC読めよって話なんだよ
130デフォルトの名無しさん:2006/10/11(水) 04:24:47
>>108
> 書き込んでいたのはリクエストを取るために作った、
> 自前の簡易サーバーのログからでした。
HTTP/1.1に対応していないならあなたのプロキシは転送時に
HTTP/1.1をHTTP/1.0に書き換えなければならない。
まあ>>129ってこった。
131デフォルトの名無しさん:2006/10/11(水) 09:31:51
>>130
私のプロキシって何ですか?
作った覚えがないプロキシが対応していないと言われても・・・。
132デフォルトの名無しさん:2006/10/11(水) 09:34:03
>>131
提示されたログは明らかにproxy宛のリクエストだから
そのログをとった「簡易サーバー」はproxyとしか思えんわけだが。
133デフォルトの名無しさん:2006/10/11(水) 10:46:25
>>127
> ソース公開は嫌だという書き込みは荒らしだと思うんですよ。

で、晒す気はないと?

134デフォルトの名無しさん:2006/10/11(水) 12:30:16
逃げたか?プッ
135デフォルトの名無しさん:2006/10/11(水) 14:50:45
>>134
いえ、勝ち戦で逃げる必要は無いので、それはあり得ません。
136デフォルトの名無しさん:2006/10/11(水) 15:41:55
私もproxyを作った覚えはないのですが、参加してもよいですか?
137デフォルトの名無しさん:2006/10/11(水) 15:58:18
proxyは韓国起源ニダ
138デフォルトの名無しさん:2006/10/11(水) 16:27:45
>>137
何を言うアルか!
139デフォルトの名無しさん:2006/10/11(水) 17:00:44
コード出さない奴はエスパースレへ誘導
140デフォルトの名無しさん:2006/10/11(水) 17:16:57
私だけが私のバグを ああ未確認
141デフォルトの名無しさん:2006/10/11(水) 18:50:38
俺の天才的なコードを晒すわけねーだろばーか^^
142デフォルトの名無しさん:2006/10/11(水) 22:11:59
HTTPとPROXYの話が出たから。
proxyさばっぽいのつくってます。
HTTPはしゃべれるようになったんですが、
HTTPSでつまずいてる。
クライアントからCONNECTメソッドが来たらどうしてあげればよい?
143デフォルトの名無しさん:2006/10/11(水) 22:27:22
>>142
HTTPと同じ。
144デフォルトの名無しさん:2006/10/12(木) 00:51:08
>>142
CONNECT www.example.com:443 HTTP/1.0\r\n
\r\n
という感じのリクエストが来ると思うので、www.example.com の 443/tcp に接続を試みる。

接続が成功すれば、
HTTP/1.0 200 OK\r\n
\r\n
を返して、その後はサーバーとクライアントの間のやり取りをそのまま転送し、
どちらからか接続が切られるまで転送を続ける。

接続が失敗した場合は、
HTTP/1.0 504 Gateway Timeout\r\n
\r\n
等を返して、接続を切る。

それから、ポートの指定が443以外の場合は、403 Forbidden等を返して接続を切るようにしたほうがいいと思う。
理由は省略するけど、HTTP Proxyを作っているなら分かるだろうし、分かるべきだと思う w
145デフォルトの名無しさん:2006/10/12(木) 01:42:00
問題はwww.example.com:443によってssl証明書を変える必要が有る場合。
最初からssl接続しないと通信できないしそのためにはssl証明書が必要。
つまり鶏卵問題が発生する。

バーチャル鯖は辞めとけってことだが。
146デフォルトの名無しさん:2006/10/12(木) 01:54:35
というか、TLSのハンドシェイクもそのまま鸚鵡返しにすればいいだろ?
147デフォルトの名無しさん:2006/10/12(木) 02:56:19
>>145
接続先によって、SSL/TLSのクライアント証明書を使い分ける場合の事?
それとも、クライアント証明書が不要で、サーバ証明書のみが必要な場合の事?

どちらにしても、そういった場合には証明書関連で不都合が生じるとは思う。
でもそれはクライアントの実装等の問題であって、HTTP Proxyの問題ではないはず。

DNS Aliasを使う場合やIP Addressを直に指定する場合は、HTTP Proxyの有無に関わらず、
トラブルの原因になりがちだし、HTTPSのコンテンツフィルタリングを行う場合は、かなり問題になると思う。

でも >>142 はそこまでやりたいとは言っていないし、
とりあえずは、 >>144 の回答でほぼ問題がないかと。

それ以上となると、ネットワークというより、セキュリティ関連の方の話題になってしまうと思う。
簡潔に言うと >>146 の言うように、SSL/TSLに関しては単に中継すればいいだけ。
148デフォルトの名無しさん:2006/10/12(木) 06:50:21
そこでIE7からサポートされてFx3でもサポート予定のServer Name Indicationですよ。
149デフォルトの名無しさん:2006/10/14(土) 02:08:11
ttp://ascii24.com/news/i/topi/article/2006/09/21/664704-000.html

wwwありのURLは、実在のホスト名を指すが、ドメイン名というのは本来実体のない
抽象的な存在だ。だから、wwwなしのドメイン名そのものをアクセス可能なURLとして
設定するというのは、従来の設定方法から比べると、ややトリッキーではある。しかし、
「もう時代は変わった。こっちのほうが便利だらかいいんじゃん?」というノリで変えて
しまうルーズさ、またそれができてしまうという、いい意味での仕様の曖昧さこそ、
インターネットの重要な本質ではないだろうか。インターネットが活力を失わずに進化を
続けられているのはガチガチに仕様が決まっていないこと。だとしたら、wwwなしがWeb2.0的だ。
150デフォルトの名無しさん:2006/10/14(土) 03:57:47
ascii24.com/news/i/topi/article/2006/09/21/664704-000.html
リンク先を見ると、
>(編集部 西村賢)
って奴が責任者なんだろうな。こいつ年はいくつなんだ?
恥ずかしい奴だな。wwwwwwwwwwwww
151デフォルトの名無しさん:2006/10/14(土) 07:56:18
150も150で「どこがおかしいのかが実はわからない」臭がプンプンするw
152デフォルトの名無しさん:2006/10/14(土) 08:04:43
コンピュータ名でしょ?
153デフォルトの名無しさん:2006/10/14(土) 08:33:34
>>151
wがあと2つ足りないんじゃないか
154デフォルトの名無しさん:2006/10/15(日) 21:54:14
connect
send
recv
send
recv


HTTPで上のようにやりたいんですけど、2回目のsendで失敗します
どうすればいいんでしょうか…
155デフォルトの名無しさん:2006/10/15(日) 22:01:32
>>154
失敗しないように2回目のsendをHTTPでやればいいだけなのだと思うのですが…
156デフォルトの名無しさん:2006/10/15(日) 22:36:01
HTTP/1.1
157デフォルトの名無しさん:2006/10/15(日) 23:26:07
HTTP/1.1でもConnection: closeつけてリクエストしてたりして
158デフォルトの名無しさん:2006/10/15(日) 23:43:17
>>156
HTTP/1.1 って、Keep-Alive がデフォルトでしたっけ?

>>154 の環境が分からないですし、具体的にどういうことがやりたいのかもいまいちですが、
1つのHTTPリクエストを複数回に分けて送ろうとしているなら、考え直したほうがいいと思います。

コネクションを張りなおさずに複数のHTTPリクエストを出したいなら、リクエストヘッダに
Connection: Keep-Alive
Keep-Alive: 300
等のようなものを含めてみるとかでしょうか。

ただ、CGIのような動的コンテンツの場合などサーバーが、
Connection: close
で、コネクションを切断する場合もあるので、必ずしもうまくいくとは限りません。
159デフォルトの名無しさん:2006/10/15(日) 23:52:46
>>158
HTTP/1.1はKeep-aliveではなくpersistent connectionがデフォルト
(Keep-aliveはchunked encodingを許さないのでcontent-lengthが付けられないなら
closeで終了を知るしかない)
160158:2006/10/16(月) 00:05:29
>>159
難しいです・・・ Keep-Alive と persistent connection の違いを勉強しなおします。

Keep-Alive と chunked encoding は併用出来ないのですか。
それなら、動的コンテンツでサイズが分からない場合は、コネクションの切断で終了を知らせるしかなさそうですね。
161デフォルトの名無しさん:2006/10/17(火) 05:40:04
いやだからpersistent connectionとchunked encodingを使うの。
Keep-AliveはHTTP/1.0の拡張でRFC1945の付録に書かれてる。
HTTP/1.0だからchunked encodingは禁止(とRFC2616に書かれてる)
persistent connectionはHTTP/1.1の標準仕様だしデフォルト。
当然chunked encodingも使える。というかまさに
> 動的コンテンツでサイズが分からない場合
に終了を知らせるための機能なんだから。
162154:2006/10/17(火) 18:51:27
POSTでデータを送るとき、Content-Lengthの値が間違ってました
固定データだからといって自分で数えますた

皆さんの予想通り凡ミスです
すみませんでした…
163デフォルトの名無しさん:2006/10/17(火) 18:56:12
でんでん
164デフォルトの名無しさん:2006/10/17(火) 19:03:37
dedenn
165デフォルトの名無しさん:2006/10/17(火) 19:38:14
dandan心魅かれてく
166デフォルトの名無しさん:2006/10/18(水) 07:18:03
IPv6リンクローカルマルチキャストアドレスを指定してソケットプログラミングを組むことは可能ですか?
167166:2006/10/19(木) 04:29:17
うーん。。
UDPのmanを見る限り
「UDP ソケットが生成されるとき、ローカルアドレスやリモートアドレスは指定されない。
正しい行き先アドレスを引数として sendto(2) や sendmsg(2) を呼べば、データグラムはただちに送信される。」
とあるので、やはりリンクローカルアドレスの使用は無理っぽいですね。。
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/udp.7.html

あるマシンがリンクローカルマルチキャストを送信して、同一リンク上の他のマシンが応答するようなプログラムを書きたいんですけど、なにかいい方法はありませんか?
168デフォルトの名無しさん:2006/10/19(木) 09:10:12
>>166-167
分かってるようで分かって無い日本語なので何をこたえりゃいいのか分からんwwwwwww
> sendto(2) や sendmsg(2)
169デフォルトの名無しさん:2006/10/19(木) 10:22:08
>>167
ローカルアドレスのローカルと、リンクローカルアドレスのローカルは意味というか、
範囲が違うぞ。
リモートのリンクローカルアドレスだってある。
IPv4だと普通にsocketつくって、setsockoptでマルチキャストグループに入って送受信すれば
いいだけだが、v6だと違うのか?
170デフォルトの名無しさん:2006/10/19(木) 10:36:53
>>167
つbind
171デフォルトの名無しさん:2006/10/19(木) 10:59:59
>>166
可能です。
172166:2006/10/19(木) 20:34:13
>>168
すいません。。
現状としては、クライアント側でsockaddr_in6.sin6_addr.s6_addrにサーバのグローバルアドレスを指定すると普通にsendtoして送信することはできます。
ここで、"ff02::1%[interface name]"などのリンクローカルマルチキャストアドレスを指定するとsendtoでエラーをはいてしまってどうしたものかと。。
ちなみに、"fe80::hoge"などのリンクローカルアドレスでも同様にエラーになってしまいます。

>>169
助言していただいてありがとうございます。
リンクローカルアドレスを指定する場合はsetsockoptすればいいんですかね?

>>170
サーバ側では、リンクローカルアドレスをbindしているんですがうまくいかなくて。。

>>171
ありがとうございます。
173デフォルトの名無しさん:2006/10/19(木) 21:35:46
1. sendtoするまえにソケットを明示的にリンクローカルアドレスにbindする
2. マルチキャストならさらにIPV6_MULTICAST_IF でちゃんとIFを指定する

とかくらいしか思いつかない・・・
174デフォルトの名無しさん:2006/10/24(火) 16:11:22
現在Linuxでソケットプログラミングをしているのですが、
なぜか一定数接続したところでacceptが固まってしまいます。
短い間隔、長い間隔、複数ホストからの接続を試みてみましたが、
いずれも必ず合計382接続したところでacceptから反応が返ってこなくなってしまいます。
同じプログラムでWindowsでは問題なく動いているので、
Linux環境特有のなにかがあると思うのですが。。。
ちなみに他のスレッドから待ち受け用のソケットと閉じるとacceptから抜けました。
どなたかご存知の方いらっしゃいませんか?

LinuxのディストリはUbuntu Desktop、gcc 4.0.3で、
ttp://gimite.ddo.jp/gimite/cppmess.htm
のラッパを使用して以下の様にプログラムしました
175174:2006/10/24(火) 16:11:55
void *server_thread(void *arg){
 gimite::socket_stream s((gimite::socket_t)arg);
 //hogehoge
 s.close();
 return NULL; 
}

void accept_thread()
{
 gimite::server_stream_socket ss;
 if(!ss.bind(port)) return;
 while(!terminate){
  gimite::socket_t cs = ss.accept();
  if(cs != -1){
   pthread_t thread;
   pthread_create(&thread, NULL, server_thread, cs);
  }else{
   break;
  }
 }
}
176174:2006/10/24(火) 16:55:35
すみません 自己解決しました
一定数以上スレッドを作成すると、pthread_create() が
"Cannot allocate memory"を返してきました。
この状態になると accept() が固まるようです。
pthread_create() のあとに pthread_detach() を呼び出すことで解決できました。
177デフォルトの名無しさん:2006/10/24(火) 16:57:48
CreateGame〜陸海空オンライン〜
日本NO1MMO製作プロジェクト開始!

PG募集!
178デフォルトの名無しさん:2006/10/24(火) 16:59:51
>>174-175
スレッド数制限じゃねぇかな。PTHREAD_THREADS_MAXか、ulimitとか。
適時、死んだスレッドはpthread_joinで回収しろ。
それまでは、リザルトコード保持のために、スレッド情報が保持される。
スレッド終了時に自分の、pthread_tをキューにでも積んでいって、
適当なタイミングで、pthread_join()を回すとか。
179174:2006/10/24(火) 17:05:52
>>178
ありがとうございます。
リザルトコードは欲しいのでその方式にしたいと思います。
180デフォルトの名無しさん:2006/10/24(火) 21:02:14
スタックオーバーをちゃんとエラーとして出すコンパイルオプションがあるんじゃなかったっけか。
少なくともSunStudioのCCにはあるが。。。
181デフォルトの名無しさん:2006/10/24(火) 21:18:58
スタックオーバー?
182デフォルトの名無しさん:2006/10/25(水) 02:15:43
C/C++で、本読みながらネットワーク勉強しはじめました。
ほんのサンプルはなんか便利な関数使っていてわからないのですが、
GETとかPOSTとかコマンドは、実際に送っているデータもASCII文字列を
送っているのでしょうか。

send関数のバッファーbuffに、その文字列入れて
recvで待っていると"200"のASCII文字列が返ってくるということでしょうか。
183デフォルトの名無しさん:2006/10/25(水) 07:26:53
違います。
184デフォルトの名無しさん:2006/10/25(水) 08:36:30
182です。解決しました。
ttp://x68000.q-e-d.net/~68user/
こちらのページで、実際のコーディングでどんな文字列
送信してるのか詳しく書いてありました。
185ACE:2006/10/25(水) 09:58:08
C/C++で、本読みながらネットワーク勉強しています。
ACE(ADAPTIVE Communication Enviroment)って言うのは実際には
使われているんでしょうか?
ソケットAPIに比べてとても優秀だと言われていますが、
やっぱり基本はソケットAPIですかね?
186デフォルトの名無しさん:2006/10/25(水) 10:07:21
>>185
そもそも同じ土俵に持ってくることが間違い
187ACE:2006/10/25(水) 10:09:19
え、本当ですか?
188デフォルトの名無しさん:2006/10/25(水) 10:16:09
とりあえず本家でoverview見てみ
http://www.cs.wustl.edu/~schmidt/ACE-overview.html
189ACE:2006/10/25(水) 10:30:35
申し訳ありません。
ありがとうございました!!!!!
190デフォルトの名無しさん:2006/10/25(水) 11:26:45
HTTPクライアントを作っていて思ったのですが、
VMwareの仮想NICなど複数のNICが存在する環境で、
bindしなければランダム?で使用するNICが選ばれてしまい、うまく動作しないことがあります。
bindするにしても、どのIPアドレスにbindすればWebサーバに接続できるのかがわかりません。
ブラウザなどはどうやって判断してるのでしょうか?
191デフォルトの名無しさん:2006/10/25(水) 11:46:28
>>190
ランダムではない。ルーティングテーブルを見てる。
192デフォルトの名無しさん:2006/10/25(水) 12:08:20
>>190
消極的な対処でよければ
bindしないでconnectしてみたら
193デフォルトの名無しさん:2006/10/25(水) 12:48:11
>>190
複数のNICを一つのサブネットにDHCPでアドレスを取って、接続してて、
OSがWindowsで、メトリックが自動メトリックになってるで、仮想環境をリブートしたり、NICの
ON/OFFをする度に、選ばれるNICがコロコロ変わっているんじゃないかと推測してみる。
なら、自動メトリックを切って、接続元として使いたいNICのメトリックを最少にする。
netstat -rあたりで、ルーティングテーブル見ればどのNICがbest interfaceとして選ばれる
か分かる。
それでも、HTTPクライアントで、接続元アドレスを気にする必要ってあるか?
サーバ側で、SRCアドレスでセッション管理してるとかかな。
よっぽどのことがなければ、クライアント側はbindせず、OSのルーティングに任せるのが普通。
194デフォルトの名無しさん:2006/10/27(金) 06:25:58
マルチスレッドで複数のクライアントを相手にするサーバを
安全に、自分の好きなタイミング終了させたいのですが質問です。

C++builder使っているので、WINDOWSの場合
・flag変数を用意
・ボタンを押したらflagが変わる
で、終了処理に移ることができます。

linuxの場合はどのようにするのでしょうか?
標準入力(コマンド入力)を待つスレッドかプロセスを
作ってその入力によってflagを変えるというふうにするのがよいでしょうか?
195デフォルトの名無しさん:2006/10/27(金) 06:32:42
サーバ側が常にrecvで待機しておいて、クライアント側がsendで送った
メッセージを全員に配信するというチャットプログラムを作りました。

これにサーバ側が好きなタイミングで全員にメッセージを送る機能を
付けたいのですが、サーバはrecvを呼び出した所で止まっているため
動けません。

一応クライアント側が数秒に1回ダミーメッセージを送るという方法で
動く奴は出来たのですが、こういう方法で良いのでしょうか?それとも
こういう場合、もっと良い実装方法があるのでしょうか?

Winsock2.0でマルチスレッドで作っています。
196デフォルトの名無しさん:2006/10/27(金) 06:34:14
クライアントとして自分で自分にメッセージを送れば?
197デフォルトの名無しさん:2006/10/27(金) 10:51:57
>>194
linuxの場合は、ってlinuxで、ユーザーとのインタラクションはどうやるつもりなの?
TTYなら、SIGINTか、SIGTERMあたりの適当なsignal拾えばいいと思う。標準入力をトリガにしても良い
だろうし、RPCとか、別プロセスからnamed pipeでも良い。
ユーザーからのどのような動作で、終わらせたいのかが不明。
XでGUI組むなら、Windowsと同じようにGUIでも良いし、signalとかの手段でも良い。

>>195
サーバ側を非同期受信にする。
198デフォルトの名無しさん:2006/10/27(金) 10:56:00

















というのはガセ
199デフォルトの名無しさん:2006/10/27(金) 21:47:40
すみません、返答が遅れました。
>>195
「なるほど!その手があったか!」とコロンブスの卵的に感動して早速
プログラムしたのですが、新たに問題が出てきました。普段クライアン
ト側はメッセージ送信(send)をするまで適当にsleepしながら無限ルー
プで待っているのですが、そのためサーバがsendしてきてもrecv出来
ません。結局サーバ・クライアント共に普段はrecvで待ちながら、必要
な時だけ自分宛のsendでrecvを一度終了し、相手にsendしたあと、再度
recvに戻る…となってしまうようです。

なんか効率が悪い気がするのですが、こういうのが一般的なプログラム
方法なのでしょうか?

続きます。
200デフォルトの名無しさん:2006/10/27(金) 21:55:10
それでちょっと考えていたのですが、現状1接続に対して1つのスレッドを、
send用とrecv用の2つのスレッドに増やせば良いのでは?と思いつきました。

ただこの場合、SOCKET変数を外部変数なんかで共有し、2つのスレッドで
同時使用することになると思うのですが、これは問題ないのでしょうか?

recvスレッドがrecv()で受信中のソケットに対して、sendスレッドがsend()で
送信することが起こると思うのですが…特に問題なしですかね?

ちなみに>>197さんもこういう実装方法を指しているのでしょうか?
201デフォルトの名無しさん:2006/10/27(金) 22:01:45
>>199-200
>なんか効率が悪い気がするのですが、こういうのが一般的なプログラム
>方法なのでしょうか?
そんなことをしているプログラムは普通ではないです。

スレッドを使ってもいいのですが、性能面で問題がないなら
以下のようなループで十分では?

while (!quit) {
 select で受信できるかどうか見てみる
  -> 受信できるようなら、recv して queue なり buffer なりに追加
   -> 追加した結果、メッセージが全部来ていたらそれを処理
 何か他の必要なことをする
}

UDP なら recv1回でメッセージは全部取れるので少し簡単になります。
202デフォルトの名無しさん:2006/10/27(金) 22:20:14
なるほど。今まであまりselectは使った事が無かったのですが、こういう時
に使うのですね!ヘルプも読んでみましたが確かに上手くいきそうです。
参考になりましたm(__)m

が、実はチャットは制作の第1段階で、最終的にはネットワークゲームを
作る予定でして、性能面もちょっと気にしております。それで確認なのです
が、

>スレッドを使ってもいいのですが
というのは>>200のようなやり方でOKと解釈して良いでしょうか?それとも
>>200では駄目でしょうか?またその場合、スレッドを使ったこういう時の
一般的な処理方法はどういうものなのでしょうか?
203デフォルトの名無しさん:2006/10/27(金) 22:21:46
>好きなタイミングで全員にメッセージを送る機能
サーバーにクライアント機能を入れなくてもいいんでね?

クライアントとして完全な別アプリにするとか
せめて別プロセス作ってそっちで動かすとかして
正規クライアントとして(もしくはバックドアから)接続

一緒に入れ込むと拡張とか保守とかしにくくなってくるよ
204デフォルトの名無しさん:2006/10/27(金) 22:24:22
コロンブスの卵?
205デフォルトの名無しさん:2006/10/27(金) 22:41:30
>>202
送信と受信でスレッドを分けるやり方も可能ですよ。
同時にrecvとsendが呼ばれても問題ありません。

一般にsendはブロックする(処理が終わるまで時間がかかる)可能性がありますから、
前のsendが終わっていなくても何かrecvしたい・する可能性があるようなプロトコルならば、
送信と受信のスレッドを分ける必要が出てくるでしょう。

個人的にはこのあたりはバグが出ないように非常に単純に作っておいて、
後からチューニングした方が好ましいと思うけど。
206デフォルトの名無しさん:2006/10/27(金) 23:32:39
>>205
詳しい解説有難うございます。非常に参考になりましたm(__)m
とりあえずまずselectで作ってみて、パフォーマンスに不満が出れば
スレッド方式に移行してみようと思います。

>>203
はい、チャットだけなら確かにそうなのですが、最終的にネトゲを目指
しているため、例えばサーバから全プレイヤーにゲームデータを送る
等、いずれはそういう機能が必要になると思って質問しました。

何にせよ、返答してくださった皆さん、どうも有難うございましたm(__)m
207デフォルトの名無しさん:2006/10/28(土) 07:00:23
TCP通信における、サーバ側のポート番号について疑問点があります。
例えばHTTPの場合、サーバ側のポートは(一般的に)80になるかと思います。
クライアントから要求があり実際に接続された場合、実際に通信に使用される
サーバ側のポート番号は80かと思っていましたが、そうではなく内部的に
別のポート番号が割り振られるという話を聞きました。
本当なのでしょうか?

tcpdumpなどでキャプチャしたデータを見てみても、TCPのヘッダには80とありますが…
208デフォルトの名無しさん:2006/10/28(土) 08:18:25
TCPの接続は、
<src IP, src port, dst IP, dst port>
の四つ組みで識別されています。
だから<dst IP, dst port>が同じでも何の問題もありません。

> 別のポート番号が割り振られるという話を聞きました。

誰が言ったか知らないが、気違いは無視しましょう。
209デフォルトの名無しさん:2006/10/28(土) 08:21:13
src側のportは不定だろ。じゃなきゃ多面でダウンロードなんて出来ないし。
210デフォルトの名無しさん:2006/10/28(土) 12:31:26
トンネルソフトを使えば中継によってポート番号は付け替えられるが、
そういうハナシを混同してはいけない。
211デフォルトの名無しさん:2006/10/28(土) 13:03:05
同じクライアントからの2つ目の接続の場合、
src portが別のものになる、でよい?

この場合のsrc portの割り振りって誰がやってるの?
212デフォルトの名無しさん:2006/10/28(土) 13:11:46
クライアント
213デフォルトの名無しさん:2006/10/28(土) 15:04:49
OS
214デフォルトの名無しさん:2006/10/28(土) 15:40:29
適当に空いてるの
215デフォルトの名無しさん:2006/10/28(土) 15:43:27
ソケットライブラリさん
216デフォルトの名無しさん:2006/10/28(土) 21:32:09
> 別のポート番号が割り振られるという話を聞きました。
全会一致で、そのようなことはないということですね。
大変為になりました。皆さん、ありがとうございました。
217デフォルトの名無しさん:2006/10/28(土) 22:36:28
通信要求受付のポートと通信用ポートの存在を忘れないでください。
218デフォルトの名無しさん:2006/10/29(日) 07:29:32
すべてのプロトコルで80番を使えばおk。
既にNATでエンドツーエンドの通信は崩壊してるし。

ソース側のポートは不定ではないな。OSによって癖が出るから、OS判別に利用されやすい。
セキュリティのことを考えたら、癖を出さないプログラミング重要。

全プレイヤーにゲームデータを送るって仕様の時点でダメポ。
全プレイヤーが全く同一のネット環境なんてあり得ないし、全プレイヤーの中で一番遅くて遅延の酷い香具師に合わせるしかなくなる(遅いのを早めるのは無理。早く来たのを表示を遅らせるのは簡単にできる)
219デフォルトの名無しさん:2006/10/29(日) 08:40:37
>>218
これなんて井の中の蛙?
220デフォルトの名無しさん:2006/10/29(日) 10:44:43
UDPパケットを通信速度を超えて送ったとき、
通信速度が間に合わなくなった分は
パケットは破棄されるの?
それともキューにたまって後になってからやってくる?
221デフォルトの名無しさん:2006/10/29(日) 11:11:30
>>220
> キューにたまって
どこのレベルの話したいの?
222デフォルトの名無しさん:2006/10/29(日) 11:14:35
>>221
アプリケーション層でおねがいします
223デフォルトの名無しさん:2006/10/29(日) 12:51:09
>>217
なんで分かれる必要があるの?
224デフォルトの名無しさん:2006/10/29(日) 12:56:42
>>223
必要はない。
BSDソケットがそう設計されたってだけの話。

「ポート」と言っても、TCP/IPのポート番号じゃなくて、ソケットのことだし。
225デフォルトの名無しさん:2006/10/29(日) 13:07:01
>>220
バッファがあればある程度キューみたいなものに溜まって、
溢れたら無条件で破棄、となるのが一般的だが、結局UDPレイヤの実装依存。
226デフォルトの名無しさん:2006/10/29(日) 13:48:51
linuxとかでGUIなしのデーモンとして動かす場合のアプリって
非同期ソケットって必要になりますか?

サーバーとして1000クライアント以下のものを考えてます。
227デフォルトの名無しさん:2006/10/29(日) 14:29:52
まずなしで作ってみれば?
いずれにせよ、イベント駆動型のメインループになるんだから。
228デフォルトの名無しさん:2006/10/29(日) 14:46:33
まずは非同期と非ブロックの区別をつけることから始めようぜ
229デフォルトの名無しさん:2006/10/29(日) 15:18:30
もうテンプレに入れといてくれ
230デフォルトの名無しさん:2006/10/29(日) 17:09:40
非ブロックでフツウに作れるようになってからじゃないと
非同期ってとてもじゃないが扱えないキガスル
231デフォルトの名無しさん:2006/10/29(日) 21:29:21
非ブロックと非同期の違いってなんですかぁ?^^
232デフォルトの名無しさん:2006/10/30(月) 10:29:06
ここのカスどもには説明できないよ。ググったほうがマシ。
233デフォルトの名無しさん:2006/10/30(月) 18:29:41
ブロック:完了するまで待たされる。
ノンブロック:忙しければ断られる
非同期:頼んでおけばいつの間にかやってくれる。
234デフォルトの名無しさん:2006/10/30(月) 20:59:43
>>225
そりゃ、トランスポート層の話でしょ。

>>222
アプリケーション層の話なら、貴方の実装しだい。
235デフォルトの名無しさん:2006/10/30(月) 23:17:11
アプリケーション側にバッファを用意すると、
TCPの送受信バッファもあるわけで、
2重持ちすることになってアホらしいような気がせんでもないのですが
みなさんどう考えますか
236デフォルトの名無しさん:2006/10/30(月) 23:56:48
実際極限までパフォーマンス稼ぐときはバッファをユーザーモード側に
持たせない手法になっていくよmmapとかsendfileとか果てはhttp.sysとか
237デフォルトの名無しさん:2006/10/31(火) 00:15:40
各処理の階層を切り分けた結果、
そのあいだにバッファが出来るのは
仕方がないと思っている。

まずは正しく動くことが大事かと。
238デフォルトの名無しさん:2006/10/31(火) 14:16:03
>>235
出す側はわりと簡単に zero copy 化できるんだけど、受ける側は結構問題だわな。
239デフォルトの名無しさん:2006/11/01(水) 01:15:58
まあ、Winsockなら、OverlappedI/O使えばダイレクトに受信できるけどね。
240デフォルトの名無しさん:2006/11/01(水) 02:09:21
PCにNICを二枚挿して、片方のインタフェースから受信したEthernetフレームを
反対側のインタフェースにそのまま送信するWindowsアプリを作りたいと思っています。
(http://hata.cc/products/linee/ ←要はこれのWindows版)

winsockだとL2が拾えない(と認識しています)ので、WinPcapを使ってみたのですが
フレームを送信しようとすると

データを送信側のデバイスに渡した == データが書き込まれた(フレームを受信した)

という状態になってしまいまい、フレームの転送が出来ることは出来るのですが、送信した
フレームを自分で受信した上にそのフレームを反対側のインタフェースに送信しようとするので
フレームが無限増殖してしまいます。
WinPcapのソースコードを追ってみるとファイルハンドルは"\\.\Global\NPF_{ifname}"で
CreateFileしており、送信/受信の区別が無くインタフェース名で一意になっていることが
原因のようでした。

で、このような状態を回避する方法があるか、WinpCapで無理なら他に何を使えば出来そうか
ご教示願えませんでしょうか。
(因みに、当方ドライバは書いたことがありません…)
241デフォルトの名無しさん:2006/11/01(水) 02:38:00
>>240
送信元MACアドレスが自分の持っているMACアドレスの1つと一致する場合は
転送処理を行わないとか、そういう単純な回避法では無理ですか?

ARPやDHCPでも送信元MACアドレスを入れないということは無かったと思いますけど。
242240:2006/11/01(水) 03:35:23
>>241さん
レスありがとうございます。

すみません、説明が足りませんでした。

ここではインタフェースをプロミスキャスにしていて、受信したフレームの
DMACが自分宛でなくても全て受信し、「そのまま」中継することが目的なので
SMACもDMACも自分のMACアドレスにはならないため、残念ながらフレームで
判断することはできないんですよ。

L2中継機ではなく、ネットワーク的に見れば単純なリピータハブとして動作
するようにしたいのです。
(もちろんARPやDHCPなどのL2マルチキャストもそのまま転送させたい)
ネットワーク構成は以下のような感じで。

           アプリが動いてるPC
[PC1]-------------[ IF0  IF1 ]-------------[PC2]

PC2のDMAC →  そのまま転送  → PC2のDMAC   逆方向も同様に
243デフォルトの名無しさん:2006/11/01(水) 04:48:07
>>242
こちらこそ、リンク先をじっくり読んだりしていなくてすみません。

IF0でPC1のSMACのフレームを受信した事を記録して、IF1からそのまま送信、
IF1でPC1のSMACのフレームを検出するけど、IF1で受信したわけではないと分かるので無視、
という方法はどうでしょうか?

残念ながら、私にはこれぐらいしか思いつきません。
244デフォルトの名無しさん:2006/11/01(水) 09:39:12
>>235
目的が違う。
245デフォルトの名無しさん:2006/11/01(水) 14:45:36
>>242
ドライバを含む WinPcap を再ビルドすることはできますか?
もしそうなら、こちらが解決策になると思います↓
ttp://www.mail-archive.com/[email protected]/msg00360.html

上記のMLでは他にこれといった解決策は投稿されていない模様です。
246デフォルトの名無しさん:2006/11/02(木) 01:29:25
ソケットプログラミングのサンプルを見ていると、
accept後にforkして子プロセスに処理を行わせる
ものしか見かけないのですが、これは何故スレッド
にしないのでしょうか?
スレッドを新たに作って、そのスレッドに処理を行わせる
方が自然な気がするのですが。
それにforkはWinに移植しにくいのでポータビリティも
失われる気がします。
247デフォルトの名無しさん:2006/11/02(木) 01:52:39
・古典的でありよく使われている。
・対してスレッドは新しく理解・経験・文献・ソースが不足している。
・子プロセスはこけても親に影響がない。子スレッドは親を道連れにしてあぼ〜んする。
・acceptするプロセスと実際のやりとりをする子プロセスの間で、密に設計する利点がそもそもない。共有するリソースがない。
248デフォルトの名無しさん:2006/11/02(木) 02:03:18
・Windowsではプロセス作るのはとんでもなく重いがUNIXではそれほどでもない
249デフォルトの名無しさん:2006/11/02(木) 02:14:46
・というのはガセ
250デフォルトの名無しさん:2006/11/02(木) 02:17:13
子スレッド死んだら親も死ぬのか?
251デフォルトの名無しさん:2006/11/02(木) 02:25:48
>>246
スレッドならWindowsにも移植しやすいのですか?
言語やライブラリによるのかもしれませんけど。

UNIX系の場合は >>247 の理由に加えて、
set(u|g)id プロセスの特権放棄に対応しやすいというのもあるかもしれません。
252デフォルトの名無しさん:2006/11/02(木) 03:12:39
winなら素直に非同期で書け
253デフォルトの名無しさん:2006/11/02(木) 10:43:49
というかUNIX系はプロセスを分ければリークしてても切断すれば元に戻るから安全。
逆にWindowsでスレッドだとWinnyみたいにどんどん使用メモリーが増えてって
1プロセスで500MBとか使う悲惨なことになる。
forkを使うUNIX版きぼんぬ。
254デフォルトの名無しさん:2006/11/02(木) 11:31:21
そこでmalloc/free論争ですよ
255デフォルトの名無しさん:2006/11/02(木) 12:11:18
>>253
Winnyを作った作者がヘボプログラムなだけ
256デフォルトの名無しさん:2006/11/02(木) 12:16:15
スレッドにしないと問題になるのが相手がおもいっきり通信中だと
遅延がものすごいことになるんだよ
即時応答を要求しないものはそれでいいのだけど、独自のPingのような
命令行動を実装していた場合、余裕でタイムアウトしちゃいますw
257デフォルトの名無しさん:2006/11/02(木) 13:48:16
nyはスレッド使ってねーよ
258デフォルトの名無しさん:2006/11/02(木) 14:45:16
つまりどっちでもいいってこったな
周りにあわせるならfork
移植性考えるならthread
259デフォルトの名無しさん:2006/11/02(木) 15:53:48
>>256
>スレッドにしないと問題になるのが相手がおもいっきり通信中だと
>遅延がものすごいことになるんだよ

た め に な る な あ
260デフォルトの名無しさん:2006/11/03(金) 02:46:35
結局forkとスレッドどっちの方がいいの?
261デフォルトの名無しさん:2006/11/03(金) 03:21:32
1-からのリンクと適材適所。
262デフォルトの名無しさん:2006/11/03(金) 03:55:17
UNIXerならforkだろ。
263デフォルトの名無しさん:2006/11/03(金) 20:21:30

ファイアーウォールと、プロキシサーバの
違いを具体的に教えて下さい。
一通り検索しましたが、パケットをフィルタリング
できる点は機能的に似ている説明ばかりです。
これらの本質的な機能の違いは何でしょうか?

264デフォルトの名無しさん:2006/11/03(金) 20:27:18
proxy serverってぐらいなんだから、つまりはそういうことなんだよ。
proxy = 代理。別に検閲目的に立てるだけじゃないぞ。
例えばWebページのキャッシュとかして帯域を節約したりもする。
265デフォルトの名無しさん:2006/11/03(金) 20:28:25
アプリケーション層で動くファイアウォールもある

まぁ、何かフィルタリングするのは確か
266デフォルトの名無しさん:2006/11/03(金) 22:45:03
>>264-265
両者間で、TCP PORTの通過は、どう違っているんでしょう?
例えば、httpsはPORT 400番台ですよね。
一方、httpはPORT 80だけど、プロキシでは8080へ変換して使うことが
多い。
こうしたTCP PORTは、それぞれ、ファイアウォール、プロキシで
どのような通過制限がかかるのでしょうか?
267デフォルトの名無しさん:2006/11/03(金) 23:04:01
ファイアーウォールは、基本的にパケットの中身は変更しない。
もちろんパケットを通すか通さないかを決めるためにパケットの
中身を見ることはあるけどね。

プロキシサーバーは、代理サーバーなんだから基本的になんでも
ありあり。
ポート番号の変換だけでなく、プロトコルそのものを変えること
すら可能。たとえば、ftp サーバーをクライアントには web
サーバーのように見せるなんてことをやったりする。
268デフォルトの名無しさん:2006/11/03(金) 23:11:50
>>267
>ファイアーウォールは、基本的にパケットの中身は変更しない。

非常にここはわかりやすいです。つまり、TCP PORT制限を
かけ、応用層プロトコルは変化させない、と理解すれば。

しかし一方、>>265によれば、F/Wによっては、応用層プロトコルにも
介入するという話で、こんがらかるのです。
269デフォルトの名無しさん:2006/11/03(金) 23:15:02
そもそも俺には

ファイアウォールとプロキシーサーバーのどこが似ていて、
なぜ「どこが違うのか」という質問が出てくるのか
全然理解できないのだが。
270デフォルトの名無しさん:2006/11/03(金) 23:26:47
>>269

パケットをフィルタリングする・・・という(ネット上にある)説明内容が
両者の共通点に見えるためです。
271デフォルトの名無しさん:2006/11/03(金) 23:29:06
どこだか知らんがひどい説明だな。
プロキシはパケットを意識するような層では動いてないよ
272デフォルトの名無しさん:2006/11/03(金) 23:41:16
>>271
プロキシが基本的に応用層プロトコル処理に介在しているのは
その説明でわかりました。
それではプロキシが、応用層にあるhttp port 80を 8080へ変換する目的(理由)は
どこにあるのでしょうか?
273デフォルトの名無しさん:2006/11/03(金) 23:45:55
そんな変換する必要、全然ないけど?

何勝手な思い込みで変なこと言ってるわけ?
ちゃんとプロキシーサーバーってものについて、調べてみたのか?
274デフォルトの名無しさん:2006/11/03(金) 23:59:22
>>268
> しかし一方、>>265によれば、F/Wによっては、応用層プロトコ
> ルにも介入するという話で、こんがらかるのです。

そもそもファイヤーウォールは、「何かをブロックする」という
機能を実現するもの。

これに対してプロキシサーバーは「クライアントの代理でサーバー
に要求する」という仕組みを表すもんだから、比べること自体がお
かしい。

アプリケーションファイヤーウォールと呼ばれるものでは、プロキ
シサーバーがファイヤーウォールを実現しているものもあるしな。
そもそも、>>267 に書いた通りプロキシサーバーはなんでもありあ
りだから。

>>272
> それではプロキシが、応用層にあるhttp port 80を 8080へ変
> 換する目的(理由)はどこにあるのでしょうか?

それは、そのプロキシサーバーを設置しているところに聞いてくれ。
275デフォルトの名無しさん:2006/11/04(土) 00:02:00
>>273
調べが十分でない、理解が十分でなく、思い込みが
あると思われます。
しかし、無駄に80<->8080への変換をやるのではなく、
何か明確な目的(役割)があると思うのです。
必要がないなら、port番号を変換しないはずと思います。
書くのが大変だと思うので0時を回った故、後でよいです。
276デフォルトの名無しさん:2006/11/04(土) 00:07:02
同じマシンでWebサーバーとプロクシサーバーが走ってる場合は
ポート80はWebサーバーが使ってる。
気の利いた奴が別のポートを選ぶ際に
8080をプロクシサーバーのポートにして流行って定着したんだろうな。

いつからなのかは(´・ω・`)しらんがな
277デフォルトの名無しさん:2006/11/04(土) 00:09:39
そのサーバの80番は普通にhttpを受け付けてるからじゃないのかね?
278デフォルトの名無しさん:2006/11/04(土) 00:10:06
OracleのXDBが使っててバグの温床になった経験がある。
8080は人気杉なんで今じゃ不用意に指定しないようにしてるw
279デフォルトの名無しさん:2006/11/04(土) 00:10:48
>>276
まだmozaicしか無かった頃にどこかの大学が文字コード変換をするために建てたproxyが既に8080だったやうな
280デフォルトの名無しさん:2006/11/04(土) 00:12:14
>>275
だからお前がわかってないだけだろ。ちゃんと調べろよ。

プロクシーに対して"GET http://www.2ch.net/"を送れば80番に接続するし
"GET http://www.2ch.net:8080/"を送れば8080番に接続するだけだ。
変換なんて何もしてないっての。

プロクシーが何番で待っているかとは関係ない。
281デフォルトの名無しさん:2006/11/04(土) 00:16:27
>>279
「やっぱり、プロキシーサーバーとは変換するものですよね」と来る予感。
282デフォルトの名無しさん:2006/11/04(土) 00:18:14
>>281
えー('A`)
283デフォルトの名無しさん:2006/11/04(土) 00:44:52
>>276
下手したらループしちまうもんな。
284デフォルトの名無しさん:2006/11/04(土) 01:24:14
こういう調べればわかるのに聞いてくる馬鹿はなんなんだ?
新しい知識知ったからってここに書くなよぼけ
285デフォルトの名無しさん:2006/11/04(土) 01:59:52
やっぱり、プロキシーサーバーとは変換するものですよね
286デフォルトの名無しさん:2006/11/04(土) 02:01:48
釣り人は海、河、湖にでも行ってください。
287デフォルトの名無しさん:2006/11/04(土) 02:38:28
釣り人が海河湖に行くものだと思ってるって石器人ですか?
現代の釣り人は2チャンネルに行くものなんです。
288デフォルトの名無しさん:2006/11/04(土) 03:29:39
石器人ですが何か?
289デフォルトの名無しさん:2006/11/04(土) 11:46:57
8080は、http-alt (http alternative)として登録されています。
591, 8008もね。http://www.iana.org/assignments/port-numbers

8080や8008はCPUの型番に倣ってるんでしょうね。

> 例えば、httpsはPORT 400番台ですよね。

番台、えー('A`)

290デフォルトの名無しさん:2006/11/04(土) 15:25:40
こまがた ばんだいの がんぐだいさんぶの ほし
291デフォルトの名無しさん:2006/11/04(土) 16:12:27
CreateGame−陸海空オンラインー
日本NO1、MMO製作プロジェクトが開始されました!

プログラマ募集!力あるやつだけ来い!
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
292デフォルトの名無しさん:2006/11/04(土) 16:18:53
この天然キチガイサイトはまだ生きてたのか
293デフォルトの名無しさん:2006/11/04(土) 16:36:01

なるほど、プロキシはそういうものだったんですね。
詳細は省略しますが、自分の思い込みの部分も自分でわかってきました。
夜分遅くまで、ご教示と、ご協力ありがとうございました。
294デフォルトの名無しさん:2006/11/04(土) 17:16:48
>>292
肝心なコストのかかる担当が悉く空白なのが現実を反映していてよい。
やっぱ最初にちゃんと動くモノ出さないと歯牙にもかけられないよな。
295デフォルトの名無しさん:2006/11/05(日) 21:28:12
ノンブロックでconnectしたとき、接続できたかどうかは
何で判断すればいい?
selectでwrite可能かどうか見る以外にスマートな方法キボンヌ
296デフォルトの名無しさん:2006/11/05(日) 21:28:49
プログラム担当がサポートしかいないんで吹いた。
297デフォルトの名無しさん:2006/11/05(日) 21:36:46
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/connect.2.html
>select(2) で書き込み可能になった後に、 getsockopt(2) を使って SOL_SOCKET レベルで
>SO_ERROR オプションを読み出すことにより、 connect() が成功したか、失敗したかを判断できる

汎用的には、やっぱりこれでね?
WinSockならFD_CONNECTとかが飛んでくるとか、ConnectExとかあるけどさ。
298デフォルトの名無しさん:2006/11/05(日) 21:58:43
> selectでwrite可能かどうか見る

こうしない理由がわからん
299デフォルトの名無しさん:2006/11/06(月) 02:06:57
>>295
selectが最もスマートな方法だが、どうしてもポーリングしたいと
いうのならば gepeername(2) を使いたまえ。
300デフォルトの名無しさん:2006/11/06(月) 06:31:19
Borland 5.5.1でsocklen_tがtypedefされてないのですが、
ひょっとしてこれって絶対typedefされてる保証ないのですか?
301デフォルトの名無しさん:2006/11/06(月) 07:52:34
PSDKではws2tcpip.hでtypedefされてる。
302デフォルトの名無しさん:2006/11/07(火) 02:57:55
winpcapをc#から使うのは難しいですか?
303デフォルトの名無しさん:2006/11/07(火) 14:12:40
127.127.1.0 というIPアドレスを持っている人はいないんですか?
304デフォルトの名無しさん:2006/11/07(火) 15:13:23
いっぱいいます
305デフォルトの名無しさん:2006/11/07(火) 20:58:23
IPv6ってどんどん存在意義が薄れてねーか
リンクローカルとグローバルしかないのなら
それってNATの向こうとこっちで分かれてる現状と変わらんキガスル
306240:2006/11/07(火) 23:07:21
>>245さん
返信遅くなってすみません。
リンク先の情報でOKでした。
ご存知の方もいらっしゃると思いますけど、一応解決方法を書いておきます。

winpcap\packetNtx\driver\Write.c
135行目あたりにNdisSetPacketFlags()を追加。
---
// Attach the writes buffer to the packet
NdisChainBufferAtFront(pPacket,Irp->MdlAddress);

NdisSetPacketFlags(pPacket, NDIS_FLAGS_DONT_LOOPBACK); // 追加 (XPのみ???)

// Call the MAC
NdisSend(
---

リコンパイルして正規のnpf.sysに上書きすればOK。
本当はWinPcapを入れなくてもinf実行でインストールできるようにしたかったんですけど
レジストリにうまく書けず断念…。


>>243さん
恐らくその方法でも行けるのではないかと思いますが、時間が無くて試していません。
SMACテーブルと検索処理を作るのが面倒だったというのが本音なんですけどw


お二人とも、ありがとうございました。
また何かあればよろしくお願いします!
307デフォルトの名無しさん:2006/11/07(火) 23:23:25
7インチ液晶のA5ノートPC
http://plusd.itmedia.co.jp/pcuser/articles/0611/07/news010.html
端末として持つには丁度いいな。
308デフォルトの名無しさん:2006/11/08(水) 00:25:02
これむちゃくちゃほしいw
グラ8mbって微妙だけどw
309デフォルトの名無しさん:2006/11/08(水) 08:46:19
>>305
Mobile IPがある。
それからルータが扱いやすいパケット形状で高速化が期待できる。
いずれにせよ、利用者側にはあまり関係ない。
310デフォルトの名無しさん:2006/11/10(金) 05:28:22
ネットワーク勉強はじめたばかりです。
よろしくお願いします。

ソケットの接続数は限界があるみたいですが、
ネットで検索したらOSごとに違うともありました。
OSは限界か判断できるということは、OSは現在の接続数を知ってるんですよね。

そこで質問なんですが、そのリアルタイムの接続数を
取得する関数や方法などあるのでしょうか?
それとも、自分でプログラミングして接続数
管理しないといけないでしょうか。
接続数が知りたいということなんです。

よろしくお願いします。
311デフォルトの名無しさん:2006/11/10(金) 09:58:46
OSごとに違う
312デフォルトの名無しさん:2006/11/10(金) 12:11:46
>>310
自分のプログラム内での接続数を知りたいんだったら、自分のプログラ
ムにカウンタを1つ設けるだけやん。

313デフォルトの名無しさん:2006/11/10(金) 12:22:31
>>310
たくさん”OS”という言葉が出てきているが、
現状は”OS”と呼ばれる領域が曖昧なので
SocketライブラリがOSに含まれるのか、付属品なのかはわからない
なので>>311ってこと
314デフォルトの名無しさん:2006/11/10(金) 18:27:00
>>312
なるほどです。
ソケッド開くたびにひとつ増やして、
閉じるたびにひとつ減らせばいいんですね。

ただ、自分初心者なので異常終了したときに、
きちんと処理できる自信なかったので一発で取得
する方法があれば良いと思いまして。
手元の本見ると異常終了するときは、サーバ側で
select関数使用して受信タイムアウト処理してますが
これで正確にカウントできるでしょうか。
他の条件分岐や気をつける処理などありますでしょうか。
switch(select(...)){
case -1:
//count--;
//ただし、割り込みあったときEINTRもう一回受信
case 0:
//タイムアウト切断
//count--;
default:
//recv関数
//countは、処理の内容次第
}

>>313
ファイルをロックするlock関数みたいに、
システムコールが用意されているのかと思いまして。

Socketライブラリにありますでしょうか?
315デフォルトの名無しさん:2006/11/10(金) 18:37:32
>>314
えーとそのコードで示した処理って完全に間違ってますよ。
なにか勘違いしてるんだと思います。
socket() で作ると 1 つ増える。
accept() で受け入れると 1 つ増える。
close() すると1つ減る。
それだけこことです。
316デフォルトの名無しさん:2006/11/10(金) 18:48:34
>>315
完全に違ってましたか。(汗
明快なアドバイスありがとうございます。
ちょっとわかってきました。
close()までたどり着けるようにきちんとすれば
カウントできるんですね。
317デフォルトの名無しさん:2006/11/10(金) 20:08:09
>>315
connect/accept 成功で +1
close/shutdown で -1
じゃないか?
318デフォルトの名無しさん:2006/11/11(土) 00:32:03
ソケットディスクリプタの複製や継承をしてたらcloseしても減るとは限らないんじゃ?
shutdownなら確実に減るけど
319デフォルトの名無しさん:2006/11/11(土) 00:33:52
ちょうどUNIXプログラミングスレで関連する話題が出てるな
320デフォルトの名無しさん:2006/11/11(土) 03:17:17
まあ、あれだ
資源管理は最初から組み込むか一切関知しないかの二者択一だ
321デフォルトの名無しさん:2006/11/11(土) 09:14:44
>>317-318
shutdown で片方向だけ禁止したのはどう数えるんだ?

0.5 個か? (w
322デフォルトの名無しさん:2006/11/11(土) 15:51:48
>>321
生きている状態と死んでいる状態が重なっており、それは
ソケットを調べてみるまではわからない。映画化決定。
323デフォルトの名無しさん:2006/11/11(土) 16:54:22
調べることにより系(システム)の状態が変化するから、>>322の言ってることはマジ。
324デフォルトの名無しさん:2006/11/11(土) 18:02:19
>>322 生きている状態と死んでいる状態が重なっており
>>323 調べることにより系(システム)の状態が変化するから

ちょっと詳しく説明してくれないかな。
325デフォルトの名無しさん:2006/11/11(土) 21:25:40
>>324
監督はキューブリック。公開は2008年ごろになるらしい。
326デフォルトの名無しさん:2006/11/11(土) 21:43:55
そもそも自分が本当に生きているということは相手が生きているということだ。
相手が死んでしまえば自分が生きていようと死んでいようとそれは死んでいることと同義である。



「死にに行く訳じゃない。俺が本当に生きてるかどうか、確かめに行くんだ。」

 カウボーイビバップ Session#26 「ザ・リアル・フォークブルース(後編)」より
327デフォルトの名無しさん:2006/11/12(日) 01:27:37
すみません。質問です。

select で n 秒待ちし、抜けてきたら FD_ISSET で調べ、
タイムアウトで抜けたならまた select するという処理
をしているのですが、connect 成功後、相手の切断を
検知できず、ずっとこのループを繰り返してしまいます。

ほとんど同じ処理でテストプログラムを造ると、そっち
はちゃんと FD_ISSET でタイムアウト切れじゃない返り値
になり、その後の recv で 0 が帰るのですが・・・。

ライブラリのリンク順番とか関係あるのでしょうか・・・?

環境は Solaris9 上の C です。
328デフォルトの名無しさん:2006/11/12(日) 01:34:04
>>327
そのテストプログラムでも、LANケーブルを抜いたら検知できないよ?
やってみろ。 ライブラリは関係ないよ。
KEEPALIVEを設定するか、アプリ側でヘルスチェックをするようにするか
どっちかしかないよな。

ピピルマ ピピルマ プリリンパ
パパレポ パパレポ ドリミンパ
どっきんハートに瞬きショット
329デフォルトの名無しさん:2006/11/12(日) 05:16:07
便乗して質問させてください。

selectでタイムアウト処理をしても、
LANケーブル抜くとrecv関数の切断が検知できないで
ずっと返り値が返ってこないということでしょうか。
なにか返ってくればわかりますし。

本見ると、recv関数待ちしているとき、
一定の時間がたって値が返ってこなかったら
切断するとあるんですが、どんなコードになるでしょうか。

時間を測るにしても、recv関数の値が返ってこないと、
そこで処理が止まってしまうので、時間を計るプロセスを
別に用意するとかでしょうか。
330デフォルトの名無しさん:2006/11/12(日) 05:23:36
>>329
切断ってのは相手から 「もう別れましょう」 という手紙がくることなんだ。

でも、LANが抜けてれば相手から何も来ないだろ。
つまり、お前はまだあの子と付き合ってると思い込んだままのわけだ。
本当はあの子はもういないのに。

これを防ぐには、毎日メールとか電話をやりとりするしかないよ。
「おはよう」のひとことでも構わない。 通信も恋もマメさが大事。
331デフォルトの名無しさん:2006/11/12(日) 06:27:55
>>330
レスありがとうございます。
パソコン2台無いので、わからないんですが
異常終了するとき(LANケーブル抜く)、
recv()ってなにを返すんでしょうか。
ずっとブロッキングされて、なにも返さない
という理解で良いんですよね。

>>これを防ぐには、毎日メールとか電話をやりとりするしかないよ。
もうひとつソケットで繋いで、定期的になにか
やり取りをするということでよろしかったでしょうか?
具体的には、ノンブロッキングなら、recv()が返るので
異常終了のときでもすぐに値返ってきますが。
でも、これだとはじめからほんとの通信を、ノンブロッキングに
すればいいんですよね・・・。

ブロッキングで、recv()の待ち時間判定して、
close,shutdownを呼ぶ方法ありますでしょうか。
当方初心者です。
332デフォルトの名無しさん:2006/11/12(日) 11:43:45
ソケットは1本で十分。ブロッキングでrecvのタイムアウトを判定するには、
alarmを使うとか、SO_RECVTIMEOを設定するとか、recv前のselectの
タイムアウトを援用するとかの方法がある。
333デフォルトの名無しさん:2006/11/12(日) 17:22:41
>>332
>alarmを使うとか、SO_RECVTIMEOを設定するとか
やり方理解できました。
alarmという便利な関数があるんですね。

>recv前のselectのタイムアウトを援用するとか
こちらが全然わからないです。
switch(select(n,&fd_set,NULL,NULL,&timeout)){
  case -1:
   //エラー
  case 0:
   //タイムアウト切断
  default:
   if(FD_ISSET(soc,&mask)){
     if(recv()<0){  }
   }
}
この場合だとselect抜けたあと、LANケーブル抜くと
recvで止まってしまうんですよね。
どこにどのような処理を追加すればよいのでしょうか。
すみません。よろしくお願いします。
334デフォルトの名無しさん:2006/11/12(日) 17:34:16
普通はselectが戻ってくるなら、読むべきデータがあるはずなので、
そこのrecvでは止まらない。(中でrecvをループさせたりしてなければ)
ただ、例外的にselectが戻ってもrecvが詰まる場合もあり、
そういう場合のために、ノンブロック設定にする。
335デフォルトの名無しさん:2006/11/12(日) 19:20:20
>>334
ほんとバカで申し訳ないのですが、どういうふうに
解釈していいのか、わかりませんでした。

・select抜けたらLANケーブル抜いても、recvでは止まらない
 だけど、LANケーブル抜くとかではなく、例外的な場合があり
 selectが戻ってもrecvが詰まるときがある。
 そういう場合のために、ノンブロック設定にする。

・LANケーブル抜くと、例外的な場合に当てはまり
 selectが戻ってもrecvが詰まるときがある。
 そういう場合のために、ノンブロック設定にする。

・その他

どちらでしょうか。
よろしくお願いします。
336デフォルトの名無しさん:2006/11/12(日) 19:35:52
>>335
LANケーブルが抜けてもわからないんだよ!

たとえば、お前が誰かとお話してたとする。
お前がなんかしゃべってるのに 相手が何も言わなかったら
寝てんのか 黙ってるだけなのか 区別付かないだろ。

そういうときは 「おい、聞いてんのかコラ 」 と一定時間ごとに確認するだろ。
そういうのが必要だということ。
337デフォルトの名無しさん:2006/11/12(日) 20:45:52
>>335
おいらが意図したのは一番はじめ。
338デフォルトの名無しさん:2006/11/12(日) 21:36:37
>>330
そのたとえ話、気に入った!
339デフォルトの名無しさん:2006/11/12(日) 22:48:20
>>336
>>337
レスありがとうございます。
336,337さんの言っていることが反対のような気がするので
混乱してしまいました。

>>333 のコードで、いつLAN抜いても
正常に動作するのでしょうか。
でも、select抜けたときは受信の準備が出来たときですよね。
・recv()呼ぶと受信がはじまる。
・終わるまで待ち状態。
・それで、受信中LAN抜いたら、なにも返事が無いので
 recv()はLAN抜いたことわからなくて、
 そのままリターンしないで待っている。
という風に思ってました。
本も見てみると、recv()はLAN抜いたときとか、わからないから
リターンしないって書いてあるんですよね。

>>333のコードで大丈夫なら、LAN抜いたら、
recv()はなにを返すんでしょうか?
すぐに何かのエラーを返してくれるんでしょうか。

recv()待ちのときLAN抜くとリターンしないので、
>alarmを使うとか、SO_RECVTIMEOを設定するとか、recv前のselectの
>タイムアウトを援用するとか
の方法があると思ったのですが。

あれれー。わからなくなってきました。
そもそも、何か前提の知識が間違っているのでしょうか。
340デフォルトの名無しさん:2006/11/12(日) 23:15:16
>>339
>・recv()呼ぶと受信がはじまる。
>・終わるまで待ち状態。

recv は、既に受信済みのデータをOSが管理するバッファからユーザが
指定したバッファにコピーし、コピーしたバイト数を返します。

1バイトも受信していない場合にはデータが受信されるまで待ちますが、
select で OK なら大抵の場合は少なくとも1バイトは読めて、すぐに
リターンします。

「受信が始まる」とか「終わる」とかいう動作はプロトコルスタックが勝手に
行っていて、APIからは概ね隠蔽されています。
341デフォルトの名無しさん:2006/11/12(日) 23:18:56
まあNONBLOCKじゃなきゃrecvで受信バッファに溜まっている量を超えて要求したら
「詰まる」とは言えるかもな
342デフォルトの名無しさん:2006/11/12(日) 23:21:52
>>341
ってsendじゃなくてrecvは全部待ち指定しなきゃ足りなくても帰ってくるか
343デフォルトの名無しさん:2006/11/12(日) 23:56:21
>>340
ずばりの回答ありがとうございます。
select抜けるときは、受信済みだったんですか。
ようやく理解できました。

selectでOKなら大抵の場合大丈夫だけど、
リターンしない場合も無いわけでは無いので、
念のためalarmとかの処理をしておくということですか。

んー、2冊ぐらい読み直してみたんですが、
そこまで書いてなかったような。
やっぱり2chすごいなぁ。
344デフォルトの名無しさん:2006/11/13(月) 01:34:45
>>343
> selectでOKなら大抵の場合大丈夫だけど、
> リターンしない場合も無いわけでは無いので、

俺も昔コレではまったことあるんだけど、
なんでこんなことになるの?そういうもの?
345デフォルトの名無しさん:2006/11/13(月) 02:08:31
>>344
プロトコルスッタク蛾ぶっ壊れたから。
永遠待ちは避けて、1秒待ちの無限ループがお勧め
346デフォルトの名無しさん:2006/11/13(月) 04:02:45
壊れたOSの面倒まで見たい場合やクリティカルなプログラムなら
alarmなりなんなり使ってやる必要があるだろうが、
通常のプログラムじゃそんなことまで考慮する必要は無い。
347デフォルトの名無しさん:2006/11/13(月) 09:10:05
私は、recvが0なら切断されたということにしています。

あと、select の無限待ちはCPU食うからと10秒待ちにしてるんですが、
それを1秒に変えたら、切断を検知しやすくなったりしますかねぇ・・・。

348デフォルトの名無しさん:2006/11/13(月) 09:46:12
> select の無限待ちはCPU食うからと
は?

> 切断を検知しやすく
へ?
相手がcloseしてきたこと?なわけないよね。
てことは、ケーブルが抜けたことを検知したいと?
349デフォルトの名無しさん:2006/11/13(月) 20:33:15
https/ssl通信システムを
OpenSSLまたはVxWorks6.1
でクロスコンパイラ(gcc)を使って開発する場合、
どのような難しさがありますか?
たとえばスレッド・セーフにする問題とはより具体的に
どんな風に難しいでしょうか。
350デフォルトの名無しさん:2006/11/13(月) 22:16:17
>>347
> 私は、recvが0なら切断されたということにしています。

普通、誰でもそうしますが。

| man recv
| 返り値
| これらのコールは受信したバイト数を返す。エラーの場合は -1 を返す。
| 接続先が正しくシャットダウンを実行した場合は、返り値は 0 となる。
351デフォルトの名無しさん:2006/11/14(火) 00:25:55
WinMEあたりから、PCに直接つなげてるLANケーブル抜くとソケットが切断されるよ。
ケーブル抜けたテストをやるときはハブを一段かませよう。
352デフォルトの名無しさん:2006/11/14(火) 00:53:23
どうやって検出してるんだろうね
353デフォルトの名無しさん:2006/11/14(火) 01:05:23
ドライバから通知してもろてるんやろ
354デフォルトの名無しさん:2006/11/14(火) 01:14:59
その根拠は?
355デフォルトの名無しさん:2006/11/14(火) 01:24:05
>>354
ドライバしかそれを検知できないから
356デフォルトの名無しさん:2006/11/14(火) 01:28:36
その根拠は?
357デフォルトの名無しさん:2006/11/14(火) 02:24:11
>>356
ドライバがそれを制御しているから
358デフォルトの名無しさん:2006/11/14(火) 02:40:46
つまり、根拠が無いんですね?
359デフォルトの名無しさん:2006/11/14(火) 02:53:08
つーかドライバに頼らない方法知ってるなら教えてよ。
360デフォルトの名無しさん:2006/11/14(火) 03:35:18
>>359
方法は無い事も無いな。 すごい方法がある。

まず、Webカメラを用意し、ネットワークカードの差込口を
361デフォルトの名無しさん:2006/11/14(火) 03:35:25
>>359
*nix だと ioctl()
OS によってインターフェース異なるけど…
362デフォルトの名無しさん:2006/11/14(火) 10:24:21
根拠を示せないクズばかりですね。
363デフォルトの名無しさん:2006/11/14(火) 11:09:24
>>351
って本当?
だとするとM$はクズだな
TCP・IPというものをまったく理解していない
364デフォルトの名無しさん:2006/11/14(火) 11:47:27
違う。351がバカなだけ。

つまり、PC側のケーブルを抜けば、ドライバが切断を検出できる。
けど、ルータ側を抜いたら検出できない。
365デフォルトの名無しさん:2006/11/14(火) 17:06:13
(^ω^ )
366デフォルトの名無しさん:2006/11/14(火) 19:19:28
>>349にRESがないのでOpenSSLをとにかく使ってみることにしました。
VC++がないので、VC++Express Editionではじめました。

http://www.knifeedge.org/?page_id=59
Windows 上での OpenSSL のビルド方法について、ネット上にはあまり情報がないようなので、
先日私がした方法を備忘録として残しておきます。

・・・ここを参考にコンパイルをはじめましたが、Windows.hがnot foundの
コンパイルエラーでとまったところ。

sslのサーバとクラインのテストプログラムを組んで
どの程度難しいのか調べようと思う。

こういうところが難しいとか知ってる人いたら教えてください。

OPENSSLのベースがコンパイルできたら、SOAP/XMLの応用ソフト
を上に載せたい。

http://x68000.q-e-d.net/~68user/net/
・・・ここにある
C言語: https クライアント
C言語: https クライアント サーバ認証版
C言語: RSA 暗号化 ライブラリに頼りきり版
C言語: RSA 暗号化 あまりライブラリに頼らない版
SSL: root CA 証明書
・・・これらの記事のサンプルプログラムを見るとSSLソケットがあれば
その接続ができれば簡単に上位の応用プログラムが書けそうに思うのは甘いですか?
367デフォルトの名無しさん:2006/11/14(火) 20:24:19
ほへ。OpenSSLなんか何にも考えずにコンパイルできたって。
どーせExpressEditionに必須のPlatformSDKの環境を
セットアップしてないんでそ。
368デフォルトの名無しさん:2006/11/14(火) 21:23:24
>>367
当方、Windowsプログラムもほぼ初めてで難儀中かも。
Windows.hのincludeのパスは、SDK2003R2のものを、VC++EEの中で設定してるのですが
コマンドラインのclから呼ばれると、そのincludeパス設定が効いていないようで、not foundのようです。
とりあえずエラーとなる.cソースと同じところにwindows.hをcopyしてコンパイル
してみるつもりです。
RADのGUI操作で作ったFTPプログラムのコンパイル+実行は正しく動いたので、
多分、VC++EEのほうのインストールはうまく言っていると思う。

OpenSSLのコンパイルができたら、そのSSLソケットを使ったプログラミングで
難しいところは何かあるでしょうか?
369デフォルトの名無しさん:2006/11/14(火) 21:28:39
石橋は自分で叩け
370デフォルトの名無しさん:2006/11/15(水) 00:07:44
工エエェェ(´д`)ェェエエ工・・・
371デフォルトの名無しさん:2006/11/15(水) 03:24:19
TCPで通信するプログラムを作ってみたんですが、
selectしてwrite,readする感じで数十バイトのデータを往復させただけでも、60msec位掛かってしまいます。
サーバとクライアントは同一PCで動かしているのですが、
TCPってこんなに時間がかかるものなのでしょうか?
372デフォルトの名無しさん:2006/11/15(水) 04:39:45
そのような視野の狭い人間になってはいけません
373デフォルトの名無しさん:2006/11/15(水) 04:44:51
わかった気をつける
374デフォルトの名無しさん:2006/11/15(水) 13:57:41
>>371
そうですよ。
数十バイトで60msecかかるので、数十キロバイトなら60sec、
数十メガバイトなら16時間くらいかかります。
375デフォルトの名無しさん:2006/11/15(水) 17:24:17
>>371
インタラクティブなやり取りをする時は、
つまりラウンドトリップタイムがメインファクタの時は、
Nagleのアルゴリズムに気をつけてくれ。
詳しくはソケットFAQを読め。
376デフォルトの名無しさん:2006/11/15(水) 18:02:07
TCP/IP通信で以下の使用を満たすプログラムを作っています。

・複数のクライアントが座標を入力して、サーバがそれを管理する。
・クライアントが使われている座標を入力したらその旨を表示する。

単一のクライアントからの入力なら、現在の座標を入力するとその旨を表示するところまで上手くいくのですが、
複数になると、例えばクライアントAの座標をクライアントBが把握できておらず、Aの座標にBが移動してしまいます。
調べたところ双方向パイプという処理を施せば子プロセス間で座標の判断ができると思うのですが、やり方が今一わかりません。
指針などどうかご教授お願いします。言語はCです。
377371:2006/11/15(水) 21:03:51
>>375
原因はそれでした!ありがとうございました。
378デフォルトの名無しさん:2006/11/15(水) 22:43:32
>>376
> 複数になると、例えばクライアントAの座標をクライアントBが把握できておらず、Aの座標にBが移動してしまいます。
この役目はサーバじゃない?クライアントBが把握する必要があるの?

> 調べたところ双方向パイプという処理を施せば子プロセス間で座標の判断ができる
うぇwwwwwwwwwwwwwww
379デフォルトの名無しさん:2006/11/15(水) 22:46:06
そ、双方向バイブ!?



(;;'-')ゴクリ
380デフォルトの名無しさん:2006/11/15(水) 23:18:51
姉妹がいる家になら大抵あるだろ
381デフォルトの名無しさん:2006/11/15(水) 23:23:38
ないよ
382デフォルトの名無しさん:2006/11/15(水) 23:24:06
カスどもが反応遅いからselect使って解決しました
383デフォルトの名無しさん:2006/11/15(水) 23:43:09
pollってselectの代わりに使われてないの?
面倒だから?
384デフォルトの名無しさん:2006/11/16(木) 00:04:44
ソケット数がすくなければたいした違いはない
385デフォルトの名無しさん:2006/11/16(木) 00:20:03
kqueueだのepollだの/dev/pollだのをわざわざ使う機会が無いな
P2Pで一台だけホストしてゲームするとかなら効果はあるだろうけど移植性が無いし
386デフォルトの名無しさん:2006/11/16(木) 00:20:35
WinSock2で非同期通信したいのですが、コールバック通知が
WSAAsyncSelect()で設定できるWindowハンドルに対してしかできないようです。
ソケット用のスレッドにPostThreadMessageするか、関数を呼んで欲しいのですが、
そのような関数が見あたりません。
やはり無いんでしょうか?
387デフォルトの名無しさん:2006/11/16(木) 01:04:53
ないです
388デフォルトの名無しさん:2006/11/16(木) 09:48:15
pollとselectの使い分けのうまい例をキボンヌ
389デフォルトの名無しさん:2006/11/16(木) 20:49:23
そのスレッドでIO完了点を待ち受けるとか、ダミーのウインドウを作るとか、
WaitFor...Ex系でAPCを使うとかいろいろあるだろうに。
390デフォルトの名無しさん:2006/11/16(木) 21:49:16
Ex?,
ウィンドウ?

おまえさん偏ってないかい?
391デフォルトの名無しさん:2006/11/16(木) 22:02:25
pollとselectの使い方を聞かれてなぜWindows
392デフォルトの名無しさん:2006/11/16(木) 22:20:24
3つ前の質問も覚えていないこんな頭じゃあ・・・
393デフォルトの名無しさん:2006/11/17(金) 00:09:06
安価つけろヴォケ
394デフォルトの名無しさん:2006/11/17(金) 00:12:17
つけるほどの事じゃないだろ
内容見ればわかる
わからないアホが二人もいたか・・・
395デフォルトの名無しさん:2006/11/17(金) 00:45:43
わかるわからないじゃなくて
直前のレスに対するレスじゃないものにアンカーをつけないのは
マナーその他何も考えてない、世界が自分中心に回っていると思っている証拠。

別に俺の知人じゃないから、俺は2chにそういう奴が居ても平気だけど。
396デフォルトの名無しさん:2006/11/17(金) 00:47:58
まあ、そういう奴が何か質問をすると
次のレスにエスパー募集中と書かれることになるわけだ。
397デフォルトの名無しさん:2006/11/17(金) 00:59:05
流れの読めないアホが言ってもなあ・・・
398デフォルトの名無しさん:2006/11/17(金) 04:30:39





                      ^^;;;;;;;;;
399デフォルトの名無しさん:2006/11/17(金) 11:03:01
典型的な頭の固いプログラマでワロタ
400デフォルトの名無しさん:2006/11/17(金) 13:09:47
>>395
まなー云々は同意するけど、わからないアホが2人もいたのは歴然たる事実。
401デフォルトの名無しさん:2006/11/17(金) 21:28:30
>>394, >>400
わからないというか、勘違いでしょ。

誰もが、常にスレの前後を見てるわけじゃない。

たまたま画面の一番上が >>388 からだったら、俺でも >>389
ちょっとノータリンだと思う。

そういうことを避けるために、アンカーというお約束がある。

「3個前ぐらい見るのは常識だろ」という奴は、自分の常識を語っ
ているだけ。
402デフォルトの名無しさん:2006/11/17(金) 21:34:58
単細胞に煽って自爆して焦って開き直るアホに常識語られてもなあ・・・
恥の上塗りをいつまで続けるんだろう
403デフォルトの名無しさん:2006/11/17(金) 21:51:50
>>401
うん。常識だマナーだっていうあたりの論に関してはまるきり異論ないですよ。
でも「>>389を見て>>388への返答だと思う」ってのは勘違いの域を超えてるな、と漏れは思う。
だって内容にまるで関連性が無いんだから。
404389:2006/11/17(金) 22:42:50
386->387の流れにむしゃくしゃしていたのでベタで書いた。
一つ上のレスしか読まない人のことまで思い至らなかった。
今は反省している。m9(^Д^)プギャー!!
405デフォルトの名無しさん:2006/11/17(金) 23:32:11
>>402
> 勘違いの域を超えてるな、と漏れは思う。

俺から見ても「そう思う」のは正しいと思うが、誰もが常にそう判断
{する|できる} わけじゃないってこと。

徹夜明けでボケてるとか、>>404 じゃないけどむしゃくしゃしてるとか、
そもそも関連性が無い書きこする奴だっているわけだし、煽りたいだけ
>>402 みたいな奴もいる。

ちょっと面倒だが、安全のために書いておくって言うのは、職業プログ
ラマとしては常識だと思う。

まあ、何も言っても聞かない奴とか、これぐらいは大丈夫と思ってる奴
とか、ルールを破ることをかっこいいと思ってるアフォががいるという
のも厳然たる事実なんだけどね。(w
406デフォルトの名無しさん:2006/11/17(金) 23:40:26
アホはアホだってこと。
407デフォルトの名無しさん:2006/11/17(金) 23:43:31
つまり厳然たる事実
408デフォルトの名無しさん:2006/11/17(金) 23:44:30
>>405
詭弁もほどほどにな。
409デフォルトの名無しさん:2006/11/18(土) 00:42:07
>>406-408
やっぱりでてきたね。(w

> 何も言っても聞かない奴
410デフォルトの名無しさん:2006/11/18(土) 00:57:54
ここ見てる人の大多数が思っただろう

>>409
お 前 が 言 う な wwwwwwwwwwwwwwww
411デフォルトの名無しさん:2006/11/18(土) 01:02:52
409はかわいそうな人なんだから捨て台詞で終わらせてやれよ。
412デフォルトの名無しさん:2006/11/18(土) 01:23:41
>>409
よぅ 厳然たる事実を目の前にしたか弱い子羊
413デフォルトの名無しさん:2006/11/18(土) 04:07:59
ここまで読んだ

結局、pollは1024以上のソケット待ちたいときとか
conect完了待ちも読み込み待ちもごっちゃに待ちたいときとか
そういうときに使えばいいってことでおk?
414デフォルトの名無しさん:2006/11/18(土) 09:18:56
>>406-408
>>410-412
毎回3人セットで出てくるんだね。

3人も必死の奴がいるのか、自演かどうかは知らんけど、
ご苦労なこったな。(w
415デフォルトの名無しさん:2006/11/18(土) 11:14:02
>>413
> conect完了待ちも読み込み待ちもごっちゃに待ちたいときとか

これは関係ない。
大量のfdを扱う時、select(2)はbit操作がボトルネックになる。

>>5
>C10K ヘヴィーロードサーバ
> http://www.kegel.com/c10k.html

にそれを解説した論文がある。
416デフォルトの名無しさん:2006/11/18(土) 12:08:49
ネットワークプログラミングというには、ちょっと初心者の質問ですが、教えて下さい。
WindowsXPのアプリ1からrshコマンドをLinuxマシンに発行してLinuxマシン上で
アプリ2を動かすようなのを作りました。
今は、問題なく動いているのですが、例えばLinuxマシンがダウンしている場合には
当然rshがエラーを返します。
こういう場合に、事前に、Linuxマシンが正常動作しているとか、Windows-Linux間で通信が
正しく行えるかどうかとかを調べる一般的な良い方法などありますか?
417デフォルトの名無しさん:2006/11/18(土) 12:52:13
SNMPとかpingとかで監視しとけば。
418デフォルトの名無しさん:2006/11/18(土) 12:55:25
rshコマンドの実行結果が、
「Linuxマシンが正常動作しているとか、
Windows-Linux間で通信が正しく行えるかどうか」
の検査そのものになっていることに気づけ。

pingでも送るか?
たとえばping含む別の方法で「Linuxマシンはup状態」だと返されたとしても、
rshコマンドの実行に失敗したら意味ないだろ。

無駄に複雑にするより、rshコマンドの失敗原因を正しく取得する方法を
探すべきだろう。
419デフォルトの名無しさん:2006/11/18(土) 13:07:40
例え>>417のレベルの確認でも、
rshのタイムアウトと天秤にかければ、有益な場合がある。
All or nothingの思考に陥るべきではない。
420デフォルトの名無しさん:2006/11/18(土) 13:15:59
いや、無意味だよ。
よく考えればわかるけど。
421デフォルトの名無しさん:2006/11/18(土) 16:28:21
>>419
たとえば、ファイルがない場合にファイルを作成してしまうようなプログラムは
何も考えずに
 ...ファイルの有無チェック...
  ...ファイルが無ければファイル作成...
などと書ける

しかし実際のところこのチェックは完全ではない
共有資源というのはそういうものだ
422デフォルトの名無しさん:2006/11/18(土) 16:30:06
ふつーアトミックにやる機能がシステムコールやAPIにあるだろそういうのは
423デフォルトの名無しさん:2006/11/18(土) 16:32:25
>>422
ええ
それが
「ファイルを作成」
というもので

>>416
「rshで接続」
というものです
424デフォルトの名無しさん:2006/11/18(土) 16:36:03
UNIXのcreatはファイルがあっても上書きするけどな
425デフォルトの名無しさん:2006/11/18(土) 17:11:06
SNMPやpingでも結局はタイムアウト処理で、
障害を発見したことにするしかないわけだけど、
単なるチェックのタイムアウトと、
rsh実行のタイムアウトによる中断では、
副作用のatomicityが全然違う。
事前にチェックできることはしたほうがいいことは結構多い。
426デフォルトの名無しさん:2006/11/18(土) 17:34:40
> 副作用のatomicityが全然違う。

ここ詳しく
427416:2006/11/18(土) 19:02:49
みなさん、いろいろアドバイスありがとうございました。
私としては、rshがエラーでタイムアウトするまでに数秒かかるので、
それをもう少し早くしたいのです。
例えば、WindowsとLinuxはsambaでファイル共有しているので、Windowsから
Linuxのファイルがオープンできるかどうかで通信ができるかどうか
調べる作戦はどうでしょうか?これだともう少し早く調べられませんか?
428デフォルトの名無しさん:2006/11/18(土) 19:30:49
>>427
お前はもっと勉強してからこい
429デフォルトの名無しさん:2006/11/18(土) 20:15:46
>>427
別の監視スレッドを立てて、そいつでカウントダウンして
タイムアウトしたらrshをSATSUGAIすればいいと思う。
430デフォルトの名無しさん:2006/11/18(土) 21:06:56
>>427
たとえばsshなら接続タイムアウトがあるし、
rsh相当のことができるんだけどどう?
431初心者です:2006/11/18(土) 21:50:14
こんばんわ。
お尋ねしたいことがあります。
自分のノートパソコンにUbuntu 6.10 をVMware Workstation でインストールしました。

Unix C言語のネットワークプログラミングを学びたいからです。

そして、インストールが完了したのですが /usr/include/ に
C言語の標準ヘッダ(stdio.h等)がありません。
gccはインストールされています。

C言語のヘッダファイルはどうやって入手するのですか?
どなたか回答をよろしくお願いします。
432(^-^) ◆MONSOON/qo :2006/11/18(土) 22:02:16
普通にWINSOCKでいいじゃん
433デフォルトの名無しさん:2006/11/18(土) 22:12:38
そういうのはUbuntuのスレに書くといいだろうね
434デフォルトの名無しさん:2006/11/19(日) 00:47:23
>>431
入れたOSは何? Linux?

find / -name stdio.h -print
のコマンドを入れて探してみてや。

ヘッダファイルは、OSの関数を使うためのものだから、
OSを入れた時点であるよ。

gccの用意している関数ライブラリがあれば、
それ用のヘッダファイルは、新規にどっかにあるよ。
435デフォルトの名無しさん:2006/11/19(日) 02:52:15
>>434
ubuntuって書いてあるし

>>431
開発環境作るにはパッケージを別にインスコしなくちゃならんぜ
インスコした後でまだ出るってんなら、色々面倒だから再度ubuntu入れて見れ
436デフォルトの名無しさん:2006/11/19(日) 08:51:55
>>435
ubantuというのはLinux配布パッケージの一種か?
VineとかDebianとかRedhatとか何の知れた配布版のほうが
良いのではないか?
Linux配布版使ってみると、できの悪いと思えた
Win95やWinNT4のインストーラのほうが、Linux系より出来が良い
のを知ったよ。
初期のLinux配布版はX表示のための画面初期設定すら失敗
してしまう。
437デフォルトの名無しさん:2006/11/19(日) 09:07:53
Linuxを何にもわかってない >>434=>>436 は黙っててくれ

あと >>431 の質問はネットワークプログラミングに何にも関係ないのでよそ行ってくれ
438デフォルトの名無しさん:2006/11/19(日) 09:24:03
臭い仕切り屋もよそ行ってくれ
439デフォルトの名無しさん:2006/11/19(日) 09:46:07
オマエモナ
440デフォルトの名無しさん:2006/11/19(日) 12:30:33
オマエモナ
441デフォルトの名無しさん:2006/11/19(日) 12:52:50
サーバとクライアント間で通信するプログラム作っていて、複数のクライアントに対する処理はPOSIX threadを使っています。
クライアント1がクライアント2に戦闘を仕掛け、勝利したならクライアント2を強制的に切断させたいのですが、
クライアント1が戦闘する意思をサーバに伝えた後、サーバがクライアント2を戦闘を行う処理に飛ばす方法がわかりません。
クライアント1は関数で飛ばそうと思っています。どうすれば良いかアドバイスお願いします。
442デフォルトの名無しさん:2006/11/19(日) 13:27:59
>>436
これはひどい
443デフォルトの名無しさん:2006/11/19(日) 13:54:26
>>441
サーバがクライアントに通知を伝える仕組みはあるの?
どうもクライアント⇒サーバ方向しか考えてないように見える
444デフォルトの名無しさん:2006/11/19(日) 15:00:39
やっぱプログラマーって変な人多いね。頭はいいかしらんが・・
445デフォルトの名無しさん:2006/11/19(日) 15:04:01
>>436
ubantuじゃなくてubuntuだよ?
そういう君にはgoogleってサイトがお勧めだよ★
「りなっくす」って検索すればいっぱい情報がでてくるんだよ☆
446デフォルトの名無しさん:2006/11/19(日) 19:16:14
親切なGoogle先生はubantuで検索してもちゃんと「もしかして: ubuntu」と教えてくれるな
447368:2006/11/22(水) 19:57:54
>>368
WindowsXP用のOpenSSL ライブラリがビルドできました。
HTTP over SSLクライアントのテストプログラムを作って、
OpenSSLのSSLソケット関数をリンクするコンパイル+ビルドも成功。
VisualC++ExpressEdition使ってるのでただでできた。
アパッチHTTPSサーバと暗号化通信動作もOK。
こんどは電子証明書のサーバ認証実験を行う。
448デフォルトの名無しさん:2006/11/22(水) 21:30:53
>>447
まとめてうp
449デフォルトの名無しさん:2006/11/23(木) 17:51:13
>>448
OpenSSLのWinXP移植版に興味ある人いる? 
いればインスコ方法やバイナリ、ソースも公開するけど。
やり方はすでにやってる人いて公開されてるし。
450デフォルトの名無しさん:2006/11/23(木) 18:16:54
>>449
俺は、興味は無いけど「ソース公開」してくれれば
ためになる人もいるだろう。
451デフォルトの名無しさん:2006/11/23(木) 18:31:19
他人がとやかく言うものじゃない
452デフォルトの名無しさん:2006/11/23(木) 20:43:04
>>449
似たようなことやりたかったんで、UPしてくれると助かる。
453デフォルトの名無しさん:2006/11/24(金) 00:38:12
やるのはいいと思うが、
スレ違いだからよそでやってくれ。
454デフォルトの名無しさん:2006/11/24(金) 01:09:14
スレ違い厨乙
ライブラリの話だからいいじゃないか
455デフォルトの名無しさん:2006/11/25(土) 11:47:32
>スレ違いだからよそでやってくれ。

スレ違いと判断する理由は何ですか?
迷惑ならば公開も止めます。
SSL/TLSによるネットワーク上の暗号化通信プログラミングの話なので、スレッドのカテゴリに
合わないということはなく、合致していると考えて書いています。


456デフォルトの名無しさん:2006/11/25(土) 11:54:12
公開してみてよ。
フツウにOpenSSLビルドすると大概の人がミスってるから。
457デフォルトの名無しさん:2006/11/25(土) 11:55:15
>>455
喜んでくれる人、有難がってくれる人がいたら公開…みたいな
行動基準はあまりその手の話では上手くいかんよ。

とりあえず公開してみる->あとから喜んでくれる人が現れた…
みたい流れが成功するパターンかな。

まずギブしてからテイクだ。例え感謝の言葉一つであってもテイク
を確約してくれないとギブしない…みたいな人はネット上では相手
にされないよ。
458デフォルトの名無しさん:2006/11/25(土) 15:44:09
Windows板とか行けよ。
ライブラリの構築はネットワークプログラミングじゃないし、環境依存が甚だしい。
459デフォルトの名無しさん:2006/11/25(土) 16:54:34
だから、ソースだけ公開しろよ
ライブラリってレベルじゃねーぞ!
460デフォルトの名無しさん:2006/11/26(日) 08:42:03
OpenSSLって勝手に公開してもいいんだっけ?
いいなら専用サイト作ってライブラリ公開してほしいね
使いたい人いっぱいいると思うよ
461デフォルトの名無しさん:2006/11/26(日) 09:35:01
これ以上いらねーから。
http://www.slproweb.com/products/Win32OpenSSL.html
スレ違いの話をやめろ、ググれもしない屑ども
462デフォルトの名無しさん:2006/11/26(日) 10:45:28
>>461に示されているライブラリだけでは、OpenSSLとWin32API DLLのリンクで
失敗するので、それだけの知識でOpenSSLを使いこなすことはできません。
463デフォルトの名無しさん:2006/11/26(日) 11:42:07
ここは特定ライブラリの使い方を語るスレじゃねえんだよ
理解できないなら帰れ
464デフォルトの名無しさん:2006/11/26(日) 11:44:07
>>463が救いがたいお馬○さんであることはわかりました。
465デフォルトの名無しさん:2006/11/26(日) 11:46:25
>>463
つまり何も語るなと
雑談スレがあちらにございます
466デフォルトの名無しさん:2006/11/26(日) 11:55:14
「ネットワークプログラミング」について語る場で、
「リンクで失敗」するとかについて語るところじゃない。
467デフォルトの名無しさん:2006/11/26(日) 12:10:42
bsd socket以外はスルーで

468デフォルトの名無しさん:2006/11/26(日) 12:14:12
プログラミングにはリンクは含まれないんだよ

オープンソースなんだから
469デフォルトの名無しさん:2006/11/26(日) 12:20:34
>>466 を補足する。

プログラミングというよりも、設計のほうがこのスレの趣旨に沿ってるだろ?
上流工程の話題も多いし。

APIの些細な差異とかライブラリの設定とかリンク方法なんかは
下流工程やってるコーダどもにやらせとけばいいんだよね

場違いな馬鹿(おそらくコーダ)が、
リンク成功したとかしないとか日記風に語ってるのが現状。
470デフォルトの名無しさん:2006/11/26(日) 14:29:18
プログラミングのスレだからな。
設計よりはプログラミングのほうがこのスレにあってるのは間違いない。

あまりにも何かに特化した話題は勘弁だが
そこは話題提供者が工夫すればいい。
471デフォルトの名無しさん:2006/11/26(日) 15:04:41
>プログラミングというよりも

スレタイ「ネットワークプログラミング相談室」

472デフォルトの名無しさん:2006/11/26(日) 15:17:07
>>471
「プログラミング設計」とでもいいたいんでしょ

まあ個々のOSの話になると、ここでやるか専門スレに転送するかは
そのときの面子次第だろうけどね
473デフォルトの名無しさん:2006/11/26(日) 15:22:17
OpenSSLみたいなマイナーなライブラリなんて
ここでやる話題なじゃいないな。
474デフォルトの名無しさん:2006/11/26(日) 16:09:16
OpenSSLはMicrosoft Windows本体でも使われていて、メジャーなライブラリ。
けど、構築方法はスレ違い。
475デフォルトの名無しさん:2006/11/26(日) 16:13:42
OpenSSLはメジャーだけどビルドはスレ違い。
476デフォルトの名無しさん:2006/11/26(日) 16:27:20
つーかさ、コンパイル・リンク程度で書き込みすんなよ。
477デフォルトの名無しさん:2006/11/26(日) 17:35:14
opensslがマイナーってwww
じゃ何がメジャーなんだよwww
478デフォルトの名無しさん:2006/11/26(日) 19:14:35
>>477
私の調べた複数の文献では、OpenSSLが、SSL V2/3、TLS1.0の実装実例として説明されており、
現段階ではそれを破る手法が確立されていないという点で、電子商取引にも広く利用されている
実績と合わせて考えても、ネットワーク上のセキュアな通信を実現する上で重要な
ソフトウェアと思います。
479デフォルトの名無しさん:2006/11/26(日) 19:18:10

そうしたOpenSSLを応用するプログラミング手法を知る設計者は稀少です。
ここで攻撃に出てくる質の悪いプログラマは無視することが良いと思います。
480デフォルトの名無しさん:2006/11/26(日) 19:52:22
ここ最近の流れ見て思ったけどスレ住人が職業プログラマだという前提の元で話してる奴が出てくるのはなんでだ
481デフォルトの名無しさん:2006/11/26(日) 19:56:17
自分がそうだから

じゃね? 人間案外想像力ないものよ
482デフォルトの名無しさん:2006/11/26(日) 20:26:19
いや、ことネットワークに関しちゃ
全員プロ意識もってもらわないと迷惑だってことだべ
483デフォルトの名無しさん:2006/11/26(日) 20:31:43
そう、マイナーなライブラリのリンクができました、
なんてことで書き込みしないでほしい
484デフォルトの名無しさん:2006/11/26(日) 20:36:48
>>478
IE,IISはOpenSSLを使っていないよ

IEのシェア率が8割超えてるのはご存知のとおり
サーバシェアもIISがApacheより上
ということは、Windowsの独自ライブラリが世の中のほとんどの
SSLトランザクションに関わってると見ていいんじゃないかな。

そうそうう、firefoxはOpenSSLを使わないよ。Mozilla独自ライブラリ。
Operaはどうだろう。
485デフォルトの名無しさん:2006/11/26(日) 20:39:46
> サーバシェアもIISがApacheより上
だけどApacheも無視していいほど少なくはないぞ。
> Operaはどうだろう。
使ってるらしい。
http://internet.watch.impress.co.jp/cda/news/2006/09/22/13370.html
486デフォルトの名無しさん:2006/11/26(日) 20:59:40
>firefoxはOpenSSLを使わないよ。Mozilla独自ライブラリ。
へぇー、初めて知った。
さすがにSSLを作った自負があると見るべきところなのかな。
487デフォルトの名無しさん:2006/11/27(月) 00:09:54
>>484
SSL は HTTP だけの為にある物じゃないがな…
それにアクセラレータカードなんかは OpenSSL 経由が多いんじゃないの?

>>486
NSS は Netscape にルーツを持つサーバ製品でも良く使われているよ。
488デフォルトの名無しさん:2006/11/27(月) 00:33:58
電子商取引系だと、SSLが一番多いかなあと。
そのほかだと、VPNソフトぐらいですかね?
OpenSSHを直接商取引に使うとは考えにくい・・・

アクセラレータは個々にプラグインを作るんじゃないかな。
たとえば
ttp://www.msol.co.jp/it/msolock/crypto/crypto-pci.html

>WEBサーバ:
>Apache WEB Server
>C2NET Stronghold
>iPlanet WEB Server
>Microsoft IIS / BackPffice
>Netscape Enterprise Server
>Netscape Proxy Server
>Netscape Directory Server
に対応するとある。(backpfficeってなんだよ)
逆にいうならこれだけSSL実装はあるってことだ。

つかいまどきIISに(というかWindowsに)対応しないってありえんだろ。
489デフォルトの名無しさん:2006/11/27(月) 00:34:49
スレ違い指摘クンが来ないよーさみしい
490デフォルトの名無しさん:2006/11/27(月) 00:58:25
>>488
それ、Apache は OpenSSL, iPlanet/Netscape は NSS だと思うよ。
IIS は良く知らないけど。
491デフォルトの名無しさん:2006/11/27(月) 01:29:50
>>469
上流工程の話ならマ板でやれ。
492デフォルトの名無しさん:2006/11/27(月) 01:49:42
えーマ板ってコーダーが愚痴る板でしょ
493デフォルトの名無しさん:2006/11/27(月) 02:04:44
read.cgiの仕様変更に振り回されないためのrawmode.cgiなのに
rawmode.cgi自体を変更してどうすんだよ
494デフォルトの名無しさん:2006/11/27(月) 22:07:58
Win2000svrだとオレオレプロトコルなサーバはクライアントを幾ら繋いでもOKだったが
Win2003svrだとCALが必要になるのね。知らんかった。Orz
Linuxブームが下火になったんで好き勝手やってくれるのぅ。。

ところで、サーバ側からコネクションを張ったらCALが要らないなんて理論は通らないよな〜?
495デフォルトの名無しさん:2006/11/27(月) 22:42:30
2003svrでもwebサーバとしての利用なら何本でもいける
妙な話だがな
ということでオレオレプロトコルをHTTPでwrapすればおk
496デフォルトの名無しさん:2006/11/27(月) 22:55:28
>>494
http://www.microsoft.com/japan/windowsserver2003/howtobuy/licensing/caloverview.mspx
この話ですね。
自作クライアントプログラムをWin2003にインストールして、Win2003の外にある
FTPサーバへコネクトをかける場合もCALのライセンス購入が必要でしょうか?

APIの使い方や動作結果に、CALの有無は影響を及ぼしますか?
497495:2006/11/27(月) 23:31:59
>>496
WIN2003で他人様の作られた(オリジナル)プログラムが、MFCの中で
Socket()の後に、Bind()を実行するとエラーコードが帰ってきます。
これはCALの取得の有無と関係がありますか?
498デフォルトの名無しさん:2006/11/27(月) 23:40:55
>>495-496
2003svrではインターネットからの匿名アカウントでの不特定多数接続以外はCALが必要なそうだ。
サーバの中の人がクライアント側にアクセスしたりHTTPでラップしても駄目。

コネクトがサーバ、クライアントどちらから接続されたに関係なく2003svrに接続した時点でアウト!!

http://www.microsoft.com/japan/licensing/brief/default.mspx
マルチプレキシング (多重化) - クライアントアクセスライセンス (CAL) の要件の項目を参照。

2003svrでは同時使用ユーザー数モードが未だ有効なので同時接続が少なければ
これでいける。w
499デフォルトの名無しさん:2006/11/28(火) 00:17:13
>>498
同時使用ユーザー数モードを使うにはどう設定すればいいですか?
コンパネの何で設定すればよいですか?
500デフォルトの名無しさん:2006/11/28(火) 00:24:46
そろそろスレ違いって言っていいかな
501デフォルトの名無しさん:2006/11/28(火) 00:30:05
ネットワークプログラミングでウインドウズは使うなってこったな。www
502デフォルトの名無しさん:2006/11/28(火) 01:25:34
そんなことを言っているヤツはいないようだ。
Linuxのカーネル再構築の話なんかもうざし。
503デフォルトの名無しさん:2006/11/28(火) 01:31:32
そんな話をしているヤツはいないようだ。
そもそも何で Linux のカーネル再構築が出てくるんだ。
504デフォルトの名無しさん:2006/11/28(火) 02:16:17
匿名ユーザだけかあ
厳しいのう
505デフォルトの名無しさん:2006/11/28(火) 12:57:12
>>498

>コネクトがサーバ、クライアントどちらから接続されたに関係なく2003svrに接続した時点でアウト!!

Win2003PCで走るプログラムのWinAPIレベルで見たとき、bind()関数Callからの戻り値にエラーコードが帰るのですか? 
それともListen()あるいはConnect()関数への戻り値にエラーコードが帰るのですか?
506デフォルトの名無しさん:2006/11/28(火) 13:14:31
>>505
ただのバグか設定ミスだと思うよ。
冷たいようだけど、WSAGetLastError で何のエラーが出てるのか調べて
書いてくれるまでは漏れはもう相手にしないから。
507デフォルトの名無しさん:2006/11/28(火) 13:27:51
>>506
そのお辞めになっている方のプログラムはWinXP、WIn2000で走らせると
正常にFTPサーバにコネクトしますが、Win2003ではBind()でエラー
コードが帰ってきます。
Win2003PCが手持ちにないので、持っている人に時間を割いてもらい、
トレースしてもらいました。

自分で調べたいのは山々ですが、Win2003PCもVisualC++も持っていない状態で
対策を漏れがとることになっています。

現在の状態では仮に原因がわかってバグであっても、パソコンもVC++もないので
ソース修正や再コンパイルができません。・・・という困難な有様です。
パソコンやWin2003やVC++を買う予算も現在ありません。
漏れは無理な仕事に思えますが、上の人はやれ!と言っています。
508デフォルトの名無しさん:2006/11/28(火) 13:52:29
ftp クライアントか・・・
アクティブモードのデータポートが変なポート番号決め打ちでbindしているとか。
2003 で ftp サーバとか動いていたら止めてみてはどうですか?

netstat -ab で Listen してるポートと実行モジュールの情報が得られるので、
そのアプリが何番のポートを使うのかを調べて、Windows 2003 でそのポートが
空いているかをチェックしてみてください。
509デフォルトの名無しさん:2006/11/28(火) 18:15:52
質問です。

サーバ側のプログラムを終了したいとき、
サーバ側で accept でブロックされている部分を終了させるには
closesocket でソケットを閉じるしかないでしょうか。

一応終了はしますがエラーが帰ってくるので
ほかにきちんとした終了の仕方があるのでしょうか。

shutdown でソケットを閉じてもだめでした。
accept の関数は別スレッドで動いています。
510デフォルトの名無しさん:2006/11/28(火) 19:42:37
何回同じ質問聞けばわかんだよ
過去ログ嫁>>509
511デフォルトの名無しさん:2006/11/29(水) 07:59:16
libevent使おうとしてます
ドキュメントとサンプルが貧弱で閉口してるんですが
event_init()で初期化した後
ディスクリプタごとにevent構造体を用意して
event_set()を呼び出し、event_add()で監視するリストに追加
最後にevent_dispatch()またはevent_loop()で監視開始
あとは適宜ハンドラから呼び出された後にevent_add()で再度追加
を繰り返す
こういう理解であってるかな

あとevent_dispatch()は呼び出したらシグナルで割り込まれない限り帰らないってことでOK?
event(3)の
The callback returns 1 when no events are registered any more.
って部分がよくわからんです
512デフォルトの名無しさん:2006/11/29(水) 09:17:49
> The callback returns 1 when no events are registered any more.

この部分は無視して良い。
libeventのソースに、該当するコードは含まれない。
513デフォルトの名無しさん:2006/11/29(水) 14:18:55
はいはいカテ違いカテ違い
514デフォルトの名無しさん:2006/11/29(水) 21:05:53
今RFCのうち、日本語化されていない部分について翻訳作業をしています。
仕事で使うところからはじめてます。今はiSCSIについて。
515デフォルトの名無しさん:2006/11/29(水) 22:15:46
>>504
Apacheユーザ会がMSKK相手にゴネたからだな・・・
516デフォルトの名無しさん:2006/12/02(土) 00:31:28
sslを使ったネットワークプログラミングで参考になるHP教えてください。
517デフォルトの名無しさん:2006/12/02(土) 00:47:35
わたくしは以前ここでプロキシサーバの役割・機能とは何なのか、教えてもらいました
その節はお世話になりありがとうございました。
さて近日proxyへtelnet proxy名 8080 で接続し、パケットを見てみたところ、
httpプロトコルとは異なる応答が帰ることに気づきました。

すなわち、telnetからGET+CR+LFを送信しても、index.htm(l)の内容は
帰ってこず、続けてCR+LFを送ると、読めない化け漢字に文字化けしたパケットが
帰ってきました。
(proxyを介さないイントラネット上のWEBサーバ(アパッチ)は、
telnet httpサーバ名 80 で接続して、GET+CR+LFを送信すると、
若干のRESPONSE文字列の次に続いてindex.htm(l)の内容を応答してきます。)

そこで知りたくなったのは、proxyとMS-IEブラウザ間のプロトコル規定です。
http手順でないのはわかりましたが、このproxy⇔MS-IEブラウザ間の
プロトコルについて資料をご存知でしたらお教え願います。

知る目的」は、自作のプログラムでproxyを通過した簡易閲覧ソフト作成の
実験をしてみたいのです。そのため、proxyとどのように交信すれば
良いかそのプロトコルを知りたいのです。

GGGLE検索を試みていますが有効な情報が得られていません。

518デフォルトの名無しさん:2006/12/02(土) 00:52:49
>>517
http://www.y-adagio.com/public/standards/tr_http11_2068/toc.htm

・・・try&errorでやったらとりあえず本家を漁ろうよ
519デフォルトの名無しさん:2006/12/02(土) 02:11:41
すごい厨房がいるな
HTTPを知らんとかプログラミング以前の問題じゃねーの?w
520デフォルトの名無しさん:2006/12/02(土) 11:12:29
HTTPだとプロバの串がかむからヘッダをいい加減にしてるとおかしくなる。
4G越えのファイル受けようとしたらノートンにひっかかったりとかろくなことがない。
521デフォルトの名無しさん:2006/12/03(日) 01:27:51
スレ違いかもしれませんがよろしくお願いします・・・。

スイッチングハブ機能を持つルータについてお聞きしたいのですが、
NATのマッピングテーブルにはMACアドレスも記録されるんでしょうか??
それとも、スイッチで分岐する前にarpテーブルを参照してMACアドレスを準備し、
Ethernetフレームを書き換えた後でスイッチに渡すんでしょうか??

製品の実装によるかもしれませんがご存知の方いましたら教えてください。
考え方が根本的に間違ってる可能性もありますが・・・汗
522デフォルトの名無しさん:2006/12/03(日) 02:16:33
>>521
考え方が根本的に間違っている上に板違い。
523521:2006/12/03(日) 02:29:34
>>522
ごめんなさい・・・(^^;
NAT越えに関する実験的なプログラムを作ってみようかなぁと思っていまして。。
実験しようにも自宅にブロードバンドルータがなくて...orz
NAT越えに関する資料とかはIPアドレスのことに着目しているので、
MACアドレスはどうなっているのかな?と思った次第です・・・
524デフォルトの名無しさん:2006/12/03(日) 03:07:23
>>523
とりあえずwiki
http://tinyurl.com/y4mpt7
525デフォルトの名無しさん:2006/12/03(日) 08:47:14
>>523
さすがに環境用意した方がいいと思うよ
ルータなんて4000円しないし、
中古ならもっともっと安いのがある
526デフォルトの名無しさん:2006/12/03(日) 08:56:06
vmwareにunix入れりゃNAT箱なんてロハですぐ作れるだろ
527デフォルトの名無しさん:2006/12/03(日) 12:12:28
NAT越え自分で実装した奴いる?
UDP hole punchingとか。
528デフォルトの名無しさん:2006/12/03(日) 12:42:56
簡単やん。
529デフォルトの名無しさん:2006/12/03(日) 12:55:36
用意されたものを使ったことはあるけど、実装はないな。

ARPを実装しただけで息切れしたからなぁ。
自分で作ったDHCPはなんか動くのが奇跡に近い感じだったよ
530デフォルトの名無しさん:2006/12/03(日) 13:10:26
実装は簡単だよ。
TCP/IPやNATを理解できてない人が、理解できないだけの話。
自分のネットワーク機器の設定が、Symmetric NATかどうかくらい見分けられないと。
531デフォルトの名無しさん:2006/12/03(日) 14:03:27
>>529
つ ports
532521:2006/12/03(日) 14:29:27
>>525
やっぱり実際に環境ないとダメですよね。(^^;
必要になる可能性があるので、どっちにせよ近々買おうかな〜と思っていたんですが、
貧乏学生なためになかなか踏み切れなくて・・・orz

>>526
VMがまともに動かないほどのスペックのマシンを使っております・・・。


ちょっと社名忘れてしまいましたが、(サーバを使わず?)あらゆるNATを越えられる技術を開発した!
っていう記事を読んだことがあるので「不可能ではないのか・・・」と思い、
自分も何か考えられないかなと周辺知識を勉強し始めている段階です。 無理そうですが・・・。
たしか↑の技術は特許出願中とか書いてあったような。
533デフォルトの名無しさん:2006/12/03(日) 14:48:04
UDP hole punchingは、シンメトリックNATを超えれないし
UPnPは、まずシンメトリックNATには実装されてることが殆どないしで
結局あれがある限り、全てのNAT超えは無理じゃないか。
534デフォルトの名無しさん:2006/12/03(日) 14:54:13
Subaddressっぽいのを作る研究もあったなぁ


←(そとがわ | うちがわ)→
133.x.x.x      192.168.1.x

1 内→外で www.google.co.jpに192.168.1.1が接続した
2 www.google.co.jpでは133.x.x.x/192.168.1.1に送信(IPAddress in IPAddress? ip in ip?)
3 ゲートウェイがてきとーに分散させる
4 ウマー

なんだが、動的に解決できるし何より直感的…だった希ガス
でも対応機器が無いと死ねるね
535455:2006/12/03(日) 15:39:40
>>456
一部に要望があったので、電子証明書によるサーバ認証つきHTTPSクライントプログラム(OpenSSL利用)の
ソースプログラム例を公開しました。
無償のVisualC++ Express Editionで出来ることと
Winsock2.0を使ってWindowsXP環境で暗号通信の実験ができる点が便利なところです。
日本のMSDNフォーラムのVisualC++ Express Editionにところへおいてあります。
536デフォルトの名無しさん:2006/12/03(日) 16:05:50
>>535
thx
537デフォルトの名無しさん:2006/12/03(日) 17:58:56
はいはいスレ違いスレ違い
538デフォルトの名無しさん:2006/12/03(日) 19:11:06
>>530
そんな簡単なものか?
UDPの上にTCP実装するようなもんでしょ?
これぐらいみんな楽々な人?
539デフォルトの名無しさん:2006/12/03(日) 19:15:02
>>538
*bsd系ならnetgraph出てるし、プロトコルがスタックできる形で組み込まれてれば別に何とでもできるぉ (^ω^)
540デフォルトの名無しさん:2006/12/03(日) 21:18:54
相談させてください。
ネットゲームの通信解析をして遊ぼうと思い、ws2_32.dllのクローンを作成。
それにログとり機能を付与して、対象のゲームに食わせた上で
send
sento
WSASend
WSASendTo
recv
recvfrom
WSARecv
WSARecvFrom
を監視し、データをファイルに出力してみました。

ところが、明らかに受信データが少ないのです。
ゲームの内容は
・リアルタイム対戦格闘ゲーム
・UDP通信のみ。TCP/IP通信は無い

のため、かなりの量の受信が期待できるはずでした。
上記以外に、受信用関数は無いと思うのですが、もしかして存在しますでしょうか?

無かった場合、次はDirectPlayを疑うことになりそうなのですが…。
・チート対策のための複雑化の結果、winsockとDirectPlayを併用しているのでは?
・DirectPlayは内部でwinsock呼んでるんじゃないのかな?
という疑問が出ています。
541デフォルトの名無しさん:2006/12/03(日) 21:26:08
>>540
パケットモニター併用しろ亜歩
542デフォルトの名無しさん:2006/12/03(日) 21:38:43
>>540
スレッドとか全く考えてないんじゃないかと思う
>>541の言うとおりwinpcapを使うなりでパケットをモニタしやがれ
543デフォルトの名無しさん:2006/12/03(日) 21:50:55
LimeWireの検索機能って、どーやってるんですか?
Winnyは、IPアドレスを暗号化したノードを使ってますが、
LimeWireにはそれがありません。
まさか、IPアドレスを適当に作って相手がLimeWireを起動してるかチェックなんてことはやってないだろし。
544デフォルトの名無しさん:2006/12/03(日) 21:56:33
>>543
gnutellaプロトコル調べれ
545デフォルトの名無しさん:2006/12/03(日) 22:00:15
>>541-542
了解しました。早速試してみます
546デフォルトの名無しさん:2006/12/03(日) 22:02:02
> まさか、IPアドレスを適当に作って相手がLimeWireを起動してるかチェックなんてことはやってないだろし
さもなきゃどこかでリストを管理してるよな
はっはっは
547デフォルトの名無しさん:2006/12/03(日) 22:15:52
>>540
ws2_32.dllのクローンを作るなんて凄い技術力だな〜
548デフォルトの名無しさん:2006/12/03(日) 22:37:51
>>541-542
パケット監視をしたところ、これでもかというくらい大量にUDP通信していました。
どうやらwinsockを使わずに通信しているようです。

ぐぐってみたところ、DirectPlayはUDP通信を利用しているとのこと。
多分DirectPlayを使っているんでしょうね…。
しかし、DirectPlayは下請けとしてwinsockを使っていないのでしょうか?

>>547
ラッパーDLLというべきなのでしょうか。
偽DLLを作るためのツールで簡単に作ることができました。
使ったのは listexp2.exe です。
549デフォルトの名無しさん:2006/12/03(日) 22:39:09
>>538
> UDPの上にTCP実装するようなもんでしょ?

全然違うぞ。
そりゃUDP hole punching使ったプロトコルで、
TCP相当の機能が欲しければ実装する必要があるが、
>>527のお題じゃあICMP ECHOに毛の生えたくらいのプロトコルでもいいわけで。
550デフォルトの名無しさん:2006/12/03(日) 22:40:25
>>540
そりゃ、EPD使えば、パケット見れるだろけど、
WinSockのDLL自分で作って、関数使ったときにログ記録させてんでしょ?
それなら、ネトゲはみんなWinSock使ってるハズだし(DPlayもWinSock使ってるらしい)
ログは確実に取得できると思うけど、なんでできないの?
551538:2006/12/03(日) 22:59:07
話が飛びすぎたね。すまん。

>>DLLClone
ネトゲをまじめに遊んでる方からすると
こんなミジンコ相手にしてほしくないものだが。
552デフォルトの名無しさん:2006/12/03(日) 23:01:22
ネトゲ解析とかやめてほしいものだが。
553デフォルトの名無しさん:2006/12/03(日) 23:08:15
使いづらいUIだったら改造する
当たり前だろ?

特定の数値を入力したいのに+1ずつしかあげることが出来なくて
さらにその+1をするためだけに数時間もPCの前に釘付けられるなんて尋常じゃないぞ
554デフォルトの名無しさん:2006/12/03(日) 23:53:11
>>540だとどう見てもUI改造じゃないけどな

てか、今時のネットゲームって通信暗号化されてるんじゃないの?
send/recvのバッファ見ても意味ないんでない?
555デフォルトの名無しさん:2006/12/03(日) 23:57:08
>>554
あ、別にチートとかそういうわけではないです。
通信ゲームの通信を全部ログとって、それを今度は再生させることで
汎用的にリプレイとか作れないかなと思いまして。
556デフォルトの名無しさん:2006/12/04(月) 00:00:43
>>540
生パケットで送信してたら、それではログ取れないかも。
でもこの送信もWinSockの関数使ってると思ったので、そっちも調べれば?
557デフォルトの名無しさん:2006/12/04(月) 00:03:01
133.x.x.xって。。。
特定しました(w
558デフォルトの名無しさん:2006/12/04(月) 00:09:55
>>548
listexp2.exe 具具ってみた。面白そうなツールですな。

DirectPlayってDLL実装なのか?
インポートライブラリを使ってるのならDepends.exeでwinsock使ってるかどうかはわかるでしょう。
ダイナミックロードならprocexp.exeで。
559あっこ:2006/12/04(月) 00:23:37
学校の課題で
ax^2+bx+c=0をもとめるプログラミングを作成せよという課題がでました。
学校ではflot??とか、SQRT関数を用いてや、ソースファイルの後にINCLD・・・
・・STIの後にhtm.hをつけろとかいてありました。字が汚くて最後の方は自分で
なんとかいたかわかりませんでした><どなたかわかる方いたらお願いします><。。
よろしくおねがいします!
560あっこ:2006/12/04(月) 00:26:42
↑がっこうのソフトはC:++for32こんな感じのソフトでした!!なにもわからないで本当にごめんなさい><
561デフォルトの名無しさん:2006/12/04(月) 00:34:40
>>559
"INCLD"は#include?
"flot"はfloatのこと?
"STI"はなんだろ。
"htm.h"は何かのヘッダファイルの名前?
何を言ってるのかわからないから課題に答えてあげられません。
学校で友達に聞きなはれ。
562デフォルトの名無しさん:2006/12/04(月) 00:42:23
>>559
釣り? ここはスレ違いなのでこちらへドゾー

C/C++の宿題を片付けます 77代目
http://pc8.2ch.net/test/read.cgi/tech/1164079451/l50
563デフォルトの名無しさん:2006/12/04(月) 00:50:23
>>562
どうみても釣り。
>"STI"はなんだろ。
stdio.h
>"htm.h"は何かのヘッダファイルの名前?
math.h
564デフォルトの名無しさん:2006/12/04(月) 00:53:25
STIってSTLかな・・?
だめだ。難しすぎる。
565あっこ:2006/12/04(月) 02:08:12
教えてくれたら一発ヤらせてあげてもいいです。
566デフォルトの名無しさん:2006/12/04(月) 02:11:50
一発ヤらせてくれたら教えてあげてもいいです。
567デフォルトの名無しさん:2006/12/04(月) 02:13:40
fd_set read;
FD_SET(0,&read); ・・・(1)
FD_SET(3,&read); ・・・(2)
について質問なんですけど、(1)(2)を処理した後って&readはどうなるんですか?
誰か教えてください><
568あっこ:2006/12/04(月) 02:49:21
>>566
ボクおとこのこだよ?それでもいいの?
569デフォルトの名無しさん:2006/12/04(月) 08:48:11
>>567
0や3がセットされる。

ていうか0や3を即値でセットするのか。すげーな。
570デフォルトの名無しさん:2006/12/04(月) 09:27:37
すごいだろう!
571デフォルトの名無しさん:2006/12/04(月) 10:55:55
FD_系マクロで抽象化されてるから
中がどうなってるかはキニシナイ
572デフォルトの名無しさん:2006/12/04(月) 11:29:13
FD_系マクロが
FD_系ホクロって本気で見えた・・・orz
573566:2006/12/04(月) 13:50:33
>>568
ぼくゲイだよ?何の問題があるの?
574デフォルトの名無しさん:2006/12/04(月) 17:58:37
FD_ZEROしとかない以上未定義動作の誹りは免れ得ない
575デフォルトの名無しさん:2006/12/05(火) 02:08:30
fork()で同じ親から生成された子プロセス同士で通信を実現したいんですけど、
どうすればいいか全く分かりません。なので、皆さんのアイディアを下さい。
576デフォルトの名無しさん:2006/12/05(火) 02:23:20
>>575
片方で popen("tail -F /tmp/send");
もう片方で /tmp/send になんか書く
577デフォルトの名無しさん:2006/12/05(火) 02:24:37
うるせえぞ >>578
四の五の言わずにまずはやってみろ!
578デフォルトの名無しさん:2006/12/05(火) 06:56:27
>>577
犯すぞ!
579デフォルトの名無しさん:2006/12/05(火) 07:00:06
うるせえぞ >>578
四の五の言わずにまずは>>577を犯してみろ!
580デフォルトの名無しさん:2006/12/05(火) 10:06:22
connectに失敗しました
581デフォルトの名無しさん:2006/12/06(水) 18:40:14
接続を確立できません。ポートを開いてください。
582デフォルトの名無しさん:2006/12/06(水) 23:07:25
申し訳ありません。
ただいま制裁発動中なのでポートを開くことは出来ません。
またのご利用をお待ちしております。
583デフォルトの名無しさん:2006/12/07(木) 10:19:21
>>581
通報しました。
584デフォルトの名無しさん:2006/12/08(金) 03:41:36
>>555
まともな暗号化がされてればその程度でリプレイできるとは限らない。
再生攻撃って知ってるか?
まあネトゲがまともな暗号化使ってるとも限らないけど
585デフォルトの名無しさん:2006/12/08(金) 14:08:04
結局チートしたいだけだよ
586デフォルトの名無しさん:2006/12/08(金) 20:30:11
ボットでも作りたいんだろ
リプレイしたいならキー入力でも再生しとけ
587デフォルトの名無しさん:2006/12/09(土) 09:10:32
技術板でチートだのボットだのうるせーよ
ゲー板でも篭もってろヒッキー
588デフォルトの名無しさん:2006/12/09(土) 09:33:52
>>587
せっかく引き篭りを直そうとゲー板から出てきたのにw
589デフォルトの名無しさん:2006/12/09(土) 11:27:46
ここのどこら辺が技術板なんだろう
590デフォルトの名無しさん:2006/12/09(土) 11:37:14
確かにw
サンプルに毛が生えた程度の話しかしてないわなw
591デフォルトの名無しさん:2006/12/09(土) 11:54:32
高度な話をしても構わないんだぜ
592デフォルトの名無しさん:2006/12/09(土) 12:43:32
閃きや自己進化の仕方について
593ヽ(・∀・)ノ◎ウンコー :2006/12/09(土) 15:52:59
>>589
プロキシサーバの話は参考になったが
最近は粘菌のせいで糞スレ化してるね。
まともな人は沈黙中。
594デフォルトの名無しさん:2006/12/09(土) 17:12:19
>>587
技術板の話よろしく
595デフォルトの名無しさん:2006/12/10(日) 10:47:29
>>544

勉強しました!
「一部のユーザーがGnutella Networkサーバーを立ち上げ、そのIPをWeb等で公開している。それをGnutellaのホスト情報に登録することで、Gnutella Networkに参加できるのだ。」
やっぱサーバ必要なんじゃん。
596デフォルトの名無しさん:2006/12/10(日) 10:56:34
そりゃ通信したいなら鯖立ては基本。
597デフォルトの名無しさん:2006/12/10(日) 12:42:56

会社から自宅のWinXPへVPNでアクセスしたいのですが、
会社にはファイアウォールがあります。
F/WではVPNの通過を許さないのは普通でしょうか。

(自宅のルータはデフォルトでVPNがブロックされており
設定を変えないと外からXPをアクセスできません。)
598デフォルトの名無しさん:2006/12/10(日) 13:14:50
普通。

あと板違い。
599デフォルトの名無しさん:2006/12/10(日) 18:28:48
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)

Winsock2.0系パケットキャプチャでプロミスキャスにせず、
自分の送受信パケットだけを取りたいのですができますか。

opt=3
ioctlsocket(s, SIO_RCVALL, &opt);
プロミスキャス設定を取ると、自分のパケットすら取得できなくなる。
PlatformSDKのサンプルとかあると嬉しいです。
600デフォルトの名無しさん:2006/12/10(日) 22:51:33
pollを使った処理について質問です

if( poll( &fds, nfds, timeout ) > 0 ){
 if( fds[0].revents & ( POLLIN | POLLOUT ){
   //いろいろrecv処理
   //その後send
   send( fds[0].fd, buf, buf_size, 0 );
}

という形で作ってるのですが、ソケットがPOLLOUT(送信可能かどうか)の判定は、
sendの直前でやるべきでしょうか?
というのも、「いろいろrecv処理」してる時にソケットが送信可能じゃない状態になってしまってたら。と考えてしまうんですが。
601デフォルトの名無しさん:2006/12/10(日) 23:21:07
nonblockingでsendしてwouldblockならpollループに戻ればいいんじゃね?
つか1コマンド分の送受信バッファは要るんじゃなかろうか
602600:2006/12/11(月) 00:42:36
>>601
ありがとうございます。
ノンブロッキングソケットを使ってるのでその方法は無理ぽいです。
603デフォルトの名無しさん:2006/12/11(月) 02:07:09
いやnonblockingで、なんだが
604600:2006/12/11(月) 17:16:47
うはうは
間違えてました。
普通にブロッキングソケットを使ってます。

605デフォルトの名無しさん:2006/12/11(月) 21:46:02
>>604
ノンブロッキングじゃダメな理由は?
606600:2006/12/11(月) 22:49:55
無いです。
ノンブロッキングにします。
607デフォルトの名無しさん:2006/12/11(月) 23:30:47
ノンブロッキングJr
608デフォルトの名無しさん:2006/12/11(月) 23:47:51
あーでもそのPOLLIN|POLLOUT条件だと戻ったときに引っかからなくなるぞ
609デフォルトの名無しさん:2006/12/12(火) 21:53:05
恥ずかしくも自分でメッセンジャーを作りたいと思い、プログラミングを
始めようかと思っていてC++から始めようと思っているんですけど、
数ある言語の中でどれを選べばいいか迷ってます。

みなさんのご意見お願いしますm(_ _)m
610デフォルトの名無しさん:2006/12/12(火) 22:01:33
>>609
C++から始めようと思ってるならそれでいいと思う。
最短距離でメッセンジャー作りたいならJava, C#あたりかな。

どちらにしろ一から言語を覚える段階なら結構苦労すると思うので、
最終目標のことは意識しないで飽きずに頑張ることが大事
611デフォルトの名無しさん:2006/12/12(火) 23:13:30
>>609
後になって気づくだろうけど
> 自分でメッセンジャーを作りたいと思い、プログラミングを始めようかと思っていて
この考え自体がおかしいですのよ
612デフォルトの名無しさん:2006/12/12(火) 23:18:36
>>609
C++でもJAVAでも作れる物だけど、自分はC#がお勧めかな。
VisualC# Expressは無料で使えるし試してみたら?
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
がんばって。
613デフォルトの名無しさん:2006/12/12(火) 23:28:15
>>611
どこがおかしい?
614デフォルトの名無しさん:2006/12/12(火) 23:55:35
>>613
自分で作りたいと言ってる初心者向かって
考え自体おかしいと返す馬鹿は放置。
615デフォルトの名無しさん:2006/12/13(水) 00:19:53
チャットとかメッセンジャーからはじめるのは丁度いいと思うぜ
616デフォルトの名無しさん:2006/12/13(水) 00:42:42
>>611をこれ以上いじめるな。

弱いものいじめはよくないぜ。
617デフォルトの名無しさん:2006/12/13(水) 01:13:12
きっかけをくじこうとする馬鹿なんかほっとけ。
618デフォルトの名無しさん:2006/12/13(水) 01:48:18
>>611は理由があって発言したんだろう
理由をきいてあげようじゃないか
619デフォルトの名無しさん:2006/12/13(水) 05:39:42
611的には、ほとんどの非初心者が自分に同調してくれる予定だったんだろうな。
どこで間違っちゃったんだろうねw
620デフォルトの名無しさん:2006/12/13(水) 08:48:44
俺もネットプログラミングはチャットツールが最初だったな。
TCPの上に今では見るも悲惨なプロトコルのっけて通信してた。
621デフォルトの名無しさん:2006/12/13(水) 09:09:01
若きゲイツ > OS作ってみたいんですよ。
611 > 素人が何言ってんだ。その考え自体おかしいですよ。
若きゲイツ > すみませんでした。作るの止めます。

プログラマの給料は今の1.5倍ぐらい高くなってたかもね。
622デフォルトの名無しさん:2006/12/13(水) 09:50:21
いやそのたとえはおかしい
623609:2006/12/13(水) 11:01:12
みなさんご意見ありがとうございます。
C#かC++のどちらかに絞り込めました。
初心を忘れないようがんばります!
624デフォルトの名無しさん:2006/12/13(水) 17:42:49
ゲイツは最初OS作ってたっけ?
VBじゃなかったか?
625デフォルトの名無しさん:2006/12/13(水) 18:04:36
>>624
N88Basic インタープリタ
626デフォルトの名無しさん:2006/12/13(水) 19:30:44
>>624
OSは確かどっかからか権利買ってIBMに売り込んだんじゃなかったかな。
627デフォルトの名無しさん:2006/12/13(水) 21:07:11
>>625
NG。アルテア用のBASICだよ
当時は実機がなかったので、ポール・アレンの書いた
8080エミュレータ上で開発したのは有名な話

>>626
シアトルコンピュータのQDOS
CP/Mの8086版互換OSとでもいえるモノで
これをベースにPC-DOSに仕立て上げた
628デフォルトの名無しさん:2006/12/13(水) 21:28:57
ライブドアのようなもの

色々桁違いだが。
629デフォルトの名無しさん:2006/12/14(木) 00:36:36
おまえら、えらそうなこと言ってるけど、
スティーブンスくらいは読んでるんだろうな?全ページ。
630デフォルトの名無しさん:2006/12/14(木) 00:45:18
>>629
まずはsageを覚えような?前ページ。
631デフォルトの名無しさん:2006/12/14(木) 01:14:11
訴えたいことがあるならageでもいい希ガス
それに、sageは別にえらくはない
スティーブンス本はこの世界の常識なので、
このスレの住人なら一通り目を通しているor書いてあることを理解できるくらいは期待したいところだ。
632デフォルトの名無しさん:2006/12/14(木) 01:22:00
紅茶に砂糖を入れてかき混ぜるときに使うアレか。
633633:2006/12/14(木) 01:27:35
こんばんわ。
RTTの計測はwinsockでも可能ですか?
よろしくお願いします。
634デフォルトの名無しさん:2006/12/14(木) 09:47:10
http://www.so-ten.co.jp/products/logvillage/index.php
これ、社で導入しそうなクライアント監視システムです。
閲覧したURLやUSBデバイスの接続など監視できるんですがクライアントPCに専用ソフトを
入れなくてもlocalセキュリティポリシィを変えれば監視できるんだそうです。
ファイル共有とかnetbios等使って実現していると聞きました。
具体的にどのようにしているのかわかる人いますか。自分でも作りたくなりました。
635デフォルトの名無しさん:2006/12/14(木) 11:39:13
営業ご苦労様
636デフォルトの名無しさん:2006/12/14(木) 14:19:51
営業じゃないよ。
FindWindowとかで検索掛けてクライアントからLOGとる方式で作った事ある。
けどクライアント側に専用ソフトなしでどうやっているのか知りたかった。
そけだけ。
>635さん 教えてください。
637デフォルトの名無しさん:2006/12/14(木) 14:27:45
wmiでも使ってるんじゃないか?
638デフォルトの名無しさん:2006/12/14(木) 18:37:35
ブロードキャストのUDPパケットをモニタリングする場合、ただポートを
開いて待ってれば入って来るのでしょうか?

今フリーソフトのクリップボード共有ツールを使わせて貰っていて、
非Win環境との簡単なデータのやり取りもこの共有ツールに打つ様に
すれば便利かなと思っているのですが、暗号化等されていなければ
ポート開いて入って来るパケットを観察、似た互換パケットをブロード
キャスト送信と言う手順で簡単に出来るのかな…
639デフォルトの名無しさん:2006/12/15(金) 03:50:52
>>638
案ずるより生むが易し
640デフォルトの名無しさん:2006/12/15(金) 20:20:37
Windowsの場合、UPnPって実行するのには、Admin権限が必要?

641デフォルトの名無しさん:2006/12/15(金) 22:12:19
自分でUDPパケット作って投げれば何の問題もなく可能
642デフォルトの名無しさん:2006/12/15(金) 22:54:21
RawソケットもAdmin権限が居るんじゃなかったっけ
643デフォルトの名無しさん:2006/12/15(金) 23:02:54
その辺りをVista触った人に聞いてみたいね
644デフォルトの名無しさん:2006/12/15(金) 23:06:02
生ソケットはSP2からadminでも作れなくなった
645デフォルトの名無しさん:2006/12/16(土) 01:09:04
ネットワークプログラミングでpthread使いますか?
646デフォルトの名無しさん:2006/12/16(土) 01:11:43
使ったほうが簡単に書けたりする場合もあるんじゃね?
647デフォルトの名無しさん:2006/12/16(土) 01:31:47
>>642
別にRawパケットいらないし。
HTTPもどきのメッセージをSOCK_STREAMじゃなくてSOCK_DGRAMで投げるだけ。
648デフォルトの名無しさん:2006/12/16(土) 11:40:24
>644
ほんと?
649デフォルトの名無しさん:2006/12/16(土) 11:42:50
FAQです。
650デフォルトの名無しさん:2006/12/16(土) 11:45:17
ネットワークプログラミングはLinuxでやれ!
って話ですよ。MSに言わせると。
651デフォルトの名無しさん:2006/12/16(土) 12:02:22
Cygwinでやっても駄目なの?
って単なるWinsockのラッパーだから無理か・・・
652デフォルトの名無しさん:2006/12/16(土) 12:08:40
そこでWinPcapですよ
653デフォルトの名無しさん:2006/12/16(土) 15:43:57
じゃあおれはVMPlayerでBridgeしたIFをつかうFreeBSD(5以降)でBPF使ってゴリゴリ書いてるか…
654デフォルトの名無しさん:2006/12/16(土) 20:31:13
BSDはTCP/IPの原祖だけど、今のBSDはもう変わってしまっているから意味は無いな。
OSでプログラミング手法を変えてなんとかするしか、今は通用しないと思う。
655デフォルトの名無しさん:2006/12/17(日) 01:18:14
>>23
ヒント ソケットペア
656デフォルトの名無しさん:2006/12/17(日) 01:54:50
何だお前は
どんだけパケット延滞してんだよ
657デフォルトの名無しさん:2006/12/17(日) 04:06:51
ルータにパケット廃棄されなかっただけでも奇跡。
658デフォルトの名無しさん:2006/12/17(日) 05:02:59
一万年と二千年前からKeep Alive
659デフォルトの名無しさん:2006/12/17(日) 10:32:34
遅い上に、間違ってるしw
660デフォルトの名無しさん:2006/12/17(日) 11:52:33
間違ってはいないと思うが?
661デフォルトの名無しさん:2006/12/17(日) 12:12:18
また知ったかぶりか
662デフォルトの名無しさん:2006/12/17(日) 12:46:49
>>660
「ソケットペア」って何よ?
UNIXのsocketpair(2)のことじゃないだろうなw
663デフォルトの名無しさん:2006/12/17(日) 14:18:20
>>662
rfc793の"pair of sockets"を日本語でソケットペアと表記するのはよくあること。
英語でもsocket pairで通じるだろ。
664デフォルトの名無しさん:2006/12/17(日) 15:36:52
>>662
スティーブンスの43ページ嫁
悲しいほどのモグリがいたもんだwww
665デフォルトの名無しさん:2006/12/17(日) 15:47:35
スティーブンス本といえば、第3版はいつごろ翻訳されるんだろうな?
666デフォルトの名無しさん:2006/12/17(日) 16:28:44
すてぃーぶんぶん
667デフォルトの名無しさん:2006/12/17(日) 16:54:29
スティーブンと言ったら目が10
668デフォルトの名無しさん:2006/12/17(日) 18:53:33
>>1
669デフォルトの名無しさん:2006/12/17(日) 19:32:06
>>668
ゴルァ!
670デフォルトの名無しさん:2006/12/17(日) 21:36:31
そろそろ次スレだね
671デフォルトの名無しさん:2006/12/18(月) 19:54:47
質問させてください。
確立済みコネクションが使っている、ローカルインタフェースの
インタフェース名や、インタフェースインデックスを取得したいのですが、
よい方法はありませんか?

とりあえず思いついたのは、

1. getsocknameでIPを取得
2. sysctlとかで (winsockだとGetAdaptersAddresses?)    
   インタフェースリストを取得
3. 2.で取得したリストの中から、1.のIPにマッチするインタフェースを調べる

という方法なのですが、そもそもipv6の場合 IPアドレス -> インタフェース
でよいものなのでしょうか?
672デフォルトの名無しさん:2006/12/18(月) 21:07:45
unicastならそれでいいけど、
routingがdynamicに変わりうることを忘れるな。
一時的にも使っているインターフェース=出ていくインターフェースでない。
673デフォルトの名無しさん:2006/12/18(月) 22:53:34
確立済みコネクションであってもroutingの変更で
interfaceが勝手に変わったりすんの?
674デフォルトの名無しさん:2006/12/18(月) 22:57:10
接続に対するgetsockname(2)の結果は変わらないけど、
出ていくインターフェースは変わりうる。
675デフォルトの名無しさん:2006/12/18(月) 23:36:57
>>673
確立してると思ってるのは、TCP より上の人だけで、
中の人には単なるパケットだから、その時に一番よさ
げなインターフェースを選ぶよ。

676デフォルトの名無しさん:2006/12/20(水) 02:18:21
ルークよ、インターフェースを使うのだ
677デフォルトの名無しさん:2006/12/20(水) 07:22:24
>675
TCPなら確率したコネクションにたいして
出て行くインターフェース(≒SRC-IP)は同じまま保持
しないとまずいんじゃないかと思うが。
678デフォルトの名無しさん:2006/12/20(水) 07:34:57
>>677
具体的にどこがどういう風に?
679デフォルトの名無しさん:2006/12/20(水) 07:48:38
接続されている方のピアが、SRC[ip:port], DST[ip,port]で
ソケットを識別しているのに、勝手にSRC-IP換えたら
通信不能でそ?この4組は通信の間同じ値になる必要があるはず。
SRC-IPが同じ複数のインターフェースがあるという(チーミング)なら
話はべつだが、それって、複数で1つのインターフェースみたいな扱いでそ?
680デフォルトの名無しさん:2006/12/20(水) 09:30:47
とりあえずオレの知っている知識と違うところの住人のようなのでスルー
681デフォルトの名無しさん:2006/12/20(水) 09:44:02
>>679
 もっと勉強しる
682デフォルトの名無しさん:2006/12/20(水) 13:49:25
>>679
確かにINADDR_ANYでbindする時のsrc ipはインターフェイスから拾われるが、
だからといって通信にそのインターフェイスを使わなければならない訳ではない。
683デフォルトの名無しさん:2006/12/20(水) 14:47:54
>>679
そういうプロトコルスタック (if とsrc ip addr の対応が固定) もあるのかもしれないが、
Windows や Unix や Linux ではパケット送出時の if はルーティングテーブルによって選ばれて、
ソケットの src ip や if のもつ ip addr は考慮されないですよ。
684デフォルトの名無しさん:2006/12/20(水) 15:41:38
cでwindowsからlinuxにソケットでデータを送りたいのですが
サーバ側であるlinuxのプログラムはwindowsのときのそれと
まったくちがうんですか?
685デフォルトの名無しさん:2006/12/20(水) 15:43:36
だいたい同じ
686デフォルトの名無しさん:2006/12/20(水) 15:44:48
違うだろ
687デフォルトの名無しさん:2006/12/20(水) 16:08:30
>>682
マジで?BINDしたらインターフェイス固定されるんじゃ

と思ったけどインターフェイスは固定されないのか
固定されるのはIPとポートだけか
688デフォルトの名無しさん:2006/12/20(水) 16:09:55
障害があった場合に経路切り替えてなにがなんでも送受信して
ほしいな
689デフォルトの名無しさん:2006/12/20(水) 16:45:15
>>684
Windows 側で作るときに Windows でしか使えない関数を使えば
全く違うようになるし、互換性のある同じ名前の関数を使えば
似たようなものになる(パラメータとか動作が微妙に違うかも
知れない)。
690デフォルトの名無しさん:2006/12/20(水) 18:47:25
>>683 >>687
うーん、まだ腑に落ちない・・・
connect、sendto するときにルーティングテーブルによって選ばれるのはわかるけど、
確立済みコネクション(connectしたあと)のsendでもルーティングテーブルによって
選ばれるってことでですよね。
そういうシナリオってイメージできないです・・・
691デフォルトの名無しさん:2006/12/20(水) 19:54:31
>>684
細かいとこが違うからハマる可能性がある
ManpageとかMSDNをよく見ること
692デフォルトの名無しさん:2006/12/20(水) 20:00:29
>>690
接続中にroute changeされたり、interfaceのリンクが落ちたり。
693デフォルトの名無しさん:2006/12/20(水) 21:07:41
metrics変更でも切り替わったりするんだろうか
694デフォルトの名無しさん:2006/12/20(水) 21:21:51
えー。if0:210.168.1.X/24とif1:198.0.0.Y/24のifを持つPCがあったとして、
最初if0でTCPの3-wayを終えると、そのソケットのSRCIPは210.168.1.Xでそ。
んでもって、そこでルーティングテーブルが変更されてDST-IPに近いのがif1という
ことになったら、SRC-IPは210.168.1.Xのまま、if1を通ってパケットが発信されるわけ?
そんなルーティング変更がなされて、しかもきちんと通信できるような機械が
そんじょそこらにあるっていうの?
695デフォルトの名無しさん:2006/12/20(水) 21:58:13
( ´ー`)y━・~~~
696デフォルトの名無しさん:2006/12/20(水) 22:43:58
>>694
そんじょそこらにあるよ。
そこまで疑うなら試してみれ。
697デフォルトの名無しさん:2006/12/20(水) 23:11:40
>>694
普通ip自体をifと称さない
698デフォルトの名無しさん:2006/12/21(木) 01:27:48
>>690
あんたが想像力貧困だからどうだっていうの?
699デフォルトの名無しさん:2006/12/21(木) 07:22:28
こりゃまた想像力のない煽り方だな
700デフォルトの名無しさん:2006/12/21(木) 13:47:15
>>697
そのip addressを持つifだろ。
特に、それに起因して文章に曖昧さが発生してるわけでもなし。

701デフォルトの名無しさん:2006/12/21(木) 14:10:08
LANケーブル抜いた状態でUDP送信(send)すると
エラーが帰ってくるんだが(errno:65.EHOSTUNreach)
20秒ぐらいたつと数秒間正常が帰ってくる…。何故?
702デフォルトの名無しさん:2006/12/21(木) 14:13:49
> そのip addressを持つifだろ。
そうかそうか
ifにipaddressを持たせるヤツも居るんだ
しらなかった
703デフォルトの名無しさん:2006/12/21(木) 15:00:39
失笑しか買わない馬鹿な突っ込みはどうかと
704デフォルトの名無しさん:2006/12/21(木) 18:07:07
solarisでIPの生パケット(オレプロトコル)を扱いたいくて、
char packet[LENGTH];
で中身の領域を確保して、パケットの中身を
struct {
uint8_t hage;
uint16_t hige;
uint8_t huge;
};
という構造体で表現したとき、packetへhageは代入はできるのですが、
higeの代入が機種依存になってしいます

x86だと
*(uint16_t*)(packet+1) = hige;
が動作するのですが、sparcだとbus errorになってしまいます。
アライメントの問題なのはわかっているのですが、こういうとき共通のコードではかけないのでしょうか

705デフォルトの名無しさん:2006/12/21(木) 18:19:38
pragma pack
とかって、gccでは使えたっけ?
706デフォルトの名無しさん:2006/12/21(木) 18:38:29
>>704
>アライメントの問題なのはわかっているのですが、こういうとき共通のコードではかけないのでしょうか

htonsしてmemcpy。
707704:2006/12/21(木) 19:02:35
>>705
solaris10のgcc3.4.3で使えますね

>>706

memcpyの存在をすっかり忘れてました(w


pragmaよりは泥臭いけど、処理系依存(sunstudioも念頭に入れておかなきゃいけない)なのはちょと考えてしまうので、memcpyにします。



型ごとにmemcpy呼ぶ関数作るときにTemplateってあるのかと今気づいたC++10日目の初心者
708デフォルトの名無しさん:2006/12/22(金) 00:54:48
>>704
普通に、

struct {
uint8_t hage;
uint16_t hige;
uint8_t huge;
} x;

x.hage = pakcet[0];
x.hige = ((uint16_t)packet[1]) << 8 | (uint16_t)packet[2];
x.huge = packet[3];

って書けばいいと思う。

あと、pragme pack(1) とかすると、68K とかで hige にそのままアクセスすると
アドレスエラーになるような気がするが...。
709デフォルトの名無しさん:2006/12/22(金) 07:58:15
少なくともgccではアラインメントを調整しない構造体を作った場合、
そのメンバのアクセスには、バスエラーにならない方法を使うはず。
710デフォルトの名無しさん:2006/12/22(金) 15:18:44
>>709
そいつはにわかには信じられないほど凄いな。
そういえば昔の Alpha AXP 用の Linux ではカーネルがトラップして面倒を見てくれてた。
パフォーマンスは大いに低下する。
711デフォルトの名無しさん:2006/12/22(金) 22:45:11
>>709
そんな余計なことをするぐらいなら、素直にエラーにしてくれたほうがいいんだけどなぁ。
712デフォルトの名無しさん:2006/12/22(金) 23:06:14
余計というか、pragma等で指定しなければ、
配置についてはどうなるか全く分からないのが言語仕様です。
713デフォルトの名無しさん:2006/12/22(金) 23:21:36
そんな基本的なことを唐突に語られても...。
714デフォルトの名無しさん:2006/12/26(火) 01:00:53
TCPプロトコルのチャットプログラム作りました。
Base64にしてから送信などせず、そのまま送信です。

cygwinからWINDOWSに、buf="hoge\nhoge"という文字列を送信
したのですが、受け取ると文字の長さがstrlen(buf)=4
の"hoge"だけになってしまいました。

これは、プロトコルか何か決まりで正常なのでしょうか?
base64でエンコードしてから、送信すれば大丈夫でしょうか。
どんなことが考えられるのかご教授お願いいたします。
715デフォルトの名無しさん:2006/12/26(火) 01:08:55
おまえがわるい
716デフォルトの名無しさん:2006/12/26(火) 01:17:45
>>715
"hoge\nhoge"のまま
受け取れないとおかしかったですか。
ありがとうございました。
717デフォルトの名無しさん:2006/12/26(火) 02:02:31
>>714 です。
改行を他の文字に変えたり、
Base64でエンコードして送信、受信後エンコード
したら大丈夫でした。

んー、プログラミング駆け出しなので、
どこのコードが悪いのか全然わからないです。

httpとかコマンド送信するとき\r\nを最後につける
って本にあったのでそれと関係してると思ったのですが。
自分で作ったやつなので関係ないですよね。
\nでも\r\nでもどちらでも、切捨てになってしまいます。

どこがおかしいかなにか思い当たる節のある方
いらっしゃいますか?
718デフォルトの名無しさん:2006/12/26(火) 02:18:28
>>717
電話で「体の調子が悪いんです治してください」って騒いでるようなものだ
719デフォルトの名無しさん:2006/12/26(火) 02:44:22
ゲッツ禁止
720デフォルトの名無しさん:2006/12/26(火) 06:11:47
>>714
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3285.txt
お試しプログラム(cygwin用)を作ってみた
良い点
・"Hello\nworld!\r\n"という文字を送信して受信してる
・なんとなくpositive接続からpassive接続へ文字列を送信し、passiveな方で表示できる

悪い点
・バッファとかそのへんは参考になりません
・全体的に汚いです。コーディングスタイルは真似るべきではありません

いじょぅ
721デフォルトの名無しさん:2006/12/26(火) 06:12:19
>>720
禁止ワード入ってて自分で見れない
722デフォルトの名無しさん:2006/12/26(火) 06:15:57
('A`) おっと使い方書いて無いな

-コンパイル方法-
mv 3285.txt hoge.c #ダウンロード&改名
gcc hoge.c -o tcptect

-実行方法-
コンソール1: ./tcptest s
コンソール2: ./tcptest c

で大体おk
分からなくなったらソース見てちょ
723デフォルトの名無しさん:2006/12/26(火) 06:56:40
とりあえずソース出せ
話はそれからだ
724デフォルトの名無しさん:2006/12/26(火) 09:10:31
man fgets
725デフォルトの名無しさん:2006/12/26(火) 11:17:43
>>722
終了方法がないと
726デフォルトの名無しさん:2006/12/26(火) 11:23:55
>>717
パケット1回しか受け取ってない?
2つに分かれてるかもよ
727デフォルトの名無しさん:2006/12/26(火) 12:04:30
>>720
ソースまでアップしていただき、ありがとうございます。
ソース見ながらずっと考えてました。
sizeof、strlenが目に入りまして、調べてみましたが、
受信側で、sizeof使ってたのが原因かもしれません。

"arere\narere"のサイズ調べると
sizeof=4
strlen=11
でした。改行以降切り捨てられますが、
おそらくこれが原因なんじゃないかと思います。
ちょっと今無理なので、夜、確認したいと思います。
728デフォルトの名無しさん:2006/12/26(火) 12:19:17
>>726
727です。
それも調べてみたいと思います。
アドバイスありがとうございます。
729デフォルトの名無しさん:2006/12/26(火) 12:19:50
>>727
sizeof はポインタのサイズを返すから常に4(=32bit)を返すぞ?
730デフォルトの名無しさん:2006/12/26(火) 12:26:34
そういうオチか・・・
731デフォルトの名無しさん:2006/12/26(火) 13:44:50
んーw
C言語とネットワークプログラミングは切り離して勉強したほうがいいと思うよ
732デフォルトの名無しさん:2006/12/26(火) 14:11:53
>>727
sizeof とは何かをよーく調べろ。sizeof は演算子だ。関数ではない。
733デフォルトの名無しさん:2006/12/26(火) 14:27:23
sizeof(charのポインタ)分しか送ってないって落ちかよ。

なんじゃそりゃ!
734デフォルトの名無しさん:2006/12/26(火) 14:42:01
しかしbase64だとOKというのは・・・
まあ今のところネットワーク関係無いから、これ解決したらまたおいで
735デフォルトの名無しさん:2006/12/26(火) 15:08:03
ワロス
fgetsだと思った俺はまだまだだな
736デフォルトの名無しさん:2006/12/26(火) 15:22:29
俺もそう思ったが、BASE64とか言っている時点で何かおかしいわな。
根本的な知識が欠如しているというか。
737デフォルトの名無しさん:2006/12/26(火) 15:40:45
質問させてください。
WaitFor〜系でネットワークイベントを待つとき、内部的には実行スレッドが
Sleepしている状態だと聞きました。
つまり送受信時に重複I/O処理するにしても、完了待機(Sleep)中は
同一スレッド内で動いている別処理は動かないわけですよね。
これって結局ブロッキングと同じでは?と思うのですが…

CUIで何かしながらネットワークイベントを待機したいときは
何にせよ別スレッドが必要、ということでしょうか?
738デフォルトの名無しさん:2006/12/26(火) 16:06:56
WaitFor〜系はブロッキング処理です。
複数のイベントを同時に待てるというだけです。
UNIXのselect/poll/kqueue相当。
739デフォルトの名無しさん:2006/12/26(火) 16:07:49
>>737
何かを並行的に処理するにゃ、自力でイベントループを作ってポーリングするか、スレッド/プロセスにしちまうかしかないと思うんだが・・・
740デフォルトの名無しさん:2006/12/26(火) 16:39:14
>>738
なるほど、ありがとうございます。
いまいち理解が曖昧だったので助かりました。

>>739
やはりそうですか…
どうにも色んなI/O方式があるので混乱気味です。
スレッドが作れないのなら毎回ポーリングが適当っぽいですね。
741デフォルトの名無しさん:2006/12/26(火) 19:16:40
linuxとwindowsでソケット通信したいんですが
クライアントのほうで接続で拒否されてるみたいで・・
サーバ側でポート確認してもlisten状態になってるし
考えられる原因は何でしょうか?
742デフォルトの名無しさん:2006/12/26(火) 19:22:00
>>741
防火壁/NATの板ばさみ/ポートを他のプログラムが握ってる
くらいか
743デフォルトの名無しさん:2006/12/26(火) 19:27:07
とりあえずソース出せ
話はそれからだ
744デフォルトの名無しさん:2006/12/26(火) 19:31:04
>>729-

>>714
>cygwinからWINDOWSに、buf="hoge\nhoge"という文字列を送信
>したのですが、受け取ると文字の長さがstrlen(buf)=4
>の"hoge"だけになってしまいました。

ここには
strlen(buf)=4
って書いてあったんだよなぁ

漏れは >>714>>727 は別人だと思う

じゃなければ釣り死
745741:2006/12/26(火) 19:33:58
サーバ側は
ttp://hp.vector.co.jp/authors/VA003991/kouza/senior/kouza_socket.html
ここのサンプルをそのまま使ってみたんですが・・・
746デフォルトの名無しさん:2006/12/26(火) 19:38:14
拒否されてるみたいってなんだよ。
どの関数を呼んだら何が返ってきたか書いてくれ。
747教えて君:2006/12/26(火) 20:27:49
はじめまして、教えて君です。
さて、質問です。tcpの再送タイマの実装について教えてくださいな。

僕はいままで再送タイマは、送信中のパケットすべてに対してセットされているものだと考えていたんだ。
でも、詳解TCP/IP vol.2を見た感じじゃt_timer[TCPT_REXMT]の一個で実装されてるよね。
これは、つまりパケットが送信される度にタイマが上書きされるのかい?
RFC793,2001,2581を見る限り、詳しく指定されていないってことは細かい所は実装者のお好きなようにって事なのかな?
ってことはBSDがこうなだけで、他のOSになったらまた変ってくるのかな?
質問連続でごめんね。でも反省はしてないよ。

「ソース読め」とか言わないでね、吐血しそうになるから。
748741:2006/12/26(火) 20:28:18
クライアント側のcnnectのところで接続ができていないです
749デフォルトの名無しさん:2006/12/26(火) 20:43:42
だからファイヤーウォールが有効になってんだって。
750741:2006/12/26(火) 21:04:00
外部接続はしていないんですが・・
よくネットワークのことはわからなくて
751デフォルトの名無しさん:2006/12/26(火) 21:07:19
>>750
やめてしまえ
イライラする
752デフォルトの名無しさん:2006/12/26(火) 21:10:44
>>727です。
大変申し上げにくいのですが。。。
if((p=strpbrk(buf,"\r\n"))!=NULL){
*p='\0';
}
受信してから、改行があったら'\0'代入して、
そこまでで切ってしまうという処理してました。
コピペして書き換えていたのですが、残っていたようです。
送信したり受信したりのサイズの件は、sizeofでした。
サイズもおかしくて、改行で消えたのでパニックになりました。

ほんとお騒がせしました。m( _ _ )m
レスくれた方ありがとうございました。
753デフォルトの名無しさん:2006/12/26(火) 21:18:27
>>751
イライラすんなって
相手は厨房だぞ
754デフォルトの名無しさん:2006/12/26(火) 21:22:42
telnetやってみ。
755デフォルトの名無しさん:2006/12/27(水) 02:11:08
>>747
いきなり降参かよ。

質問するにしても、詳解TCP/IP vol.2の分らない所か、RFCに沿って質問しろよ。
RFC 793, RFC 2001をちゃんと読め。
それからRFC 1581って、お前本当にRFC読んでるのか?

RFC 2525 TCP Implementation Problems
2.10 Failure to back off retransmission timeout
RFC 2988 Computing TCP's Retransmission Timer
は読んだのか?
756デフォルトの名無しさん:2006/12/27(水) 02:11:51
>>741
ぱけっときゃぷちゃ、しろ。
つーるは>>6
757デフォルトの名無しさん:2006/12/27(水) 07:44:29
今ホールパンチングの研究してるんですけど、
Symmetricな挙動をするNATルータの機種を知っている方いますか?
それがあるとすごく助かります。
758デフォルトの名無しさん:2006/12/27(水) 07:51:41
ルータ適当にいくつか買ったけどなかったな
安物だからか
759デフォルトの名無しさん:2006/12/27(水) 07:56:58
マルチポストのお知らせ。

TCP/IPについてじっくり考えてみなか?
http://pc8.2ch.net/test/read.cgi/network/1014429970/
760デフォルトの名無しさん:2006/12/27(水) 08:02:20
>>758
ありがとん
困ったなあ
761デフォルトの名無しさん:2006/12/27(水) 10:06:08
質問させてください。
CygwinとC言語でソケットを使ってサーバを書く勉強をしているのですが、
画像データの送信でつまいづいております。

表示したいページのHTMLソースに
<img src="hoge.jpg">などが「単独で」書かれている場合は
この画像がふつうに表示されるのですが、
<td background="hoge.jpg">などと「背景として」要求された画像だけは表示されません。
サーバにとって、両者には何か違いがあるのですか?

画像データの送信の際には、
レスポンスヘッダに「最初の行、Content-Type, Content-Length」の3行を書き、
fopen(...)でバイナリとして読み出したデータを本体としてくっつけて
send(socket, ...)で送っています。

原因や怪しいと思われるところなど、教えていただけるとありがたいです。
762761:2006/12/27(水) 10:24:11
すいません、補足です。
背景画像が表示されないのは<td>に限らずすべてのタグ、
あるいはスタイルシートのbackground-image:url("...")もです。
763デフォルトの名無しさん:2006/12/27(水) 10:26:18
そういうのはブラウザが自分で取ってくるの。
764デフォルトの名無しさん:2006/12/27(水) 10:27:20
>>761
パケットキャプチャと関数の戻り値チェックは最低限してるの?
765デフォルトの名無しさん:2006/12/27(水) 10:48:54
>>761
なんというか、原因はその作ったサーバになるプログラムとクライアントになるプログラムの協調プレイによるものでしかないのでは?
と思う
具体的なのはサッパリだです
766デフォルトの名無しさん:2006/12/27(水) 12:47:51
ヒント
>>714==>>761
767741:2006/12/27(水) 13:07:09
ファイヤーウォールの設定も行ったのですが
ダメでした。
他に考えられる原因はなんでしょうか?
768デフォルトの名無しさん:2006/12/27(水) 13:14:57
>>767
>>756
俺らがエスパーするより>>741がなんとかしたほうが効率がいい
回答を貰いたいなら具体的にどんな環境で何をしてどうなったかを書くべき
769741:2006/12/27(水) 13:42:45
守秘義務があるため答えられないのです。
770デフォルトの名無しさん:2006/12/27(水) 13:54:03
いやもう一度書き込んだ時点で終わりだろう・・・常識的に考えて
771741:2006/12/27(水) 15:02:34
769は俺じゃないです
クライアントwindows,サーバvine linuxでtcp ソケット通信をしたいです
とりあえず文字列を送るプログラムをやっています
サーバ側のプログラムは↓を使っていて,エラーはないです
ttp://hp.vector.co.jp/authors/VA003991/kouza/senior/server.c

ポートはサンプルのまま9000番使ってます
クライアントの方でconnect関数のところで,接続されてないと出ます
tcp/ip builderのソフトでためしにipとポート指定して
送ってみても,rejectされます.
772741:2006/12/27(水) 15:04:14
ファイアウォールの設定,ポートの設定あたりいじったのですが
解決しません.webminのほうで全て許可にしました
773デフォルトの名無しさん:2006/12/27(水) 15:09:17
だからパケットキャプチャしてパケット追ってみろって。
774デフォルトの名無しさん:2006/12/27(水) 15:21:29
>>771
全然情報足りない
間にルータ等をかましてるかどうか
pingは通るのか
ローカル同士でのテストなのにグローバル経由で接続しようとしてないか

>tcp/ip builderのソフト
ってなに?よくしらないんだけど。

後は皆が言うようにパケット追うのが基本
775デフォルトの名無しさん:2006/12/27(水) 15:49:10
>>771
telnet 192.1.1.2 9000 とかして reject されるようなら、
ネットワークやWindowsの設定の問題。
telnet で繋がるようなら、クライアント側のコードの問題。
776デフォルトの名無しさん:2006/12/27(水) 15:59:36
やる気の無い奴に何を言っても無駄。
777デフォルトの名無しさん:2006/12/27(水) 16:22:38
>>771
とりあえずこれはまとめてうpして
・マシンとネットワーク構成
・再現できる最低限のソース
・再現方法

>>720 >>722
とか参考にしてみて
778デフォルトの名無しさん:2006/12/27(水) 16:45:21
>>775
あと、サーバ内で
telnet localhost 9000
も併せてやるとええね。
あと、
tcpdump port 9000
やらんと。
779741:2006/12/27(水) 18:24:09
これ以上は守秘義務があるので答えられません。
ネットワーク構成は特に秘すべきなのですが。
780デフォルトの名無しさん:2006/12/27(水) 18:38:04
んじゃあれだ、







本読んで勉強しろ







質問者の義務を果たせない様なら質問する資格はない
781747:2006/12/27(水) 19:00:08
>>755
レスありがとうございます
質問の仕方は反省しとります
rfc2525,2988はまだ読んでないんで、読んでみます
782デフォルトの名無しさん:2006/12/27(水) 20:23:31
ライブチャットのシステムを作りたいのですが、
お勧めの開発環境はありますでしょうか?
(OS,言語,DB)
漠然とした質問で申し訳ありません。
783デフォルトの名無しさん:2006/12/27(水) 20:29:08
skype。
784デフォルトの名無しさん:2006/12/27(水) 20:34:50
既存のものを使ったらダメなのか?
785デフォルトの名無しさん:2006/12/27(水) 20:42:30
782です。
できれば一から構築して運営したいという内容なのです。
内容的には既存のノンアダルトのライブチャットシステムと
全く同じでいいのですが、どんな言語を使うと実現可能なのか
とっかかりがほしかったところでございました。
786デフォルトの名無しさん:2006/12/27(水) 20:46:03
>>775
>telnet 192.1.1.2 9000

それローカルアドレスじゃないんですけど
787デフォルトの名無しさん:2006/12/27(水) 20:48:08
しかしあれだな。
守秘義務があるようなプロジェクトに関わってる香具師が
こんなレベルだとは発注者は夢にも思ってないだろうな。

788デフォルトの名無しさん:2006/12/27(水) 21:23:24
だから守秘義務って言ってるやつは、成りすましの荒らしだってw
789デフォルトの名無しさん:2006/12/27(水) 23:02:15
大丈夫 俺もまだ35だし ロリコンだから
790デフォルトの名無しさん:2006/12/28(木) 00:17:52
守秘義務に釣られる奴いたのか・・・
791デフォルトの名無しさん:2006/12/28(木) 00:53:36
きっとどこまで釣りなのか分かって無いやつガイル
792デフォルトの名無しさん:2006/12/28(木) 01:04:17
釣られている人がいると思わせる釣り
793デフォルトの名無しさん:2006/12/28(木) 06:23:51
>>739
> 自力でイベントループを作って
WaitFor〜ってそのためにあるんじゃないの?
なんかビジーループのほうがマシだとか思われてそうで心配なんだけど
794741:2006/12/28(木) 11:40:31
守秘義務という言葉の意味が分からないのですか。
OSの種類やサービスパックの有無なども守秘義務の範囲です。
ウィルス対策ソフトに何を使っているかなんて、言えるわけありません。
常識を知ってください。
795デフォルトの名無しさん:2006/12/28(木) 12:05:59
守秘義務があることは認めてやるが
ここでそれ持ち出して詳細を伏せる
やつはガチでアホ
796デフォルトの名無しさん:2006/12/28(木) 12:08:55
>>794
ならば、こういう open なコミュニティーで解決しようとすること自体がNG
797デフォルトの名無しさん:2006/12/28(木) 12:14:41
コュミニティー
798デフォルトの名無しさん:2006/12/28(木) 12:15:25
また釣ら(ry

まあ答えたいけど守秘義務で答えられません、とか
799デフォルトの名無しさん:2006/12/28(木) 13:06:07
すいません。初めての書き込みです。プログラム初心者、というか何も勉強していないのですが、
このような問題を解決しなければならなくなってしまいました。どうか教えてください。課題を教えてくださるスレッド(?)が書き込みできなくなっていたので、
こちらに書き込ませていただきました。
【質問テンプレ】
[1] 授業単元:基礎情報処理
[2] 問題文:縦100横100のマス目(点)に分けられた紙の各点が、白と黒に塗り分けられたものを考える。この中に、下にある様な黒い点で囲まれた図形が1つだけある。図形は必ず、黒い点で囲まれており、
内部は白い点で埋め尽くされている。この「囲まれている」とは、各黒い点の上下左右および8つの点のどれかが黒い点となっているものと考えよう。
□□□□□□□□□□
□□■■■■■■□□
□■□□□□■□□□
□□■□□□□■□□
□□■□□□□■□□
□□■■■■■■□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
この図形は整数値の2次元配列(例えばC言語ならa[y,x])で表されている。x軸は左から右、y軸は上からしたとするので、a[1,1]は一番左上の点になる。この配列はプログラムに入る前に何らかの方法で、白い点は0、黒い点は1になっているものとする。
さて、図形の面積、つまり黒い点で囲まれた内部の「白い点」の数を数えるプログラムを考えよう。ただし図形は必ず紙の上に1つだけ存在し、また必ず紙の端から点1つ以上ずつ少し離れた位置にあるとする(つまり黒い点は紙の上下左右の端には存在しない)。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: すみません、よくわかりません
 [3.3] 言語: なんでもかまいません。
[4] 期限: 2007年1月5日0時まで
[5] その他の制限:まだ何も習っていません。具体的に回答を提示してくれると助かります。
800デフォルトの名無しさん:2006/12/28(木) 13:19:24
スレ違いの上さらにマルチ
801デフォルトの名無しさん:2006/12/28(木) 17:16:15
>>799
倉庫番?
802デフォルトの名無しさん:2006/12/28(木) 18:14:34
やはり守秘義務の壁は厚いか・・・
803デフォルトの名無しさん:2006/12/28(木) 22:11:50
何も習ってないやつにこんな問題出す講師なんていない。
嘘も体外にしろ。

最近こういう奴が多いな。
新手の荒らし?
804デフォルトの名無しさん:2006/12/29(金) 03:44:53
微妙にスレ違いっぽいのですが、適当なスレが見付からなかったので
宜しければここで質問させて下さい。

現在、携帯電話で独自ドメインのメールアドレスを使用したいと思い
以下の様な事を行っています。
[受信]
サーバー側で、メール転送の設定を行い
携帯のメールアドレスへ転送される様にしている。
[送信]
サーバーに送信フォームを置き、発信元を独自ドメインのアドレスにした
cgiスクリプトを介して目的のアドレスへ送信する様にしている。

と、以上の様な感じなのですが、やはり携帯で無理やり
独自ドメインのアドレスを使用するには、この様にするしか方法はないでしょうか?
携帯のメーラーで、色々アドレスが取り扱えれば一番良いのですが…
805デフォルトの名無しさん:2006/12/29(金) 03:46:55
勝手サイトじゃなくて承認サイトならiアプリとかで作成可能
806デフォルトの名無しさん:2006/12/29(金) 04:39:24
>>805
レスどうも!二つお聞きしたい事があるのですが、宜しければご教示下さい。

1. 勝手サイトと承認サイトとは具体的にどういう事なのでしょうか?

2. iアプリで作成可能というのは、携帯で使用出来るメーラーを新たに作成可能だという事でしょうか?
また、iアプリとは一般的にどの言語で記述するものなのでしょうか?
807806:2006/12/29(金) 04:59:32
ああ、自分で作らなくても、
そういう物がフリーとかで公開されてるって事ですよね。
ちょっとVectorにでも行って探して来ます。
808デフォルトの名無しさん:2006/12/29(金) 05:16:36
皆さん始めまして。
2チャンネル(ですよね?)初めての投稿なのですが…。
荒らしがいっぱいいると聞いたので、来たことがなかったのですが…
投稿してみました。

JAVA言語で、ネットワークを利用しつつACCESS利用した、
プログラムサンプルのサイトありませんかね?
説明ならもっと助かります。よろしくお願いいたします。

ググレよ〜とかはやめてください。探したので…一応ですが…。
809デフォルトの名無しさん:2006/12/29(金) 07:21:15
そのACCESSって何のACCESS? もしかして・・・
810デフォルトの名無しさん:2006/12/29(金) 09:02:05
>>808
> JAVA言語で、ネットワークを利用しつつACCESS利用した、
> プログラムサンプルのサイトありませんかね?

条件限定しすぎ
あるのかどうかはしらないが、そんなサイトを探すより、
それぞれ3つを扱えるようにした方が早いだろう
あと、何がわからないのかをはっきりさせた方がいい

> ググレよ〜とかはやめてください。探したので…一応ですが…。

やめてくださいって…言われたくなかったら、
どんなこと調べたのかは書くべきだろ
811デフォルトの名無しさん:2006/12/29(金) 09:43:26
>>809
Access って、MS-Access 自体のことなのか、Jet のことなのかがよくわからんが、
Jet なら、jdbc + access あたりでググレば、いくらでも出てくるぞ。

Access 自体を操作したいなら、java + "common object model" あたりでググれば
いいと思う。あまり、そんな奴を見たことないけど。
812808:2006/12/29(金) 11:07:12
先にお礼を普通にスレッドしていただきありがとうございます。

すいませんでした。わかりずらかったですよね。

えっと、AccessはMS-Access使っております。

現在はMS-Access のSQLのデータを直接JAVAで呼び出すことが出来ており、
SQLのデータをネットワークを経由してJAVAの方へ持って行きたいのです
が…。一応OSはWindows(XP)使いたいと思います。


※文章が不慣れな点がありましたらすいません。
813デフォルトの名無しさん:2006/12/29(金) 11:30:57
>先にお礼を普通にスレッドしていただきありがとうございます。
お、新語だ。
814デフォルトの名無しさん:2006/12/29(金) 11:45:06
>>812
わかりずらくなかったけどわかりづらかったです。
815デフォルトの名無しさん:2006/12/29(金) 14:50:02
>>813
>スレッドしていただき
どういう意味なんだろうな
816デフォルトの名無しさん:2006/12/29(金) 14:59:28
処理って意味だろ
817デフォルトの名無しさん:2006/12/29(金) 15:55:13
レスの間違いじゃね。
818デフォルトの名無しさん:2006/12/29(金) 16:11:41
>>812
> 直接JAVAで呼び出すことが出来ており

なんで、それを先に書かないの?

> ※文章が不慣れな点がありましたらすいません。

文章が不慣れと思うなら、なおさらその直接呼び出している部分の
コードを晒した方が話は早いと思う。
819デフォルトの名無しさん:2007/01/04(木) 16:09:43
#include <netinet/ip.h>struct ip *iph のiph->ip_src が ある特定のアドレスと等しいかどうかの比較ってどうやるのですか?
820デフォルトの名無しさん:2007/01/04(木) 18:18:51
特定されてるなら比較するだけでいいんじゃないの?
821819:2007/01/04(木) 21:17:25
>>820
レスありがとうございます。

例えば iph->ip_src が "192.168.0.1" かどうかというのを
具体的にどのように比較すればいいのかがわからないのです。

if (iph->ip_src == "192.168.0.1") {}
ってなわけにわいかないですよね。

if (iph->ip_src.s_addr == hogehoge) もなんか違うような気がするし、、、

そのへんを具体的に示していただけると助かります。
822デフォルトの名無しさん:2007/01/04(木) 21:25:48
>>821
if (iph->ip_src.s_addr == inet_addr("192.168.0.1") ) {}
823デフォルトの名無しさん:2007/01/04(木) 23:06:35
初めまして。よろしくお願いいたします。

daytime が利用可能なインターネット上のホスト(サーバ)を
教えていただけませんか。
例えば,コマンドプロンプト上で
telnet * 13
とやって反応が出てくるような * です。

ある UDP サンプルプログラムを試しているところなのですが,
telnet で反応してくれるホストがみつからずにいます。
そこで telnet でうまくいけば,サンプルプログラムでも
試すことができるのですが,そのホストが見つからない,という
状況です。
824デフォルトの名無しさん:2007/01/04(木) 23:42:56
>>823
telnet と udp ... 釣りと言うことでいいか?
825デフォルトの名無しさん:2007/01/04(木) 23:50:32
> 823
恐れ入ります。
釣りのつもりはないのですが。
telnet と udp を使っていますが,要はサンプルプログラムで
daytime サービスを試しに使ってみたい,しかし,ホストが見つからない
ので,提供しているホストを教えてください,という趣旨の質問です。
検索をかけてみたところ,セキュリティ上,daytime は off にしている
サーバも多そうな感じがしたので,利用可能なホストがあれば
教えてくださいというものです。
826823:2007/01/04(木) 23:53:13
>824
825の「> 823」は「>824」の間違いでした。すみません。
827デフォルトの名無しさん:2007/01/04(木) 23:55:49
telnet でつながっても UDP が使えるとは限らないんじゃまいか?
ローカルでdaytime動かす方が確実かも。
(そもそも余所様の鯖で実験するなよw)

Winは知らない。LinuxならxinetdのdaytimeをONすればおk。
インストールするのが面倒ならKnoppix。
828デフォルトの名無しさん:2007/01/05(金) 00:47:34
>>825
> telnet と udp を使っていますが

ますます釣りにしか見えない...。

マジなら、まず TCP とは何ぞやから勉強し直したほうがいいと思う。

>>827
Win2K なら、Windows コンポーネントの ネットワークサービスの
中に 簡易 TCP/IP サービスがあるので、それをインストールすれ
ばいい。(ただし、Character Generator, Discard, Echo,
Quote of the Day も一緒にインストールされてしまうが。)

WinXP にもあったと思う。
829デフォルトの名無しさん:2007/01/05(金) 00:58:47
telnet で daytime サービスを確認して
udp の実験をするつもりなんだろうと解釈した。そして

 telnet は繋がったけど udp のプログラムが動きません><

ってのを密かに期待www
830823:2007/01/05(金) 01:15:36
>>827-829
telnet も udp のサンプルプログラム もうまくいけました。
827 の方の書かれた通り,xinetd で daytime を on にして試しました。

ちなみに,件の「UDP のサンプルプログラム」は David A. Curry 著,
アスキー書籍編集部監訳『UNIX C プログラミング』に
載っているものです。
831デフォルトの名無しさん:2007/01/05(金) 01:24:30
>検索をかけてみたところ

漏れはあなたが捕まらないことを祈ります
832デフォルトの名無しさん:2007/01/05(金) 01:28:34
>>831
フイタ
833デフォルトの名無しさん:2007/01/05(金) 01:38:28
>>831
中国?
834デフォルトの名無しさん:2007/01/05(金) 08:37:30
昔TCPの実装のテストするのに遠くにあるchargen鯖を叩いたりしたものだが
昨今はこういうの開いてるところ無いだろね。
835デフォルトの名無しさん:2007/01/05(金) 09:30:36
pingさえ通らんからなあ
836デフォルトの名無しさん:2007/01/05(金) 12:48:24
>>822ありがとう
837デフォルトの名無しさん:2007/01/06(土) 06:30:54
マルチスレッドで一つのソケットに対してread、writeしています
readは排他制御しないとまずそうなのはわかるんですが
writeするときにも排他制御するべきでしょうか?
838デフォルトの名無しさん:2007/01/06(土) 08:49:03
プログラムにもよるが、すべきだろ。こういう質問をするということは
おそらくやってないと思うが、writeの戻り値もちゃんとチェックしとけよ。
839デフォルトの名無しさん:2007/01/06(土) 11:05:07
レスありがとうございます。やっぱりしとくべきなんですね・・・
readとwriteが同時に一つのソケットに対して行われるのは大丈夫なんでしょうか?
840デフォルトの名無しさん:2007/01/06(土) 11:35:47
>>839
同時に出来ないからおk
841デフォルトの名無しさん:2007/01/06(土) 14:32:35
>>840
同時にできないということは
readでブロックしている間はwriteもブロックされるということでしょうか?
842デフォルトの名無しさん:2007/01/06(土) 16:38:57
>>841
いや、同時に行われるよ。
でも、それが何か問題あるかね?
843デフォルトの名無しさん:2007/01/06(土) 16:42:36
そりゃ実装に依存するんじゃね?
よほどテキトウな実装じゃないかぎりブロックしないと思うけども。
844デフォルトの名無しさん:2007/01/06(土) 17:04:26
どの部分で同時と言ってるのかねぇ
845デフォルトの名無しさん:2007/01/06(土) 17:20:26
すくなくともTCP/IPは全二重だから読み書きは同時に行える。
読み書きのたびにブロックするようなプログラムを書いてるかどうかは別の問題
846デフォルトの名無しさん:2007/01/06(土) 17:19:52
>>844
どの部分でもいいだろ。本質じゃねーよ。
847デフォルトの名無しさん:2007/01/06(土) 17:25:13
>>846
本質は何?
848デフォルトの名無しさん:2007/01/06(土) 17:26:24
大抵はバッファリングしてるから、read()もwrite()も非ブロッキングだし、
複数のスレッドから同時に利用したとしても構わないような設計になっているはず
でFA
849デフォルトの名無しさん:2007/01/06(土) 18:37:42
TCPの実装について質問です。
詳解TCP/IP Vol.2の917pの図29.5の892行に
tp->t_dupacks > tcprexmtthresh
という部分があるのですが、これは
tp->t_dupacks >= tcprexmtthresh
ではないのでしょうか?
この図の892-894行における処理は、高速リカバリにおいて最初の重複ACKで
ないACKを受信して、高速リカバリを終了する際のcwndをssthreshの値に設定
し直す部分だと理解しています。しかし、
tp->t_dupacks > tcprexmtthresh
だと、例えば重複ACKの閾値が3だとして、きっちり重複ACK3つで高速再送、
高速リカバリが行われた場合、cwndがssthreshに設定されないと思うんです
が、これは正しいのでしょうか?
850デフォルトの名無しさん:2007/01/06(土) 19:30:07
>>849
正しくは無いが、なんとかなる
851デフォルトの名無しさん:2007/01/06(土) 20:48:06
>850
レスありがとうございます。
やっぱり正しくはないんですね。
852デフォルトの名無しさん:2007/01/06(土) 20:57:00
手元に無いから外してるかもしれんが、ひとつ前のif文で++tp->t_dupacksされてたりしない?
853デフォルトの名無しさん:2007/01/06(土) 21:31:09
>>845
> すくなくともTCP/IPは全二重だから読み書きは同時に行える。

プログラムから読み書きが同時に発行できることと、データが
送受信同時にできるかは全然別の話だよ。

(例えば) 無線 LAN は半二重。
854デフォルトの名無しさん:2007/01/06(土) 21:37:25
>>853
どの部分でもいいだろ。本質じゃねーよ。
855デフォルトの名無しさん:2007/01/06(土) 23:59:11
問題はソケット関数群がスレッドセーフに実装されているか否かであって、
たとえLANが同時に送受信できようが、ソケット系関数の中で内部で持ってる(かもしれない)
ステータスとかいろんな変数の扱いがスレッドセーフじゃなきゃアウトだろ、ってこと。
逆にLANが同時に送受信できなくても、関数の中できちんと排他処理してたりするなら問題ないだろ。

つまり、調べるべきはソケットライブラリの仕様であって、
TCPの仕様や物理層の仕様ではない。
856855:2007/01/07(日) 00:05:56
あぁ、途中で送信しちまった...

>>837 は Windows を対象にしてるなら
ttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html
この 3.9 とか読むといい。
UNIX の場合は知らないから識者キボンヌ
857デフォルトの名無しさん:2007/01/07(日) 00:43:54
そもそも、ストリーム出力に対して排他もせずに複数スレッドから出力するっていう
状況がよくわからんのだが。

受ける方はどうやって受ける気なんだろう...。
858デフォルトの名無しさん:2007/01/07(日) 00:50:23
>>857
送るのも届くのも受けるのも全部気まぐれだろ
859デフォルトの名無しさん:2007/01/07(日) 01:30:38
>>853
> プログラムから読み書きが同時に発行できることと、データが
> 送受信同時にできるかは全然別の話だよ。
2行目にほぼ同じ意味のことを書いてると思うんだが
どうしてそこだけ削除して引用してるの?
860デフォルトの名無しさん:2007/01/07(日) 01:47:17
どの部分でもいいだろ。本質じゃねーよ。
861デフォルトの名無しさん:2007/01/07(日) 03:30:40
>>859
> すくなくともTCP/IPは全二重だから

指摘する部分だけ引用するのは当然だと思うが。

全二重の意味理解して無いだろ。
862デフォルトの名無しさん:2007/01/07(日) 03:53:19
なんかどーでもいい
863デフォルトの名無しさん:2007/01/07(日) 03:58:18
どうでもいいだろ。本質じゃねーよ。
864デフォルトの名無しさん:2007/01/07(日) 07:13:16
結論は >>850 ですか?
865846:2007/01/07(日) 20:49:06
>>864
そのとおり
866デフォルトの名無しさん:2007/01/07(日) 21:37:42
>>861
送受信じゃなくて読み書きと書いたのが気に食わないってことですか
867デフォルトの名無しさん:2007/01/07(日) 23:15:13
TCP/IP が全二重と書いてあるのがおかしいと言うだけ。

どっからそんな変な知識仕入れたんだ?
868デフォルトの名無しさん:2007/01/07(日) 23:29:20
たとえばテンプレにもあるサイトのここに書いてるな。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/debugging-tcp.html
データリンク以下の層も全二重かどうかはそれこそ別問題だろ
869デフォルトの名無しさん:2007/01/08(月) 00:01:57
この中に全二重と半二重の違いが分かっていないヤツがおる
870デフォルトの名無しさん:2007/01/08(月) 00:49:48
全二重は全部二重で半二重は半分二重だろ。わかってるよ。
どっちでもいいだろ。本質じゃねーよ。
871デフォルトの名無しさん:2007/01/08(月) 00:49:58
おまえやろ
872デフォルトの名無しさん:2007/01/08(月) 01:29:29
おまえや
873デフォルトの名無しさん:2007/01/08(月) 01:47:17
半二重とは二重の半分、つまり一重である
874デフォルトの名無しさん:2007/01/08(月) 02:14:11
なまえや
875デフォルトの名無しさん:2007/01/08(月) 02:27:40
紙一重
876デフォルトの名無しさん:2007/01/08(月) 10:39:27
じゃあ、full duplex, half duplexで。
877デフォルトの名無しさん:2007/01/08(月) 18:12:11
acceptで待っている状態のスレッドを
ほかのスレッドからacceptを終わらせるにはどうしたらいいですか
878877:2007/01/08(月) 18:38:20
つけたし

Winsockだとclose()を呼び出してやればうまく
acceptを抜けてくれるけれどもLinuxだとうまくいかない
879デフォルトの名無しさん:2007/01/08(月) 19:18:33
UNIX系なら適当なSIGNALを投げて、EINTERで戻す手があるな。
スレッドとシグナルの相性がよくないという噂は別にして。
880877:2007/01/08(月) 19:23:05
>>879
トンクス
881デフォルトの名無しさん:2007/01/08(月) 20:27:30
full duplex = 複線
half duplex = 単線
っていう感じでしょうか?
882デフォルトの名無しさん:2007/01/08(月) 20:33:57
>>881
full duplex は受信と送信が同時にできることを意味する。
half duplex は受信も送信もできるが、同時には送受信できないことを意味する。

別の表現をするなら full duplex は携帯電話みたいなもんで
half duplex はトランシーバーみたいなもんだ。
883デフォルトの名無しさん:2007/01/08(月) 20:53:45
だからペイロードを電車に例えれば>>881の通り
884デフォルトの名無しさん:2007/01/08(月) 23:08:26
つーか、イーサネット層半二重なることアルヨ ってだけだろ。

TCP/IP層は 全二重バッチコーイ! な仕様なんだから
どうでもいいだろ。本質じゃねーよ。
885デフォルトの名無しさん:2007/01/08(月) 23:13:13
本質はなに?
886デフォルトの名無しさん:2007/01/08(月) 23:22:29
本質なんてどうでもいいだろ
887デフォルトの名無しさん:2007/01/08(月) 23:52:40
それは良くない。
888デフォルトの名無しさん:2007/01/09(火) 01:03:47
ハゲ一重
889デフォルトの名無しさん:2007/01/09(火) 01:06:18
松うな重
890デフォルトの名無しさん:2007/01/09(火) 02:57:13
羽二重餅
891デフォルトの名無しさん:2007/01/09(火) 09:17:54
お前らに心眼なんて在るわけ無いだろ
892デフォルトの名無しさん:2007/01/09(火) 10:23:00
プログラム書くときに普通はTCP/IP層を使う以上
イーサネット層を意識する必要はない

つまり全二重だと思って使ってれば問題なし
893デフォルトの名無しさん:2007/01/09(火) 16:35:41
WinPcapのフィルタリングで、
1. TCPは送信だけ。受信は不要。
2. UDPはSRC PORT 53の受信だけ欲しい。
というフィルタはどう書けますか。
894デフォルトの名無しさん:2007/01/09(火) 16:45:52
そこでBASICでつよ
895デフォルトの名無しさん:2007/01/09(火) 17:07:56
C言語でホストスキャンのプログラムを作るにはどのようにすればよいですか?
896デフォルトの名無しさん:2007/01/09(火) 17:14:04
ソケットの使い方を調べる
897デフォルトの名無しさん:2007/01/09(火) 17:33:43
>>893
(src host A.B.C.D and tcp) or (dst host A.B.C.D and udp src port 53)
A.B.C.Dは自ホストIPアドレス。
898デフォルトの名無しさん:2007/01/09(火) 18:15:53
>>884
TCP/IPじゃなくて、TCPだな。全二重なのは。
>>877>>879
そのUNIXにPOSIX realtime拡張のpthreadがないとダメ。
そうじゃないとthreadにsignalを送れない。
(realtime拡張がないと対象はprocessのみ)
899デフォルトの名無しさん:2007/01/09(火) 21:31:49
C言語でProxyARPのプログラムを作るにはどのようにすればよいですか?
900デフォルトの名無しさん:2007/01/09(火) 22:55:09
>>899
環境が分からないけど、WindowsならWinPcapを使うことになると思う。
UNIX系ならPF_PACKETとか。
901デフォルトの名無しさん:2007/01/14(日) 04:53:28
>>877
俺も昔それで悩んだけど、acceptの前のselectで一秒ごとにwait抜けてキャンセル
フラグを見るようにしてる。ポーリングの効率の悪さと、キャンセル処理に最悪
一秒かかるけど、許容してる。
902デフォルトの名無しさん:2007/01/14(日) 04:59:45
でも、今思うとWindowsはcloseで、Linuxはselectでキャンセル用FDを
用意しておけばいい気もする。
あと試してないけど、pollだとcloseで抜けたりするといいね。。
903デフォルトの名無しさん:2007/01/14(日) 14:17:16
フラグ立てといて
他のスレッドがconnectしにいけばいいんでないか
904デフォルトの名無しさん:2007/01/14(日) 14:56:20
待ち人が来たかと思って玄関を開けると、そこには殺人鬼が立っていた

って感じだな。ネットワークってホラーだよな。 殺しのシグナルとか。
905デフォルトの名無しさん:2007/01/14(日) 17:48:11
>>903
なんか、あまり美しくないなあ...。
906デフォルトの名無しさん:2007/01/16(火) 15:12:31
ソケットのラッパーみたいなカンジで、処理系に依存せずネットワークプログラミング
ができるライブラリはありますか?
グラフィックスでいうOpenGLみたいな。
907デフォルトの名無しさん:2007/01/16(火) 15:16:00
それがソケットライブラリなのでは
908デフォルトの名無しさん:2007/01/16(火) 15:28:48
>>907
もう一段階上のがホスィ。
けど、その解答からするとナイみたいね。Thx
909デフォルトの名無しさん:2007/01/16(火) 15:33:13
思ったけど、そーなると、各言語のネットワークライブラリになるのかねぇ。フム
910デフォルトの名無しさん:2007/01/16(火) 15:44:42
APR(Apache Portable Runtime)にそういうの入ってたような。
あと、Boost.Socketってまだ存在しないんだっけ?
911デフォルトの名無しさん:2007/01/16(火) 19:41:29
それがJavaだってインターネット256倍本に書いてあったよ
912デフォルトの名無しさん:2007/01/17(水) 09:01:53
もしかして自分で関数創れない香具師の溜まり場なのか?
913デフォルトの名無しさん:2007/01/17(水) 13:48:19
はぁ?
kansuu(
914デフォルトの名無しさん:2007/01/17(水) 13:55:27
PPPの実装とIPチェックサムの計算ルーチンなら一度書いたことが有る。
でも普通はそういうものは一々書かないよね。
915デフォルトの名無しさん:2007/01/17(水) 14:01:01
まぁ、実践を兼ねた趣味程度の小噺にしかならないな
それ以上に行く人間は少ないんじゃないかと思ってる
916デフォルトの名無しさん:2007/01/18(木) 05:46:22
>>908
RogueWave
ttp://www.grapecity.com/japan/roguewave/sourcepronet.htm
ACE
ttp://www.cs.wustl.edu/~schmidt/ACE.html

とかあるね。俺はSocketラッパー程度の薄いライブラリは他人の使わない
方針だけど。
917デフォルトの名無しさん:2007/01/21(日) 22:59:11
Win32環境(VC8 + WinSNMP API)でモニタツールを作りたくMSDN読みながら格闘中ですが
あまりの文献の少なさと難解な呼び出し手順に早くも敗北の悪寒。
早速詰まってしまいましたのでご助力をお願いします orz

SnmpSendMsg()でSNMP_GETした後のパケットの一連の受信処理で何故か
1回置きにエラーが出ます。
このときアナライザでGetRequestパケットとそれに対して対象のターゲット
機器からResponseパケットが来る所までは確認しています。

擬似コード的にはこんな感じです
{
SnmpSendMsg(); //GetRequestパケット送出
Slppe(500); 

SnmpRecvMsg(); //ここでSNMPAPI_SUCCESSが返ってる = パケットは取得できてるはず
SnmpGetPduData(); //VBLのハンドルを取得(ここでも常にSNMPAPI_SUCCESSが返ってる)
SnmpGetVb(); //一つ上で取得したVBLから値を取得しようとすると一回おきにSNMPAPI_VBL_INVALID(VBLが変)が帰ってエラー

/*値を取得したら表示処理*/
/*SnmpRecvMsg()で取得したハンドルを解放*/
}

上記のコードをループさせると、SnmpGetVb()を呼んだときに何故か一回おきで成功->失敗を繰り返します。
SnmpGetVb()に渡すVBLのハンドルはSnmpGetPduData()で取得していますが、これの戻り値は
SNMPAPI_SUCCESSにも関わらず、VBLハンドルの値を見ると1を返したり0を返したりしています。
(0の時がSnmpGetVb()でエラー)


なんかの呼び出し方が間違っているのでしょうが自分には判別できず頭を抱えてます。
間違いが判れば指摘下さい。
宜しくお願いします。
918デフォルトの名無しさん:2007/01/22(月) 15:42:12
成功したときにはちゃんとSnmpFreeVbは呼んでいるかとか、
エラー時のエラーコード (GetLastError で得られるもの) とか、
その辺の話も書けばより真剣な質問としてとられると思います。
919デフォルトの名無しさん:2007/01/22(月) 21:45:55
書いてあるようだが
920デフォルトの名無しさん:2007/01/23(火) 16:05:57
お世話になります。

Windows XP にて。
IPヘルパAPI でNICの情報を取得するコードを書いています。
GetIfTable()

●複数NICがある場合、GetIfTable() で取得する順番は
どのように決定されるのでしょうか?
GetIfTable(&IfTable, &size, FALSE)
IfTable.table[n]に格納される順番です。

●あと、NICが一枚もない場合はGetIfTable()が失敗するのでしょうか?
それとも取得テーブル数が0なのでしょうか?
事情によりNIC外せないので・・・実証できません。

ネットで情報をうまく探せずここに書き込ませていただきました。
よろしくお願いします。
921デフォルトの名無しさん:2007/01/23(火) 17:46:35
> 事情によりNIC外せないので・・・実証できません。

まずこれをなんとかしろ。

手元で試せないのに「解決」したつもりになってどうする?
922デフォルトの名無しさん:2007/01/23(火) 18:41:19
>>920
2つ目の件はデバイスマネージャで無効にしてみるとかはどうでしょうか?
XPなのでマシンの構成が変わったと判定されて面倒でしょうけどね w

GetIfTable() を使ったサンプルプログラムを見つけたのでちょっと試してみましたが、
私の環境では無効にしているNICは列挙されませんでした。

NICが1つも無い場合にどうなるかは、その環境でも GetIfTable() を試してみれば想像付くと思います。
923デフォルトの名無しさん:2007/01/24(水) 16:27:32
>>922
>NICが1つも無い場合にどうなるかは、その環境でも GetIfTable() を試してみれば想像付くと思います。

イメージトレーニング?
924デフォルトの名無しさん:2007/01/27(土) 17:09:34
ストリーム再生されてるオーディオファイルをダウンロードするにはどうすればいいの?
925デフォルトの名無しさん:2007/01/28(日) 00:59:25
プロトコルに従えばいい。
926デフォルトの名無しさん:2007/01/29(月) 23:48:17
Windows の SO_REUSEADDR 周りで教えてください。
以下の要件を満たすサーバを作りたいと思ってます。

[要件]
1. 他のプロセスがすでにポートを使っていたらエラーにしたい。
2. サーバを再起動してもすぐに同じポートを利用したい。

[やったこと]
setsockopt で SO_REUSEADDR を指定して bind。

[結果]
他のプロセスがポートを利用していてもエラーにならない。

[質問]
検索すると以下のような記述を見かけました。
Windows では SO_REUSEADDR は使わないのが一般的なんでしょうか?

1. Windows では SO_REUSEADDR をつけると
 他のプロセスがポートを利用していても bind できる。
2. Windows では TIME_WAIT 状態でも SO_REUSEADDR なしに普通に
 bind できる
927デフォルトの名無しさん:2007/01/29(月) 23:57:33
このスレで質問しても答えられる奴いないよ
冷やかされて終わり
928デフォルトの名無しさん:2007/01/30(火) 00:29:21
>>926
WindowsだってTIME_WAITは待たなきゃ駄目なのだよ。
でも、ちゃんと綺麗に終了すればREUSEしなくたって
へっちゃらなはず。
まあ大抵は汚く終わるから必要だけどな。
929デフォルトの名無しさん:2007/01/30(火) 00:34:45
ソケットの仕様がツンデレ電話だから発生する。


「も、もう電話切っちゃうからね!」 とFIN送信したあと、
相手の 「ああ、おやすみ」(FIN,ACK)発言 を待つ。 (=TIME_WAIT状態)

相手から おやすみ を聞くまで ずーーっと待つ。
20分くらい無言の受話器を抱えて途中から涙目で待つ。

でもそのうち疲れて、そっと受話器を置く。
930デフォルトの名無しさん:2007/01/30(火) 00:42:21
EXCLUSIVEなんちゃらってオプションがなかったっけ?
931デフォルトの名無しさん:2007/01/30(火) 00:44:10
>929
FIN_WAITと混同してない?
932デフォルトの名無しさん:2007/01/30(火) 17:01:11
FIN_WAITって状態じゃないの?
933デフォルトの名無しさん:2007/01/31(水) 01:31:12
質問です。
winsockでTCPを使って複数のデータを送るプログラムがあるのですが
sendのエラーチェックをしていないとWSAEWOULDBLOCKなどで送るデータに漏れが生じることがあります。
それは理解できるのですが、送信されたデータを受信するとデータの順序が変わっているときがあるのです。
TCPなら途中でデータの順序が入れ替わるようなことはありえないと思うので
おそらくは送信する時点で既に順序が入れ替わっていると思うのですが、
順番にsendを呼び出しているのに、何故このようなことが起こるのでしょうか?
934デフォルトの名無しさん:2007/01/31(水) 01:45:59
WSAEWOULDBLOCKになったデータを別のデータの後に再送したりしてないだろうな
935デフォルトの名無しさん:2007/01/31(水) 01:47:54
>>933
とりあえずパケットダンプしてみて、何も無ければアプリケーション側のバグを疑って、それでもなんとも無ければOS変えてみる
むしろとりあえずブロッキングにして実験してみるのが手っ取り早いな
936デフォルトの名無しさん:2007/01/31(水) 09:40:40
>>933
送信のときのデータを表示させて見てみたら?
アマチュアだけど、自分のときはそうしてるよ。
937デフォルトの名無しさん:2007/01/31(水) 10:19:00
>>936
>>933はプロだからとっくにその程度のことはしてる
938デフォルトの名無しさん:2007/01/31(水) 10:33:01
>>935
> とりあえずパケットダンプしてみて、何も無ければアプリケーション側のバグを疑って、
> それでもなんとも無ければOS変えてみる

どんな戦略だよw
ダンプがおかしかった場合(一番ありうるケースだと思うが)の対処はなしかよ。

100%アプリのバグだから良く見直せ。>>933

939933:2007/01/31(水) 14:39:00
皆さんありがとうございます。
これまでもそういう事例がないもんかなと思って聞いてみたのですがやっぱりアプリの問題ですよね。
見直してみます。
940デフォルトの名無しさん:2007/01/31(水) 14:52:51
>>938
一番ありうるケースがパケットダンプがおかしい場合なのに
100%アプリのバグなのか・・・
941デフォルトの名無しさん:2007/01/31(水) 15:12:42
1パケットに複数のデータがまとまってて取り出すときにミスってるだけじゃねーの
942デフォルトの名無しさん:2007/01/31(水) 15:14:34
>>941
エスパー認定
943デフォルトの名無しさん:2007/02/01(木) 08:21:00
こちらで聞いて良いのかどうか解りませんが、お解りになる方が
おられましたら、お教えください。

自作の簡単なプロクシサーバーを作って、ちょっとしたフィルタリングを
するソフトを作ろうとしています。
自作ソフトは、ブラウザーから受け取ったヘッダをもとにWANにアクセスして
その情報を単純にブラウザーに返すだけのものです。

ブラウザーのプロクシ設定を自作ソフトに設定をして、普通にブラウジングが
できるなりました。
この時に、text/htmlなどの任意のContent-Type以外はプロクシを使わず
直接アクセスさせるような方法というのはあるでしょうか?

なにか案がありましたら、お教えください。
説明がわかりづらいようでしたら申し訳ありません。
944デフォルトの名無しさん:2007/02/01(木) 19:25:09
ロードバランサのDSR構成とかがひょっとしたら参考になるかもしれない。
945デフォルトの名無しさん:2007/02/01(木) 22:58:51
ありがとうございます。
DSR構成は・・・私には難しすぎて、すぐに理解ができませんでした。
もう少し、DSR構成を勉強してみます。
946デフォルトの名無しさん:2007/02/02(金) 02:07:36
>>943
Content-Typeで判断できるかは分からないけど
PACファイルを使えばURL中の特定文字列から直接接続かProxyかに切り替えることができるよ
947デフォルトの名無しさん:2007/02/02(金) 06:05:28
Content-Typeはアクセス「してから」サーバが返すんだから
プロキシ経由でアクセスするかどうかの判断に使えるわけないだろ
948デフォルトの名無しさん:2007/02/02(金) 06:15:46
それならプロクシのほうでヘッダだけもらってきて(HTTPのGETじゃなくてHEAD)
Content-Type調べて該当のURLへアクセスしなおすようレスポンスを生成してそれを返せばいけるんじゃねーの?
949デフォルトの名無しさん:2007/02/02(金) 06:23:44
と思ったが、プロクシ経由かどうかはブラウザ側で設定するからやっぱ駄目か。
950デフォルトの名無しさん:2007/02/02(金) 17:15:33
昔は306 Use Proxy ってレスポンスコードがあって、このURLへのアクセスはこのプロクシ(あるいは直接)ね、
ということをプロクシやサーバが返せたんだけど、HTTP 1.0 になるときに無くなったんだよね。
951デフォルトの名無しさん:2007/02/03(土) 00:12:09
初歩的な質問だとは思うのですが、良いサンプルが見つからないので
質問させていただきます。

WebブラウザからフォームデータをPOSTで受け取り、制御をする簡単なプログラム
を書いています。Firefoxからフォームを送信した時、

(1)HTTPヘッダ、プロパティ類
(2)Content-Type
(3)Content-Length
(4)フォームデータ
の順で、それぞれを送信しているように見えます。

こういった場合、firefoxから送られてきたデータがどこで終わったのかを判断
するにはどうしたらよいのでしょうか?
今はrecvが無くなるまで読み溜めているのですが、最後のrecvの後に不要な
Timeout 待ちが発生してしまっています。

IE は (1)〜(4)を一気にまとめて送信してくるので何も考える必要は無かったのですが・・・
おそらく、どこでデータ完了とするかなどネットワークプログラムのセオリーがあると
思うのですが。


以上、よろしくお願いいたします。
952デフォルトの名無しさん:2007/02/03(土) 00:52:25
RFC読めよ
HTTPのやつだけで良いから
953デフォルトの名無しさん:2007/02/03(土) 02:41:42
>>951
え〜っと、ちょっと今はプログラムを組んでいないので検証していませんが、
recvの返値を加算していって、受信したデータ量とContent-Lengthの
送信データ量が同じになったらrecvしないようにするのが吉だと思います。
954デフォルトの名無しさん:2007/02/03(土) 06:02:39
>>950
HTTP/1.1になったときだよ。HTTP/0.9にはステータスコード自体なかった
955デフォルトの名無しさん:2007/02/03(土) 16:41:19
>952

助言に従いRFC2068邦訳版を読んでみました(関係ありそうなところだけですが)

>>要求の中でのメッセージ本体の存在は,要求のメッセージヘッダの中にContent-Length又
>>はTransfer-Encodingのヘッダフィールドを含むことによって通知される。

という文を読む取ることができましたが、先の例のとおり Content-Length 自体が3回目の
recvで得られますので、それまでは本体の存在がわかりません。

これは Method が POST であれば、メッセージ本体があると信じて recv しにいくと
言うことでよいのでしょうか?


956デフォルトの名無しさん:2007/02/03(土) 18:53:33
3回目のrecvとか、recvしにいくとか関係ないだろ。
バイトストリームで \r\n\r\n が来るまでがヘッダ。
957デフォルトの名無しさん:2007/02/03(土) 22:06:14
某プロクシ経由でときどきリダイレクトが失敗してたのだが、そいつは
どうやら1回のrecvでレスポンスヘッダをすべて受信できると決めつけていたらしい。
その後プロクシを自作してみてわかった。もちろん自作のやつは>>956のようにしてる。
ただし世の中には\n\nを送ってくるサーバもあるので(それもamazonとかの
超有名どころ)考慮せざるを得なかったが
958デフォルトの名無しさん:2007/02/03(土) 22:58:29
>956

ありがとうございます。
なんか色々迷走しちゃいましたが、けっきょくは\r\n\r\nまで読んで、
そこに Content-Length が含まれていれば、メッセージ本体を
取りにいくというようにしました。

いや、そんな真面目に実装する気は無かったんですが(ただの個人使用のユーティリティなんで)
有用なお話が聞けてよかったです。
959デフォルトの名無しさん:2007/02/04(日) 05:42:41
プロトコルがどうこう言う前のSocketの話だな
960デフォルトの名無しさん:2007/02/05(月) 12:18:36
>>957
> ただし世の中には\n\nを送ってくるサーバもあるので(それもamazonとかの
> 超有名どころ)考慮せざるを得なかったが
head ブロックの改行コードが全て LF ?

(CR なら1文字先読み LF で改行確定 || LF なら改行確定) のような処理になるんかな
961デフォルトの名無しさん:2007/02/05(月) 13:19:23
そういえば昔 yahoo が lf だけで改行というヘッダを送ってきていたことがあったな・・・
962デフォルトの名無しさん:2007/02/05(月) 13:36:25
>>960
Amazonとか楽天、Yahooくらいに有名なところで(何処だったか忘れた)
改行コードが全部LFと言うのを見たことがある。
その時は知識がなく、そんなものだと思っていた。
そのおかげで当時の自分のシステムが全部改行コードをLFだけに
してしまった。
963デフォルトの名無しさん:2007/02/05(月) 14:17:29
>>961,962
PGP/MIME で同じように CRLF/LF 問題で嵌ったことあるけど、
HTTP でそういうことがあるのか…
964デフォルトの名無しさん:2007/02/05(月) 14:23:52
昔http proxy書いてたとき、改行がCRだけのサーバーにも遭遇したよ。
だからCR/LF/CRLFの3種類全部対応するはめになった
965デフォルトの名無しさん:2007/02/05(月) 15:24:01
受け入れは緩く、出すものは厳しく
966デフォルトの名無しさん:2007/02/05(月) 18:19:41
>>965
税金の話かとオモッタ。
967デフォルトの名無しさん:2007/02/05(月) 19:17:50
つーか、書いてあるけどな、HTTPのRFCにも。
968デフォルトの名無しさん:2007/02/06(火) 01:49:35
て言うか、ネットワークの基本だろ >>965

それ以前に、会話の基本だったりするが...。
969デフォルトの名無しさん:2007/02/06(火) 01:57:25
女の子は出すのも受け入れるのもガード固いほうがいいよね
970デフォルトの名無しさん:2007/02/06(火) 09:52:20
>>967
改行はCRLFにする事って読んだ事はある。
CRやLFの奴もあるから注意と書かれているのでしょうか?
いや、マジ教えて。
971デフォルトの名無しさん:2007/02/06(火) 09:59:57
3.7.1 Canonicalization and Text Defaults
972デフォルトの名無しさん:2007/02/06(火) 20:54:43
VC2005でソケットを若干使っています
スレッドでaccept関数を呼んでいるのですが、
プログラム終了時にスレッドを終了させたいと思っています。
その場合、acceptを終了させるにはどうしたら良いのでしょうか?
973デフォルトの名無しさん:2007/02/06(火) 20:58:58
winsockなら、acceptしているリスニングソケットを閉じれば抜けられる
974デフォルトの名無しさん:2007/02/06(火) 21:04:58
>>973
なるほど、ありがとうございました。試してみます。
975580:2007/02/06(火) 22:02:22
>>970
HTTPでLFなんてないよ。エンティティボディ内は自由というだけ。
976デフォルトの名無しさん:2007/02/06(火) 22:17:44
19.3 Tolerant Applications
...
>The line terminator for message-header fields is the sequence CRLF.
>However, we recommend that applications, when parsing such headers,
>recognize a single LF as a line terminator and ignore the leading CR.
977デフォルトの名無しさん:2007/02/06(火) 22:38:26
>>971
それはメディアタイプ"text"のボディの話でヘッダには適用されない。むしろ
> a bare CR
> or LF MUST NOT be substituted for CRLF within any of the HTTP control
> structures (such as header fields and multipart boundaries).
とか書かれてるぞ。アマゾンアソシエイトが全滅しても弾かなくちゃいけないらしい
978デフォルトの名無しさん:2007/02/06(火) 22:39:50
いまどきはあまり寛容に作りすぎるとHTTP Response Splittingとか
HTTP Request Smugglingとかで足元をすくわれかねないし。
979デフォルトの名無しさん:2007/02/06(火) 22:57:36
>>977
パースじゃなく生成しちゃだめって意味なのかな?
980デフォルトの名無しさん:2007/02/06(火) 22:59:47
>>979
プロトコルとしては、ヘッダの改行は必ずCRLF。それ以外はダメ。
高可用アプリケーションは、それ以外が送られてきても受け付けるべき。
と書かれている。
981デフォルトの名無しさん:2007/02/07(水) 01:07:19
CR,CRLF,LFはそういう環境のPCがあるからありうる可能性もある。
HTTPに限らなければ、メッセージの途中で種類が切り替わることもあったし、
LFCRという腐った物を送りつけるものもある。
982デフォルトの名無しさん:2007/02/07(水) 01:13:26
ヘッダにPCの環境とかふつー関係ないけど
> HTTPに限らなければ、メッセージの途中で種類が切り替わることもあったし、
HTTPでもhtmlの途中で改行の種類が変わるとかふつーにあるぞ。
ユーザーがアップロードしたhtmlと埋め込まれた広告で改行の種類が違うとか。
983デフォルトの名無しさん:2007/02/07(水) 01:49:58
htmlの中の話なんてどうでもいいんだ。プロトコルの話をしてるんだ。
984デフォルトの名無しさん:2007/02/07(水) 02:07:16
>>971にあるようにエンティティボディもプロトコルの一部
985デフォルトの名無しさん:2007/02/07(水) 12:22:47
>>981
そういうのもあるんだ。

   CR LF x [2nd char]
 CR 2 1 1
 LF  1 2 1

改行個数がこうなるわけね。
986デフォルトの名無しさん:2007/02/07(水) 14:17:26
>>975
section 3 は entity body と関係ないよ。
987デフォルトの名無しさん:2007/02/07(水) 22:57:34
結局CR,LF,CRLFをパースできて、CRLFを生成すればOK?
988デフォルトの名無しさん:2007/02/08(木) 00:01:59
LFCRもな
989デフォルトの名無しさん:2007/02/08(木) 12:31:55
途中でコード切り替わりもありえるだと
 1改行→CRLF 固定
 1改行→CR (コード切り替わりに続いて) 1改行→LF
とかの区別つかないのか。 後者の改行1つロストされるのはしかたないよね…
990デフォルトの名無しさん:2007/02/08(木) 13:25:39
そろそろ次スレを
関連リンクは>>3-6のままでいいですか?
991デフォルトの名無しさん:2007/02/08(木) 13:34:15
C++でssh通信を行いたいのですが、そのようなライブラリはありませんか?
992デフォルトの名無しさん:2007/02/08(木) 21:48:47
>>990
etherealはテンプレから消したほうがいい。
993デフォルトの名無しさん:2007/02/08(木) 22:30:33
>>992
なんで?シャー区嫌いなんだけど
994デフォルトの名無しさん:2007/02/08(木) 23:25:21
両方書いておけばいい。
995デフォルトの名無しさん:2007/02/09(金) 00:16:48
出たよ、問題先送り野郎。

「Yes? or NO?」 「あ、あうぁぅ・・・ い・・・の・・・ ぉ、ぉ、オア!」

って感じだなオイ
996デフォルトの名無しさん:2007/02/09(金) 00:27:45
>>995
「あんど」という解決を思いつけないのか。
問題先送り野郎といって安堵しているんじゃねぇ。
997デフォルトの名無しさん:2007/02/09(金) 04:06:15
松竹梅
998デフォルトの名無しさん:2007/02/09(金) 05:55:30
EtherealってWiresharkって名前に変わってたのか。
Etherealのページしか見てなかったから知らなかった。
どおりで去年からずーっと更新がないわけだ。
リンクはWiresharkの旧版というのを明記するか、消したほうがいいでしょう。
999デフォルトの名無しさん:2007/02/09(金) 09:17:47
>>998
使ってるんだから消すな という声も多いよ
1000デフォルトの名無しさん:2007/02/09(金) 09:43:46
  ∩___∩
   | 丿     ヽ
   /  ー   ー |    レスを読んでも理解できませんので
   |    ( _●_)  ミ    ROMってます    
  彡、    ヽノ ,,/     
  /     ┌─┐´    
 |´  丶 ヽ{ .   }ヽ    
  r    ヽ、__)ニ(_丿    
 ヽ、___   ヽ ヽ     
  と____ノ_ノ

10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。