1 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 03:43:08 ] 主にソケットに関しての質疑応答スレッドです。 Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10 辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port24 pc12.2ch.net/test/read.cgi/tech/1246895188/ 関連スレ ネットワークプログラミング雑談 pc12.2ch.net/test/read.cgi/tech/1235800707/ Java ネットワークプログラミング 【教えて!】 pc12.2ch.net/test/read.cgi/tech/1086238859/
116 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 04:37:56 ] システムコールに惑わされずにまずRFC読め
117 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 08:47:12 ] 同期用キューでも作って渡せばいい 詳しくはこっちだな マルチスレッドプログラミング pc12.2ch.net/test/read.cgi/tech/1253521167/
118 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:01:16 ] >>114 無理なOSは無理なんで諦めてください。 あらかじめ双方のポート番号が分かっているなら 双方からconnectって手があるけど。
119 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:02:35 ] >>113 お前がそう言う実装に拘る理由こそ、どういうこと?
120 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:29:30 ] >>114 キミのやりたい事は完璧にはできない。 バックログを0にして、acceptしたらlistening socketをcloseする。 これでもacceptしてからcloseするまでの間は接続を受け付けてしまう。 >>118 可能なOSを例示してくれ。今まで聞いたことが無いから知りたい。
121 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:41:41 ] 昔のvxWorks
122 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:01:50 ] >>118 双方からconnectってなんだよ。
123 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:46:35 ] ポート食いつぶし攻撃か?
124 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 11:55:49 ] マイコンのプロトコルスタックを作ってる最中なのだがちょっと質問。 データ送信したとき全くの正常ならば 相手から返ってくるAcknoledgeNumber=自分が送信したSequenceNumber+TCPデータ長 となる筈なんだろうけど、この相手のACKパケットに入ってるAcknoledgeNumberが和より少ないときってこっちは何をすれば良いんだ? もらったAcknoledgeNumberの分までは正常と見なして続きから送り直せばいいのかね?
125 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 15:25:59 ] >>124 そんなもんは気にせずに window size が 0 になるまで無理やり送りつけるんだ
126 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 17:43:56 ] マイコンに限らず再送バッファの大きさに支配されると思う 再送バッファサイズ<=窓までは送れる
127 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 22:18:00 ] >>126 最後は再送バッファサイズの問題とかスロースタートの問題には 行き当たるんだろうけど、プロトコル的には送ったもん勝だわな
128 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 02:03:33 ] >>122 host1: socket→bind→connect host2: scoket→bind→connect TCPの接続開始ハンドシェイクはこういうやり方でも可能。
129 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:03:48 ] 意味が分からん。 ソースで示して>128
130 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:54:24 ] 横着しないで RFC 位読め
131 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 14:48:44 ] UDPって「取りこぼし」だけじゃなくて「送りそこね」もあるんだよな
132 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:41:10 ] 途中で捨てられたも多い。取りこぼしだと届いてるのに拾えなかった感が有るが、そもそも届いてない。
133 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:50:24 ] Windowsでネットワークアドレスの違うIPアドレスへ強制的に UDPのパケットを送る方法って無いでしょうか? SetIpNetEntry()で静的arpに登録して送っても駄目みたいでした。 (たぶん送信時に跳ねられている)
134 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:07:35 ] arpコマンドで登録すればいいんじゃ?
135 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:10:05 ] >>134 SetIpNetEntry()を呼ぶのと、arpコマンド実行は同じ事だと思うけど、 試しにpingとwireshark使ってやってみました。 Destination host unreachable. と出て、相手には何も届いてないですね。 しかも、Windows7でやると特権がいるとかでエラーになるし、 諦めてブロードキャストで送ることにします。
136 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 08:54:56 ] ftpでファイルを送受信することになりました こっちも相手側もクライアントとサーバになります VC(MFC)でプログラムを作ろうと思いますが どうやって作っていいかわかりません クライアント側はサーバーに接続して ファイルを転送する?イメージがあります。 検索するとCFtpConnectionをつかって作るのがわかりました でもサーバー側ってどうやって作るんでしょうか? どこかにサンプルとかヒントはありませんか?
137 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:38:23 ] ファイルが転送できればいいのかFTPプロトコルを実装したいのか
138 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:18:54 ] 多分ファイル転送ができればいいです プログラムでファイルをリモートのPCに送りたいのと 相手側がいつでもファイルをこちら側に送れるように ftpサーバー機能があればいいです
139 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:21:10 ] >>133 違うネットアドレスへ送ろうとする場合、arpはgateway に対してだよ?routeはどうなってるの?
140 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:39:50 ] >>138 では www.geekpage.jp/programming/winsock/ をちょこっと見ればできますね
141 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:07:33 ] >>140 ありがとうございます 見てみましたがftpについては見当たりませんでした ftpサーバとしてftpクライアントの要望にこたえる例とかしりませんか?
142 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:10:23 ] サーバなんて既存のやつ使えばいいじゃない サーバもクライアントも作るなら特定のプロトコルにこだわる必要もないだろう
143 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:11:38 ] だめだこりゃ
144 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:13:14 ] あとMFCならこういうのでどうか ttp://www.codeproject.com/KB/IP/CFtpServer.aspx
145 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:18:28 ] >>142 一応売り物にするのでフリーのは問題ある?のではないかと思ってます システムに組み込んで売っても問題ないフリーソフトとかありませんか? >>144 ありがとうございます 参考にサンプル落とし見ようとしたら登録が必要なようですorz 英語はわからなくて…すみません
146 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:25:49 ] 多少の英語も出来ずにプログラマやってるのかよ
147 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:28:01 ] もうRFC959読んで自前で実装しちゃいなよ 日本語訳もあったはずだ
148 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:48:47 ] >>145 BSDライセンスのFTPサーバ。FreeBSDのとか。 まあ機能限定で実装すれば自前でも簡単だけど。
149 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 11:54:27 ] >>148 ありがとうございます ちょっと調べてみます 自分でいろいろ調べてたらXPにもftpサーバがあるみたいなのですが XPのを使うのとフリーのftpサーバ使うのは全然違う意味ですか? XP標準にあるならそっちのが楽なのかなぁ?と思ったりしてます
150 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:03:14 ] >>149 IISのこと?
151 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:04:52 ] IISはXPのProにはあるけどHomeには無いから気をつけて
152 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:09:04 ] >>150 そうです XP Proを使う予定でs
153 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:17:07 ] 初心者極まりない質問で申し訳ないですが、お願いします。 VB6.0のwinsockオブジェクトを用いて、出来合いのサーバ(ORCA_CLAIM)に データを送信するプログラムを作成してます。 ポートとアドレスを指定して送りたいデータを送信し、 ただクローズするだけなのですが、送信後にサーバのステータスが CLOSE_WAITになったまま消えてくれません。 (# netstat -nap localhost などで確認) そうなると再送信してもポートが現在使用されていますと出て、 エラーを返すのでとても困っています。 サーバソフトの製作元にもたずねて見ましたが、そんな現象はありえないと いうお話でしたので、どうもこちら側に決定的な原因があるようです。 状況説明がうまくないようでしたら申し訳ありません。 何か、ありがちなミスなどありましたらご指摘よろしくお願いします。
154 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:41:20 ] winsock1.closeはしてるの?
155 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:51:47 ] IISに投げてみたけどCLOSE_WAITにはならないよ Option Explicit Private Sub Command1_Click() Winsock1.LocalPort = 0 Winsock1.RemoteHost = "localhost" Winsock1.RemotePort = 80 Winsock1.Connect End Sub Private Sub Winsock1_Close() Winsock1.Close End Sub Private Sub Winsock1_Connect() Winsock1.SendData "GET / HTTP/1.0" & vbCrLf & vbCrLf End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim s As String Winsock1.GetData s MsgBox s End Sub
156 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:47:40 ] 同じ質問を過去に見たんだが、解決方法忘れてしまった VBスレの人なら知ってる人いるんじゃない?
157 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:29:30 ] >>153 です。皆様レスをつけていただいて有難うございます。 >>154 うーん。Winsock1.closeはやっているのですが、反応がないようです。 >>155 すいませんサンプルソースまで書いてもらって、助かります。 私のソースもだいたいそのような感じなのですが、見直してみることにします。 >>156 有力情報有難うございます。 そちらの方にも尋ねてみることにします。
158 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:08:45 ] >>157 どちらが先にクローズする仕様なの?
159 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:25:49 ] レス有難うございます。 >>158 www.orca.med.or.jp/receipt/tec/dev/soft/claim.rhtml の(2)によると、送信した側がsocket closeと書いてあるようですので こちら側(送信側)がCloseしなければいけないのかなと考えています。
160 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:38:25 ] closeする前にサーバのACK/NAK応答は受信したのかと
161 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:41:31 ] 言っとくがTCPじゃなくてアプリレイヤーの話だぞ? >>159 のシーケンスをちゃんと嫁
162 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:45:18 ] 見落としてるだけだろ アホとしか
163 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:01:16 ] >>159 これだとCloseイベントでcloseしたほうがいいかもしれない。 >>155 のように
164 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:32:37 ] closeしなくてもほっときゃ切れるだろ
165 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 01:37:03 ] socketは全二重 送る側だけまずshutdown 読む側でEOFまで全て読み終わるのを確認してからclose これはちゃんとやって
166 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:17:58 ] 皆様何度も返信してくださって 厳しいながらもありがたい限りです >>160 そちらの受信は確認しております。 >>161 アプリレイヤーとTCPの違いがまだよく分かっていないのですが、 そこの部分は調べてみます >>163 ちょっとその手法でやってみます >>165 shutdownはwinsockメソッドにはなく、 www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/winsock/ で見ました。全文読んでいないのでなんともいえませんが、 まだ使い方が不明なので調査してみます。
167 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:40:54 ] >>166 > shutdownはwinsockメソッドにはなく、 何言ってるかわからない。 書く側だけまずshutdownしろってのは、 winsockのFAQの初心者向け項目に書いてあること。
168 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:47:48 ] 良くこれで仕事が出来るな・・・
169 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 00:04:43 ] とりあえずWiresharkで 双方の FIN → FIN,ACK → ACK のどこまで出てるか見てみたら?
170 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 05:43:11 ] サーバの開発元に質問するほうもアレだが、ありえないと回答するのもひどいな。 お互い良くそれでプログラマって言えるよな。
171 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 18:13:12 ] IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP IdException このへんのコンポーネントってIndyですか?
172 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 18:18:28 ] Indyですね
173 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 18:27:53 ] >>172 ありがとう IdってIndyって意味だったのか コンポーネントないからビルドできねぇ
174 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:35:50 ] >>153 > CLOSE_WAITになったまま消えてくれません。 サーバ側のCLOSE_WAITは全く関係ない。お前の作ったクライアントがダメなだけ。 > 何か、ありがちなミスなどありましたらご指摘よろしくお願いします。 自分のバグを他人の所為だと思いたがる態度が、初心者にありがちな重大なミス。 bindしてるだろ。
175 名前:114 mailto:sage [2009/11/12(木) 01:33:52 ] >>120 やっぱ無理だよな、ありがとう >>118 相手がわかってればいいんだけどねぇ
176 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 07:44:31 ] >>128 それじゃ3-wayハンドシェイクが成立しないだろ。可能だと主張するなら動作するサンプルコードを。
177 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:50:27 ] >>176 RFC に双方 connect() 時のシーケンス載ってるが?
178 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:01:03 ] >>176 RFC793 の figure 8 だけど、rfc1122 でその図の間違 いが訂正されてる。 4.2.2.10 Simultaneous Open Attempts: RFC-793 Section 3.4, page 32 There is an error in Figure 8: the packet on line 7 should be identical to the packet on line 5. A TCP MUST support simultaneous open attempts. DISCUSSION: It sometimes surprises implementors that if two applications attempt to simultaneously connect to each other, only one connection is generated instead of two. This was an intentional design decision; don't try to "fix" it.
179 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:25:14 ] > This was an intentional design decision; don't try to "fix" it. うわっ、強引。決めたんだからなおすな。
180 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 09:37:37 ] >>179 違う違う。「実装者は双方同時 open の結果として一つ しかコネクションが出来ないことに驚くかもしれないが、 これはそうなるように『設計』されているので直そうと するな」ということ。
181 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:28:32 ] コネクションが2つでなく1つなのは「そのように決めたんだからなおすな」って事でしょ。 なんで、そのように決めたんだろう。 という事は置いておいて、これは同時にconnectが発生した(例外的な)場合に関しての 規定であって、>>118 が言ってるような狙ってできるってもんじゃないよね。
182 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:29:35 ] >>174 >自分のバグを他人の所為だと思いたがる態度が、初心者にありがちな重大なミス 逆に自分のせいだと思って散々調べたら自分のせいじゃ無かったってのもよくある まずは切り分けが大事と思い知らされた
183 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:44:42 ] >>181 > 狙ってできるってもんじゃない 普通は RST が返るからってこと?
184 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 11:05:05 ] >>181 >なんで、そのように決めたんだろう。 同じIPアドレス、ポート番号のペアを持つコネクション は同時に複数存在できませんから。
185 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 11:18:53 ] 一方のコネクションが確立した後では、1本のコネクションにはならないでしょ。
186 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 11:22:01 ] >>184 なるほど、接続するという選択肢を取るならそのように決めるしかないわけか。 接続しないという選択肢もあったわけだけど、そっちは採用しなかったと。
187 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 22:30:35 ] 双方がwell knonw portになってから接続を開始しているわけだから、 四つ組みが決定している。一つの接続になるのが、設計上当然の帰結。 >>183 いや再送されたのと区別がつかない。 (IPタイムスタンプオプションとかない限り) それに普通のOSではREUSEADDRしたら、 前のは無効になる。
188 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 10:31:37 ] よくわからないレベルで仕事って確実に地雷だなw
189 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:26:24 ] 結局サンプルコードはまだ?まさか>>128 じゃないよね
190 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:06:33 ] RFCだけ読んで「キリッ」って奴がいかに多いか分かるな 実際のコーディングはまったくできないと。
191 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:24:58 ] 自分が仕事出来ないのを棚に上げて人のせいにする奴もいるしな
192 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 14:55:17 ] rfcも実際のコード実装例を描いてくれればいいのだがな。 そういうサイト作ると需要有るのか?
193 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 15:25:53 ] >>189 > まさか>>128 じゃないよね >>128 で何か不足してる? TCP/IP の同時 open は、よくある TCP/IP の状態遷移 図で通常サーバ側とクライアント側で違う経路を通ると ころを両方ともクライアント側の遷移を通るんだから >>128 であってる。 スティーブンス本のどれかで実際のプログラムと実行例 が載ってたよ。但し、双方の SYN が交差する位には充 分に遅い経路を使う必要があったと思う。
194 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:24:19 ] >>193 listenしなくて良いのか?
195 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:35:49 ] >>194 > listenしなくて良いのか? listen したら駄目なんだけど?
196 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:48:04 ] ほい、スティーブンス本での同時 open の話と実行例。 books.google.com/books?id=-btNds68w84C&pg=PA251 上で使われてる sock プログラムのソースコード。 www.icir.org/christian/sock.html listen() を呼び出している servopen() は -s オプショ ンが無いと実行されないけど上の例では -s ついてない でしょ。
197 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:43:24 ] cygwinでsockコマンドコンパイルしてlocalhostでやってみたけど、 確かに同時に実行するとconnect成功するね ・・・同時に実行しなければ繋がらないってのは、ちょっと面白いな
198 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:23:34 ] 遂にgoogle booksを参照する時代になったか。
199 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:31:32 ] 結局、元質問(>>114 )を実現する事はsocketプログラミングの範囲ではできないという結論だね。
200 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:08:03 ] できるだろ。釣りかよw
201 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:23:33 ] listenの実装を自分で書き換えればいいだろ
202 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:05:59 ] >>200 動作するサンプルを。
203 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:21:09 ] >>201 socket.h内のSOMAXCONNを1にしたらひどぅい目に遭いましたw 実装の書き換えまで手を出すのは正直無理ぽですね。
204 名前:デフォルトの名無しさん [2009/11/16(月) 04:45:47 ] ttp://x68000.q-e-d.net/~68user/net/c-http-1.html このページを参考に1回connectに成功したらaspxファイルのヘッダとボディのデータを 分けて要求するプログラムを作ったのですがボディのデータを要求するとコネクションが切断されているのかread関数が0を返します。 close関数を使っていなくても1回データを要求したら切断されてしまうものなのでしょうか。ソースは次のレスに記載します。
205 名前:デフォルトの名無しさん [2009/11/16(月) 04:48:30 ] char path[100],buf[1000],host[]="www.nurupo.jp"; struct hostent *servhost;struct sockaddr_in server;struct servent *service;int s,read_size; servhost = gethostbyname(host);bzero(&server,sizeof(server));server.sin_family = AF_INET; bcopy(servhost->h_addr,&server.sin_addr,servhost->h_length);server.sin_port = htons(80); s = socket(AF_INET,SOCK_STREAM,0);connect(s,(struct sockaddr *)&server,sizeof(server)) sprintf(path,"HEAD /gga.aspx HTTP/1.0\r\n\r\n"); write(s,path,sizeof(path)); while(1){ read_size = re ad(s,buf,sizeof(buf)); if(read_size > 0){write(1,buf,sizeof(buf));} else{ break;}} sprintf(path,"POST /gga.aspx HTTP/1.0\r\nContent-Length: 10\r\n\r\nnurupo=gga\r\n\r\n"); write(s,path,sizeof(path)); while(1){ read_size = read(s,buf,sizeof(buf)); if(read_size > 0){write(1,buf,sizeof(buf));} else{break;}} close(s);
206 名前:デフォルトの名無しさん [2009/11/16(月) 05:00:41 ] >>204 >>205 です。 if(read_size > 0){write(1,buf,size_of(buf))} の行のsize_of(buf)はread_sizeでした。 すいません…
207 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:42:52 ] HTTP/1.0 RFC1945 1.1は2616
208 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 09:05:10 ] >>204-205 HTTP/1.0はそのように決められている。 HTTP/1.1ではPersistent Connectionsというのがあるが、使い方はかなり難しい。
209 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 09:17:41 ] 別に難しくは無いさ。 リクエストとレスポンスを交互に繰り返すだけであれば。 終端だって、どうやって判断すればよいかちゃんとRFCに書いてある。 chunkの読み出しも、そのまま実装するだけ。
210 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:04:36 ] 嘘つきサーバが多いから難しい。
211 名前:デフォルトの名無しさん [2009/11/17(火) 02:24:14 ] テスト
212 名前:デフォルトの名無しさん [2009/11/17(火) 15:47:40 ] >>204 です。 お返事ありがとうございます。 RFC2616やグーグルしたところ、HTTP/1.1はHost: URLを記述しなければいけないとのことだったので 記述し、2回目のデータ要求ではConnection: Closeを記述したところ2回、データを要求することが出来ました。 2回目はBad Requestになってしまいますが。。 RFCを見て、少しやる気をなくしてしまいましたが 出来たらネットワークの勉強に励み、この問題をいつかは解決したいと思います。 ありがとうございました。
213 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 00:14:01 ] UDPのブロードキャストについて質問です pythonとCで書いてます。(例はpythonで書きます) ブロードキャストでデータを送りたいのですが、 setsockoptでSO_BROADCASTを有効にし、 # pythonの例 sock.sendto( data, ( "255.255.255.255", 1234 ) ) としても、受信側で受信できません。 # 受信側のIPアドレスは192.168.11.4 sock.sendto( data, ( "192.168.11.4", 1234 ) ) として、ユニキャストだと受信できることを確認しています。 環境はlinuxです。 ブロードキャストアドレスとして255.255.255.255を使うのは間違ってますか?
214 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 03:25:47 ] それは自分の所属するサブネットの中なの?外なの?
215 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 06:15:52 ] >ブロードキャストアドレスとして255.255.255.255を使うのは間違ってますか? はい
216 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 07:06:20 ] rootにならないとできないとかそういうのもあるよね。