ネットワークプログラミング相談室 Port16
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2005/12/31(土) 14:07:24Programming 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辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port15
http://pc8.2ch.net/test/read.cgi/tech/1128088448/
0877デフォルトの名無しさん
2006/05/12(金) 18:37:32HTTP/1.0以前は同じページにcssやら画像100枚やら張られるなんて
想像してなかったんだろうな。
0878デフォルトの名無しさん
2006/05/12(金) 20:20:32RTSPもHTTPに似てるから同じでいいんじゃないか?w
0879デフォルトの名無しさん
2006/05/13(土) 00:28:39レス、ありがとうございます。
結局のとこ、どうなんでしょうね。
接続を維持していたほうが負荷が小さいのは間違いないですが。
切っても良いっちゃ良いんでしょうが。
0880デフォルトの名無しさん
2006/05/13(土) 01:43:17参考情報
HTTPのKeep-Aliveの説明
ttp://www.studyinghttp.net/connections
0881デフォルトの名無しさん
2006/05/13(土) 16:59:59世の中には接続を切るとそのままセッションも捨てられるしょぼいサーバも存在するかも。
切らないほうがトラブルに見舞われることは少ないと思われ。
0882873
2006/05/13(土) 21:37:49ありがとうございます。
ここまで、書いててまったく気づいてなかったのですが、
実はサーバー側の話です。
サーバー側で切ってしまうと、クライアントの方で問題にならないかな〜と
思いました。
まあ、いろんなクライアント試してみろって話ではあるんですが。
0883デフォルトの名無しさん
2006/05/13(土) 22:06:130884デフォルトの名無しさん
2006/05/14(日) 02:13:35バッテリ駆動機器は別だろう、勿論。
0885デフォルトの名無しさん
2006/05/14(日) 09:05:04問題にならないようにHTTPにはCookieがある。
HTTPはもはや汎用のプロトコルでセッション管理も必要だから。
あなたがどういう応用を想定しているか分からないので、
あなたのケースではどうだかは分からない。
0886デフォルトの名無しさん
2006/05/15(月) 02:12:01送り側のシステムでMTUサイズに自動で分割され、受け側のシステムで自動合成される。
つまりパケット喪失や輻輳等はあるが、自動合成後のパケットデータは信用できる。
と認識しているのですが、正しいでしょうか?
winsock2.0
vs2003
winXP win2000
0887デフォルトの名無しさん
2006/05/15(月) 05:16:44沖縄から北海道へ行くのに地面を掘ってブラジルへ行こうとするほどズレている
0888デフォルトの名無しさん
2006/05/15(月) 11:05:21winsock2なんですが、一度listenしたものをプロセスを維持したまま解除
(listenしない)にしたいです。
listenに使用したfd(SOCKET)を使ってshutdownやclosesocketしても
まだLISTEN状態です。
「setsockoptでSO_REUSEADDRを使えばよい(次回からも同ソケットに
bind&listenできる)」って記述は多くあるんですがそのものを解除したい場合
はどうしたらよいでしょうか。
0889886
2006/05/15(月) 11:17:480890デフォルトの名無しさん
2006/05/15(月) 11:28:540891888
2006/05/15(月) 12:09:43早速ありがとうございました。
shutdown -> closesocket だとダメでしたが、closesocket だけにすればLISTENを
解除することができました。
「shutdownは必須」とばかり思ってましたがリスナーソケットですし明示的に
shutdown(s, SD_RECEIVE)する必要は無かったんですね。勉強になりました。
0892デフォルトの名無しさん
2006/05/15(月) 20:13:320893デフォルトの名無しさん
2006/05/16(火) 08:41:36心のポートで聞いてくれないんです!
0894デフォルトの名無しさん
2006/05/16(火) 13:01:25プログラム側でaccept()してないだけでしょ?
0895デフォルトの名無しさん
2006/05/16(火) 19:56:32クライアントから1秒ごとに送られてくる、文字列を受信して
クライアントへその都度文字列を送信する
というサーバープログラムを作りたいのですが、
C++もソケットプログラミングも初心者の自分が勉強しやすい
おすすめの参考書、サイトありませんか?
0896デフォルトの名無しさん
2006/05/16(火) 20:36:540897デフォルトの名無しさん
2006/05/19(金) 23:57:49IPヘッダのポート番号をいじりたいのですが。
よく下のような表をみるのですがあってますか?
RAW Socketでいじれる範囲
----------------------------------------------------
Win95/98/Me Win2000/XP(SP1)/XP(SP2)
Ether fame NG NG
IP header NG OK
0898デフォルトの名無しさん
2006/05/20(土) 00:13:07サーバ側にあるDLLをネットワークを介してクライアント側で
使用することは出来ますでしょうか?
具体的には、CGI等でサーバ側のDLL機能を呼び出しクライアントの
PCを操作するようなことを想定しています。
COMとかに関係してくるんですかね?
よろしくお願いします
0899デフォルトの名無しさん
2006/05/20(土) 03:40:11CGI ならネットワーク関係ないです。
手抜きしてないでちゃんとサーバの方の資料を読んで。
0900デフォルトの名無しさん
2006/05/20(土) 09:17:53IPヘッダにport番号はありません。
0901デフォルトの名無しさん
2006/05/20(土) 10:07:52プロトコルIDだろ。そのくらい推測してやれよ。
↓ここでも読んででなおしてこい。
http://www.kachijiten.com/realintention/realbbs032/
0902デフォルトの名無しさん
2006/05/20(土) 10:23:340903デフォルトの名無しさん
2006/05/20(土) 10:29:23ここ読む限りどっちなのかわからんな
0904デフォルトの名無しさん
2006/05/20(土) 10:41:14プロトコルID ってなんだ?
プロトコル番号のことかな。
ていうか、プロトコル番号知ってる奴があんな質問しないと思う。
単に、IP ヘッダと TCP/UDP ヘッダの区別がついてないだけだろ。
0905900
2006/05/20(土) 10:54:37RAW Socketでいじれる範囲
----------------------------------------------------
Win95/98/Me Win2000/XP(SP1)/XP(SP2)
Ether fame NG NG
IP header NG OK
TCP/UDP header OK OK
0906デフォルトの名無しさん
2006/05/20(土) 11:11:440907デフォルトの名無しさん
2006/05/20(土) 17:08:250908デフォルトの名無しさん
2006/05/20(土) 18:03:590909デフォルトの名無しさん
2006/05/20(土) 18:07:410911デフォルトの名無しさん
2006/05/20(土) 22:40:10のせいで良スレが荒れるのが許せない。。。
0912デフォルトの名無しさん
2006/05/21(日) 01:00:260913デフォルトの名無しさん
2006/05/21(日) 01:01:21ここまであぼーん推奨
0914デフォルトの名無しさん
2006/05/21(日) 03:43:55[TcpListener].AcceptTcpClientにて得たTcpClientから接続要求してきたクライアントのIPアドレスを導き出したいのですが、
どうすれば良いのでしょうか?
--------------------------------------------
VS2003
XP 2000
0915デフォルトの名無しさん
2006/05/21(日) 04:23:44getpeername()
0916914
2006/05/21(日) 10:32:09s= [TcpListener].AcceptSocket()
s.RemoteEndPoint.ToString()
で行けました。
0917デフォルトの名無しさん
2006/05/24(水) 14:57:32ソケットって接続先がかわるたびに作成しなくちゃいけないんですか?
一つソケットを作っておいて、それを、アドレスの設定だけ変えて使いまわしては駄目なんですかね?
0918デフォルトの名無しさん
2006/05/24(水) 15:19:22TCPではできない。
UDPはそもそも「接続」という概念がない。
その他について俺は知らない。
0919デフォルトの名無しさん
2006/05/24(水) 15:23:42使い回せないのは接続であって、ソケットではない。
ただしhalf closedにならないように注意。
0920デフォルトの名無しさん
2006/05/24(水) 15:42:34あ、そうか、connect() でやればいいんじゃん。あー!
0921917
2006/05/24(水) 16:11:50出来るけど、一般的な方法ではないという事ですかね?
例えば、uriを入力したら結果を表示してくれる簡易ブラウザを作るとして、ソケットの作成は一回だけでいいんでしょうか?
それとも、uriを受け取るたびにsocket()とconnect()をすべきなんでしょうか?
0922デフォルトの名無しさん
2006/05/24(水) 16:24:02それが問題になりそうになれば、(まあそんなことはないと思うけれど)
再利用するようにすればいいんじゃない?
ちょっとした落とし穴があるから、最初から再利用は進めない。
http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#time_wait
0923デフォルトの名無しさん
2006/05/24(水) 16:27:41例えばHTTP/1.1 ならば同一ホストに対しては繋ぎっぱなしにできることもあります。
再接続が必要な場合には既存のソケットは close して socket で新しくソケットの作成
からはじめるのが普通です。
connect / shutdown と違って、ソケットの生成と破棄は単なるカーネル内のメモリ操作に
過ぎませんので、あえて避ける理由はあまり無いと思われます。
0926デフォルトの名無しさん
2006/05/26(金) 20:24:43環境はUnixです。Windowsならicmp.dllというのがあるらしいのですが…。
0927デフォルトの名無しさん
2006/05/26(金) 20:55:310928デフォルトの名無しさん
2006/05/26(金) 21:21:44#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int
socket(AF_INET, SOCK_RAW, proto);
manするとこう書いてある。
ってかmanしろボケ。
0929デフォルトの名無しさん
2006/05/27(土) 00:02:170930デフォルトの名無しさん
2006/05/27(土) 19:21:25クライアントからサーバへsendmsgを使用し、UDP送信を行うとソケットに
自動的に空いてるポートが割り当てられますが、そのポートが割りついた
ソケットをそのまま使用して、recvmsgしても問題ないのでしょうか?
実際動かすと問題なく動作はするのですが、たまたま割りついたままに
なっているだけで、時間が経過すると外れたりするのでしょうか?
recmsgを使用するのであればbindすべきですか?
ご教授のほど宜しくお願いします
0931デフォルトの名無しさん
2006/05/27(土) 20:13:22c言語/winsockでネットワークプログラミングするとして、
送受信の時に
ttp://x68000.q-e-d.net/~68user/net/c-http-1.html
↑に書いてるようにファイル用の関数を使うべきなんですか?
send()やrecv()などの専用の関数がありますが、それは使わなくてもいいんでしょうか?
0932デフォルトの名無しさん
2006/05/27(土) 20:31:580933デフォルトの名無しさん
2006/05/27(土) 20:36:430934デフォルトの名無しさん
2006/05/27(土) 20:37:03そこに書いてあるような方法が一般的なんですか?
0935931
2006/05/27(土) 20:45:000936デフォルトの名無しさん
2006/05/27(土) 20:46:51気になるなら send/recv の方を使っておいた方がよいでしょう。
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/send.2.html
send() は、ソケットが 接続された (connected) 状態にある場合にのみ使用できる
(つまり、どの相手に送信するかは既知である)。
send() と write() の違いは、引き数に flags があるかどうかだけである。
引き数 flags が 0 の場合、 send() は write() と等価である。
また、 send(s,buf,len) は sendto(s,buf,len,NULL,0) と等価である。
あなたの見ているサイトのこちらの場所では
http://x68000.q-e-d.net/~68user/net/udp-2.html
UDPがsend/recv
TCPがwrite/read
みたいな書き方されてますね
0937931
2006/05/27(土) 20:52:49よくわかりました!ありがとうございますm(_ _)m
0938デフォルトの名無しさん
2006/05/27(土) 20:59:59winsock らしいけど?
0939デフォルトの名無しさん
2006/05/27(土) 21:02:36なんでこんなとこ見てるんだろう?
ttp://x68000.q-e-d.net/~68user
いや、このサイトが良くないという意味ではなく。
0940デフォルトの名無しさん
2006/05/27(土) 21:14:50え?どういう意味??
MSDN を見ないって意味ならそれも仕方ないんじゃないかと思う。
だって、肝心なところは暗号化されてるし。
>>938 は、winsock では違うって意味で書いたんだけど。
0941931
2006/05/27(土) 21:29:34http://www.golgo.jp/winsock.html#l_select
http://www.h5.dion.ne.jp/~sigma/homepage/cyberspace/httpclient.html#c07
http://stylefree.net/main/nprogramming/windows/windows1.shtml
この辺りのサイト見させてもらってるんですが、送受信(具体的に言うとHTTPクライアントのような物を作りたい)のあたりで混乱してしまって・・
どこかwinsockで詳しいサイトありませんかね?(参考書買えって感じですかね?w)
0942デフォルトの名無しさん
2006/05/27(土) 22:48:32良いサイトを探すのは難しいかもしれないです。
自分も同じことを考えたんだけど、最終的には本を買うしかなかった。
http://www.amazon.co.jp/exec/obidos/ASIN/4797330449/503-2450924-1963916
これがいいです。
っていうより、これしか選択肢が無い。
HTTP クライアントなら、WinInet とか使ったらどうですか?
自分の少ない経験から思っただけですけど、
クライアントに BSD 由来の API を使うのはやめたほうが
いいような気がします。
解説って需要あるんですかね?
ちょっと書いてみたいような気もする。
0943デフォルトの名無しさん
2006/05/27(土) 22:59:21Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
で十分じゃないのか?
0944デフォルトの名無しさん
2006/05/27(土) 23:04:53充分じゃないと思う。
0945931
2006/05/27(土) 23:28:26WinInet・・今ちょっと調べてみたんですけど、winsockよりだいぶ入り易そうですね。
今まで存在そのものを知りませんでしたw�d。
>>943
初級者なんで、一から順を追ってといった感じの解説サイト(本)じゃないと厳しいですね。。
0946デフォルトの名無しさん
2006/05/28(日) 01:49:42TCPのコネクション確立の仕方も知らずにネットワークプログラミングをするのはどうかと
#WindowsでHTTP/FTPだけならWinInetがあるから、知らなくても多少は大丈夫だろうけど
猫でもわかる〜でも読んでおけよ
しょぼいけど抑えるところは抑えてあるぞ
0947デフォルトの名無しさん
2006/05/28(日) 11:55:09インターネットで情報入手できる時代では有るけど、歴史が違うから、書籍のほうが詳細でよく吟味されてまとめてあって読みやすいよ。
この先、氏ぬまでwindowsしか弄らないと言い切れるなら、bsd系のapiも無視してもいいかも知れないけど、
unix系にしろ、歴史的経緯で基本はbsd系のapiに行き着くので、後で応用が利かずに苦労するよ。
たとえばTCPのソケットって面倒だなあってのは、UNIXの設計思想として何でもファイルの様に扱いたいって言うのが有って、ネットワークもファイルの様にソケットに読み書きすれば通信できるって風にしたいからとか基本が理解できてないと理解できないことも多い。
あとはネットワークに限らず、全てのソフトに言えるけど、長く使われてるものほど、バグが潰されてて枯れてて不具合に巻き込まれにくい。
IPスタックの歴史で長いのはbsd由来の実装だし、windows系はまだまだ歴史が浅いよ。
まあそろそろスーパーハカーがbsd由来のIPスタックに置き換わるような革新的なIPスタックを出してくれてもいいと思うけどな。
ディスクレスクライアントとか現実的に使われてる今時、ファイルシステムに依存するIPスタックもどうかと思うし。
0948デフォルトの名無しさん
2006/05/28(日) 12:37:04>一から順を追って
つ[RFC]
もし、プロトコルを理解する以前の問題なら
つ[>>4]
0949デフォルトの名無しさん
2006/05/28(日) 12:50:24Winsockは、その本が一番いいと思うけど、
カマー本のWinsockという手もある。
あっちはプロトコルの話が少し多い。
0950デフォルトの名無しさん
2006/05/28(日) 12:51:16ディスクレス・クライントはファイルを使わないのですか? (そうではないでしょう)
0951デフォルトの名無しさん
2006/05/28(日) 13:04:23ソケットがwriteでかけて,readで読めるだけでしょ?
0952デフォルトの名無しさん
2006/05/28(日) 13:07:41個人的には専用インタフェースが欲しいが
0953デフォルトの名無しさん
2006/05/28(日) 13:08:23ほとんどのプログラマはわざわざソケットをじかに叩く意味もないし。
0954942
2006/05/28(日) 18:12:32今は本格的にネットワークプログラミングを勉強しようと思ったわけではなくて、部分的に少し必要になっただけなので、winInetにお世話になろうと思います。
(時間があればみっちり勉強したいんですが・・)
0956デフォルトの名無しさん
2006/05/28(日) 19:33:53初学者だって書いてあるじゃない。
なんで RFC 薦めるの?
読んだことないけどなんかいい物だって聞いてるから?
0957デフォルトの名無しさん
2006/05/28(日) 19:35:46○めんどくさがり
0958デフォルトの名無しさん
2006/05/28(日) 19:38:02あのねぇ。
ここまでの書き込み見てわかるでしょ。
ネットワークどころか、プログラミングの初学者なの。
そういう人になんでわかりにくいもの薦めるかなぁ。
混乱させて楽しむってやつですか?
0959デフォルトの名無しさん
2006/05/28(日) 19:38:30噛み砕いて欲しいならせめて 「○○ってどういう意味ですか?」 くらいまで落として欲しいもんだね。
0960デフォルトの名無しさん
2006/05/28(日) 19:39:32偉いんだぞ!
おまいら頭が高い!
0961デフォルトの名無しさん
2006/05/28(日) 19:41:12この人は、そんな質問してないでしょ?
質問の答え書けばいいと思います。
Linux 系の人がうそ教えて喜んでたけどさぁ。
あれほんと悪質だよ。
ちゃんと答えかいてやればいいじゃない。
0962デフォルトの名無しさん
2006/05/28(日) 19:42:49じゃ、おまいが書いてあげれば良いじゃないか。
0963デフォルトの名無しさん
2006/05/28(日) 19:43:260964デフォルトの名無しさん
2006/05/28(日) 19:44:29なんかわかってしまった。
きっと教えるマニアっていうのがいるんだよね。
で、必死でぐぐりながら答えるの。
で、うまくぐぐれないと怒り出すの。
で、ぐぐってるだけで、きちんと知ってて教えてるわけじゃないから、
うそ教えてるの。
で、何で私が頭に来てるか理解できない。
0965デフォルトの名無しさん
2006/05/28(日) 19:45:07書いてあげたじゃん。
ちゃんとうそ教えてる人にも訂正するチャンス与えた。
0966デフォルトの名無しさん
2006/05/28(日) 19:45:170967デフォルトの名無しさん
2006/05/28(日) 19:46:420968デフォルトの名無しさん
2006/05/28(日) 19:47:16教えた。
過去ログ嫁。
すっごい感謝されてる。
涙流しながらありがとうって言われたよ。
0969デフォルトの名無しさん
2006/05/28(日) 19:48:44嘘つけ。
0970デフォルトの名無しさん
2006/05/28(日) 19:48:57神降臨
0971デフォルトの名無しさん
2006/05/28(日) 19:51:27あなた様のおかげで命を救われ、人生をやり直すことができました。
その節は本当にありがとうございました。
0972デフォルトの名無しさん
2006/05/28(日) 19:55:220973デフォルトの名無しさん
2006/05/28(日) 20:06:13ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′ <仲良くなってくれ
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 前224 〜 前194 )
0974デフォルトの名無しさん
2006/05/28(日) 21:59:560975デフォルトの名無しさん
2006/05/28(日) 22:27:260976デフォルトの名無しさん
2006/05/28(日) 22:28:40レス数が950を超えています。1000を超えると書き込みができなくなります。