ネットワークプログラミング相談室 Port19at TECH
ネットワークプログラミング相談室 Port19 - 暇つぶし2ch70:デフォルトの名無しさん
07/03/07 12:03:29
>>69
調べていただいてありがとうございます。

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

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

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

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

72:デフォルトの名無しさん
07/03/07 17:16:40
winsockの勉強中に疑問に思ったことの質問です。

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

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

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

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


74:デフォルトの名無しさん
07/03/08 10:21:30
>>73
回答ありがとうございます。

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

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

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

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

76:デフォルトの名無しさん
07/03/09 22:26:23
なんでハッシュが出てくるのか分からん

77:デフォルトの名無しさん
07/03/09 22:57:35
Range:bytes=100-

78:デフォルトの名無しさん
07/03/10 00:05:40
REST 100

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

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

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

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

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

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

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

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

83:デフォルトの名無しさん
07/03/10 11:18:57
>79
まだdraftだけど。
URLリンク(www.ietf.org)

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

85:デフォルトの名無しさん
07/03/10 17:59:47
>>75
なにげに、この方法よいのかも?

86:デフォルトの名無しさん
07/03/10 18:03:11
負荷おおすぎねえ?

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

88:デフォルトの名無しさん
07/03/10 21:53:00
アホか
手順4見てみろ

89:デフォルトの名無しさん
07/03/10 23:56:01
DDoSされたら終わりだな

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

91:デフォルトの名無しさん
07/03/11 03:00:14
>>88
w

>>89-90
同意

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

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

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

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

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

>>76

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

後は自分で考えて。

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


97:デフォルトの名無しさん
07/03/12 01:05:38
まあそれも>>83だけど

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

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

struct message *p;

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

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

99:デフォルトの名無しさん
07/03/13 00:31:48
MTUよりでかくなってないか?

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

101:デフォルトの名無しさん
07/03/13 01:41:23
送信側のsendのところと受信側のrecvのところのコードを晒せ

102:98
07/03/13 02:16:30
sendとrecvのサイズを設定する引数が間違っていました。

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

119:113
07/03/17 02:47:41
なんとなく自己解決しました。

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

121:デフォルトの名無しさん
07/03/18 01:04:51
RFC 2616を読む

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

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

124:デフォルトの名無しさん
07/03/18 11:14:56
じゃあ、このスレ限定でおk

125:デフォルトの名無しさん
07/03/18 14:22:26
>121
まとめてください。

126:デフォルトの名無しさん
07/03/18 15:21:00
おらさっさとまとめろやクズ。

127:デフォルトの名無しさん
07/03/18 17:17:47
みなさん。スルーで。

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

129:デフォルトの名無しさん
07/03/18 21:00:24
わろたw

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

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

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

131:デフォルトの名無しさん
07/03/19 20:13:39
>>130
URLリンク(www.freebsd.org)
ここが参考になるよ

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

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

134:デフォルトの名無しさん
07/03/21 04:41:28
日本語でおk

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

136:デフォルトの名無しさん
07/03/21 16:02:47
>>133
長さがわからなくなるときは、無い
長さは必ず返却される

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

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

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

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

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

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

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

141:デフォルトの名無しさん
07/03/21 20:56:11
サンプルソースうpして聞けばいいよ

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

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

144:デフォルトの名無しさん
07/03/25 01:34:49
>>143
スレ違い
URLリンク(pc11.2ch.net)

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

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

147:デフォルトの名無しさん
07/03/28 09:58:48
俗に言うselect系

148:デフォルトの名無しさん
07/03/28 10:02:27
selectもブロックしてしまいますよね?


149:デフォルトの名無しさん
07/03/28 10:06:18
>>148
ブロックさせたいんじゃねーのかよ

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

151:デフォルトの名無しさん
07/03/28 10:52:30
selectはポーリングにも使えるが?

152:デフォルトの名無しさん
07/03/28 11:00:53
送信可能な時はブロックしないで戻るしね。

153:デフォルトの名無しさん
07/03/28 11:09:14
selectの改良版はpollって名前だしね。

