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


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

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



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にならないとできないとかそういうのもあるよね。






[ 続きを読む ] / [ 携帯版 ]

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

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