154:デフォルトの名無しさん
07/03/28 11:13:41
ちょっと詳しく教えてくれないか?

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

156:デフォルトの名無しさん
07/03/28 12:27:59
>>155
なるほど

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

157:デフォルトの名無しさん
07/03/28 12:48:32
何、通りすがりのサラリーマンさ。 単身赴任のね

158:デフォルトの名無しさん
07/03/28 12:58:46
>>157
すみません。本当はよく意味がわかってません。

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

159:デフォルトの名無しさん
07/03/28 13:00:22
こんな感じですよね?
URLリンク(www.geekpage.jp)


160:デフォルトの名無しさん
07/03/28 21:28:56
スレッド1:selectで受信待ち
スレッド2:問答無用でsend

161:デフォルトの名無しさん
07/03/28 21:39:18
>>160
( ・∀・)イイ!!

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

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

164:デフォルトの名無しさん
07/03/29 04:43:26
>>146とは別人なんだけど。
たとえばWinsockはスレッドセーフであることは保証されていない
URLリンク(www.kt.rim.or.jp)

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

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

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

167:デフォルトの名無しさん
07/03/29 12:29:17
>>166
(゚Д゚)ハァ?

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

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

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

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

169:165
07/03/29 12:37:39
あ、165=168 ね

170:デフォルトの名無しさん
07/03/29 12:54:30
>>168
別の板でやれ

171:デフォルトの名無しさん
07/03/31 00:26:08
さて、そろそろパケットをティッシュに送信してから寝るかな

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

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

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

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

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

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

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

178:172
07/03/31 11:30:34
ポートを開放できてないのが原因でした。ありがとうございました!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

187:デフォルトの名無しさん
07/04/02 00:55:21
std::stringって\0含むデータでもまともに動いたっけ?

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

189:デフォルトの名無しさん
07/04/02 05:37:59
bufに\0が含まれてると破綻するわけですね

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

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

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

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

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

192:デフォルトの名無しさん
07/04/06 15:21:25
問題ないでしょう

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

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

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

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

197:デフォルトの名無しさん
07/04/07 14:25:39
ADSLモデムのWAN側グローバルIPだろ?

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

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

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

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

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

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

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



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

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


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

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

205:デフォルトの名無しさん
07/04/13 01:31:47
どんなアプリの?

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

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

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

208:デフォルトの名無しさん
07/04/13 08:53:53
用途は?

webアプリか?

209:デフォルトの名無しさん
07/04/13 20:40:30
mmoかな、あと暗号認証も

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

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

#include <winsock2.h>

int main()
{
WSADATA wsaData;

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

WSACleanup();

return 0;
}

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

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

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

212:デフォルトの名無しさん
07/04/13 22:19:47
>>211
ライブラリは?

213:コッチェビ
07/04/13 22:21:52
(´・ω・`)コッチェビ・・・ws2_32.lib・・・

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

215:デフォルトの名無しさん
07/04/13 22:31:14
自分で調べろ

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

217:デフォルトの名無しさん
07/04/13 22:55:05
ここって初心者スレだっけか

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

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

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

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

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

223:デフォルトの名無しさん
07/04/14 21:56:12
なんだ?誤爆ですか?

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

224:デフォルトの名無しさん
07/04/15 12:44:34
>>223
いや、大作先生のことだと思う。

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

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




227:デフォルトの名無しさん
07/04/16 20:44:54
selectそれ自体がEAGAINで戻ってくることはないはず

228:226
07/04/16 21:05:35
>>227
サンクス。やっぱり無駄なチェックなんですね。。。

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

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


229:デフォルトの名無しさん
07/04/16 21:31:18
全部やっとけば?

230:デフォルトの名無しさん
07/04/16 22:04:07
>>227
kuruyo

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

232:231
07/04/17 00:05:14
自分でfnordというのと、cherokeeというのを見つけました。

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

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


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

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

236:226
07/04/17 23:35:23
229のいう通りとりあえず全部やっておくのが安全ですね・・・。


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

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

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

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

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

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

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

239:デフォルトの名無しさん
07/04/18 05:56:14
>>236
来るはずがないんだったらチェックしたって害はないからな

240:デフォルトの名無しさん
07/04/19 07:26:52
APOP破られたの?

241:デフォルトの名無しさん
07/04/20 10:45:40
【IT】電子メールの暗号化技術「APOP」破られる…電通大の研究グループが発見、当局に連絡[04/19]
スレリンク(bizplus板)

Vulnerability Summary CVE-2007-1558
URLリンク(nvd.nist.gov)

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

242:デフォルトの名無しさん
07/04/20 13:45:15
MD5 の脆弱性が表面化してきた ってことか。

243:デフォルトの名無しさん
07/04/20 14:47:10
前からだろw

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

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

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

247:デフォルトの名無しさん
07/04/20 21:07:20
なんか良いハッシュ関数ある?

248:デフォルトの名無しさん
07/04/20 21:59:35
>>247
SHA-2

249:デフォルトの名無しさん
07/04/20 22:21:45
SHA-256

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

251:デフォルトの名無しさん
07/04/20 22:49:32
1TBくらいメモリがあるならそれくらい気にしなくていいんじゃね

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

253:デフォルトの名無しさん
07/04/21 00:37:03
このスレはハッカが盗り放題です><

254:デフォルトの名無しさん
07/04/21 08:34:43
URLリンク(www.atmarkit.co.jp)

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

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

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

255:デフォルトの名無しさん
07/04/21 09:37:09
もお2006年8月は過ぎたわけだがどうだったの?

256:デフォルトの名無しさん
07/04/21 09:41:07
自分で探したらこうだった

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

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

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

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

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

261:デフォルトの名無しさん
07/04/21 13:45:06
使用可能なメモリはどれくらいあるんだよ

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

263:デフォルトの名無しさん
07/04/21 14:01:27
スレ違い

264:一日駅長
07/04/21 14:02:36
どこにいけば、、、、

265:デフォルトの名無しさん
07/04/21 14:13:04
webプログラミング板ってのがあったと思う

266:デフォルトの名無しさん
07/04/21 14:24:38
URLリンク(find.2ch.net)

267:デフォルトの名無しさん
07/04/21 15:44:07
>こんにちは一日駅長と申します。

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

268:デフォルトの名無しさん
07/04/22 09:27:00
>>261
4GBっす

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

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

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

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

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

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

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

273:デフォルトの名無しさん
07/04/22 18:28:29
オレたちが暗号の専門家になればいい

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

275:デフォルトの名無しさん
07/04/22 20:25:03
>>274
夢が無いね

276:デフォルトの名無しさん
07/04/22 21:53:53
専門家が作ったぐらいでは、信頼できないわけだが。

277:デフォルトの名無しさん
07/04/22 21:57:26
専門家もピンキリ。
自称専門家なんてのも居るし。

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

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

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

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

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

279:278
07/04/23 00:34:05
訂正すみませんです。
よろしくお願いします。

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

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

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

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

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

281:278
07/04/23 01:59:09
>>280
レスありがとうございます。そういう理論ですか。なるほどです。

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

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

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

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

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

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

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

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

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

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

284:デフォルトの名無しさん
07/04/23 16:09:22
プロセス間通信もここでいいんでしょうか?

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

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

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

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

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

286:デフォルトの名無しさん
07/04/23 18:01:26
>>285
はい、使えません。

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

288:285
07/04/23 18:35:48
>>286
SHOCKだ!LINUX使いの人じゃないとCGI作れないんですね。
返答ありがとうございました。

289:284
07/04/23 18:37:13
継承 パイプ CreateProcessでググってみました
URLリンク(www.fides.dti.ne.jp)
このページを参考に作ってみたいと思います。
子プロセス側が無いですが。

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



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

292:デフォルトの名無しさん
07/04/24 11:32:40
ファイルを転送するプログラムを作っているんですが、

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

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

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

294:デフォルトの名無しさん
07/04/24 17:44:16
wineつかえばいいのに

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

296:デフォルトの名無しさん
07/04/24 21:25:18
>>291-295
アンカーぐらい付けてくれ

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch