ネットワークプログラミング相談室 Port3
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@接続しっぱい。
NGNG過去スレ:
ネットワークプログラミング相談室
http://pc.2ch.net/test/read.cgi/tech/970344582/
ネットワークプログラミング相談室 Port2
http://pc.2ch.net/test/read.cgi/tech/1006258198/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGこのCSocketのConnectなどで処理が止まっている(ように見える)とき、
処理を中止させるには普通、どのような方法をとるのでしょうか?
CancelBlockingCallを呼べばよいのかと思うのですが、
メインスレッドからワーカースレッドのCSocketに対してどのように
CancelBlockingCall呼び出せばよいのかがわかりません。
0004デフォルトの名無しさん
NGNGプロセスが同じだからメモリ空間も共有される
0005デフォルトの名無しさん
NGNGメインスレッドからCancelBlockingCallを呼ぶという方向性でよかったのですね。
ですがその呼び方がわかりません。
// ワーカースレッド
UINT ThreadFunc(LPVOID pParam)
{
CSocket socket;
:
:
socket.Connect(strAddress, nPort);
:
return 0;
}
のようにやっているのですが、このsocketにはメインスレッドから
どうやってアクセスすればよいのでしょうか。
0006デフォルトの名無しさん
NGNG一番簡単なのがグローバルにすること。
後は、スレッドのクラス化をして、オブジェクトの参照を返すなりお好きなように。
0007デフォルトの名無しさん
NGNGあ、なるほど・・・
一所懸命外からアクセスすることを考えてました。
socketの方を外にだしてやればいいんですね。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1006258198/932-
Telnet つかってみましたが、不便なので嫌です。
Perlは嫌いです。
25ポートを使ってメールの送信は出来ました。
APOP認証は110ポートにつなげてやっています。
ポートを開いた後、AUTH をすると下記のようになりました。
これは APOP に対応しているのでしょうか?
+OK Qpopper (version 4.0.3) at hogehoge.ne.jp starting. <[email protected]>
+OK Supported SASL mechanisms:
X-NONE-SO-USE-APOP-OR-STLS
.
0011デフォルトの名無しさん
NGNGお前が嫌いだから答えない
0012前スレ977
NGNG受信したデータを調べてみたら、今までどっかに消えてた部分が見つかりました。
というのも、受信したデータのなかにおそらく'\0'のような文字があり、
データ確認のためにメッセージボックスを使ったりサイズ取得にstrlen()を使っていたため、
保存するサイズ等の計算をミスしていたものと思われます。
ルーチンを組みなおしてやってみたら成功しました。
本当にありがとうございました。
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGプログラミングすのもunix文化からの伝統ですか?
0017デフォルトの名無しさん
NGNGbuffer overflowはunix文化の象徴と言えましょう。
プログラムの設定ファイルを空白、改行区切りの生テキストにするとunix的。
buf(以下略)
インターネットの発達はunixによって支えられてきました。
全てのレイヤ5以上のプロトコルは文字列志向に置き換えるべき。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGプロトコルとして議論しているのは何故ですか?
FTPで、
ftp> binary
200 Type set to I.
ftp> get hoge.tar.gz
したあとも文字列志向ですか?
002210
NGNG0023デフォルトの名無しさん
NGNG( ´ー`) < シラネーヨ
\ < └───/|────
\.\______//
\ /
∪∪ ̄∪∪
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGおまえはftpを勉強なおしたほうがよいと思われ。
0027デフォルトの名無しさん
NGNGDNSの設定の情報を取得する方法はありませんか?
0028デフォルトの名無しさん
NGNG0029疑問太郎
NGNG0030デフォルトの名無しさん
NGNGトーシローの輩が回答してるね
クサレプログラマの憩いの場か(藁
0031デフォルトの名無しさん
NGNG間違った回答があるってこと?
たとえばどれ?
0032デフォルトの名無しさん
NGNG蛇足かもしれないがTCP/IPのsocket APIはBSD文化と言っていい。
だからお前等はBSDを勉強すべきであってwindowsやlinuxなどという
劣化コピー品を参考にすべきではない。
0033デフォルトの名無しさん
NGNGリヌはハナデカがつくたけどさ
0034デフォルトの名無しさん
NGNGlinuxの微妙な違いはイライラする
0035デフォルトの名無しさん
NGNGリヌは、、、、(ププ
ウィはブッチギリでしょう
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG出来ないんですか?今はデータを文字列として送受信してます。
0038デフォルトの名無しさん
NGNGできるけど、やるとトラブルの種。
0039デフォルトの名無しさん
NGNGそうなんですか、結構データの量が多くて文字列に直して送受信するのが面倒で。
データを工夫して量を減らさないとだめかなぁ・・・。
0040デフォルトの名無しさん
NGNG後、バイトオーダも気をつけないといかんしねー
0041デフォルトの名無しさん
NGNG文字列にしなくても、バイトオーダーを決めて(ビッグエンディアンが「ネットワークバイトオーダー」)、
バイナリで送ってもいいっしょ。
構造体そのままだとバイトオーダーの他にアラインや型のサイズの不一致もある。
将来の拡張にも弱い。
そのあたりを意識してればいいんでは。
0042デフォルトの名無しさん
NGNG難しそうですね^^;。もうちょっと勉強してきます〜。
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGhttp://www.google.com/search?num=50&hl=ja&q=%83o%83C%83g%83I%81%5B%83_%81%5B&lr=lang_en%7Clang_ja
0046デフォルトの名無しさん
NGNGプロトコルはUDPで同期通信方式とマルチスレッドを使っています。
クライアントからサーバにデータを送信した後にサーバーから
データを送信しているのですが、頻繁にsendtoでエラーが起こります。
WSAGetLastError()でエラーを調べてみると「10047 WSAEAFNOSUPPORT」らしいのですが、
ずっとlocalhostで通信を行っているので途中で変ったりしないはずなんですが。
エラーも最初の送受信で発生したり、数回送受信をした後に発生したりとランダムに起こります。
クライアントからサーバへのデータは届いていることは確認できます。
考えられる原因があれば教えていただきたいです。
0047デフォルトの名無しさん
NGNG0048ななし
NGNG0049試行錯誤中 ◆.t4dJfuU
NGNG現在、wininetを用いてCGIに引数を渡すプログラムを作ってます。
言語はVC++です。
一応、CGI側では渡した引数を受け取ってはくれてるのですが何故か、
最後の引数の後ろに/を勝手に補完してくれます。
例
http://www.hogehoge.com/hoge.cgi?value1=123&value2=456
上記例の結果(環境変数)
QUERY_STRING = [ value1=123&value2=456/ ]
# 456の後ろの/が余計
これは何故でしょうか?
どうしても原因が分からず悩んでいます。
どなたかお分かりになる方がいらっしゃいましたらお教えください。
お願いします。
0050試行錯誤中 ◆.t4dJfuU
NGNGHINTERNET hConnect = InternetConnect(
hSession,
url, // www.hogehoge.com/hoge.cgi?value1=123&value2=456
INTERNET_DEFAULT_HTTP_PORT
NULL,
NULL,
INTERNET_SERVICE_HTTP,
NULL,
NULL);
HINTERNET hRequest = HttpOpenRequest(
hConnect,
"GET",
NULL,
NULL,
NULL,
NULL,
INTERNET_FLAG_RELOAD
0);
0051デフォルトの名無しさん
NGNGセッション張るのはwww.hogehoge.comに対してで、CGIやパラメータは
HttpOpenRequestの方で指定するとかかも
0052試行錯誤中 ◆.t4dJfuU
NGNGレスありがとうございます。
当方、よく分からずにネット上で色々と検索しながら組んでいる最中です。
HttpOpenRequestですが、CGIに渡すパラメータを設定する部分が無いように思えますが、
どうでしょうか?
また、関係ないかもしれないですが試しにHttpSendRequestのOptionalにパラメータを設定してみましたが、
それだと、そもそも引数を渡せませんでした。
# まぁ、POSTやPUTで使用するパラメータみたいですし>HttpSendRequestのOptional
何分、よく分かってないのでマヌケなことを聞いてるかも知れませんが、ご教授お願いします。
0053試行錯誤中 ◆.t4dJfuU
NGNGすいません。
HttpOpenRequestのObjectNameパラメータで指定すればいけるようです。
ありがとうございました。
0054デフォルトの名無しさん
NGNG任意のタイミングで、データを受信せずにコネクションが
切断されたことを検出する方法はありませんか?
0055デフォルトの名無しさん
NGNGシグナルやメッセージではなく、自分から関数を呼び出して取得したいと言うことです。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGありがとうございました、すっかり忘れてました。
0058デフォルトの名無しさん
NGNGそれは何ですか?
0059デフォルトの名無しさん
NGNGtelnetでテストをしたいのですが、win版telnetには「一行を送る」という方法はないのでしょうか?
オプションを見た限り見当たらないのですが・・・
TELNETver1.0です
もしできないのなら、何かフリーのtelnet接続ができるスタンダードツールを教えていただければ幸いです
(検索したけどWindowsCE用テ…)
0060デフォルトの名無しさん
NGNGteraterm pro
0061デフォルトの名無しさん
NGNG久々に起動してみたがみあたらん・・・
0062デフォルトの名無しさん
NGNGWinsock2.0ばかり使用していて、1.1について覚えてないので、
互換性の問題が出てる可能性があるので、調べたいんです。
win95上でテストすると言う方法も勿論あるのですが、
違いの概要程度は把握していたいので。
0063デフォルトの名無しさん
NGNGTCPやUDPだけじゃ出来ないよね?
0064デフォルトの名無しさん
NGNGUDPでブロードキャスト送信だよ
0065デフォルトの名無しさん
NGNGUDPにはブロードキャストという機能がある
LAN内の全てのアドレスが対象になるアドレス
255.255.255.255にsendtoする
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGトカ?
0068デフォルトの名無しさん
NGNG255.255.255.255とはかぎらんのでは?
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG自分の居るLANのブロードキャストアドレスは、
INADDR_BROADCAST=255.255.255.255から取得するんじゃないの?
localhostを取得するのに127.0.0.1を使うようなもんで。
0072デフォルトの名無しさん
NGNG255.255.255.255は全アドレスに対するブロードキャストだよね。WANも含む。
実際にはルータが止めるだろうけど、
複数のネットワークインターフェイスがある場合、そのすべてが対象になってしまうよね。
基本的には目的のネットワークインターフェイスの情報からbroadcast addressを得て
そこ宛に送信するのが行儀がいい方法。
0073デフォルトの名無しさん
NGNGクライアントがサーバへconnect処理を行うときに
サーバがまだ起動していないときにconnectを行っても
エラーが出ません。普通ですか?
0074デフォルトの名無しさん
NGNG知らなかった・・・
ブロードキャストフラグ立ててINADDR_BROADCASTにsendtoしてたよ・・・
IPメッセンジャクローンのどれかを参考にしたから、
その参考にしたやつもそうなってた。あんまりお行儀よくなかったのね(´・ω・`)
>目的のネットワークインターフェイスの情報からbroadcast addressを得て
これどうやるの?gccでのやりかた教えてください
0075ななーしさん@接続しっぱなし
NGNGhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/ovrvw1_2xv6.asp
読みやがれ! このWinsock2野郎めが!
0076デフォルトの名無しさん
NGNGIPアドレスとサブネットマスクから計算できるんでないの?
0077デフォルトの名無しさん
NGNGひとつ教えてください。
WINDOWSでsetsockopt関数の第3引数に2をセットしているのですが
エラーが帰ってきてしまいます。
OSの仕様でしょうか?
0078デフォルトの名無しさん
NGNG・非同期ソケット
・非ブロックソケット
って別物ですよね?
0079デフォルトの名無しさん
NGNG>BSD options not supported for setsockopt are shown in the following table.
>SO_ACCEPTCONN, BOOL, Socket is listening
0080デフォルトの名無しさん
NGNGありがとー、2日間の悩み解決です。
これで、心置きなく次の課題に移れます。
0081デフォルトの名無しさん
NGNGProgramming UNIX Sockets in C からの引用。
>SIOCGIFCONF を使ってアクティブなネットワークインターフェースの
>リストを取得し、SIOCGIFFLAGS と SIOCGIFBRDADDR を使って
>ブロードキャスト可能なインタフェースを特定し、
>ブロードキャストアドレスを得る
インターネット 256 倍 Vol.2 にものってる。
でも面倒くさい…。
0082デフォルトの名無しさん
NGNG<HTML><HEAD><TITLE>302 Moved</TITLE></HEAD><
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.jp/">here</A>.
</BODY></HTML>
って感じのreturnが帰ってきました。正常にhtmlファイルを取得するには
どうすればよいのでしょう?
送ったヘッダは send(theSocket, "GET /\n", 256, 0);だけです。
同じコードを使ったらyahooとvectorは取得できました。
0083デフォルトの名無しさん
NGNGヘッダの作り方なんてここの過去スレでも何度も出てるし
それからsendの第三引数もアレだ
0084デフォルトの名無しさん
NGNG100倍速ぐらいのをつくりたいんですけど
VCのサンプルおちてないですか?
0085デフォルトの名無しさん
NGNG適当にやってたらあかんのですね。
ヘッダと第3引数しっかり設定したら上手くいきました。感謝。
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG適当なソースからコピペするんじゃなくて、仕様書や規格書を頭の中にたたき込んでからにしろ。
何でRFC読まないでインターネット関連のプログラムを作ろうとする人間がいるのか和下欄。
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG作るのをあきらめてください。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGたとえばメール関連のRFCは、ここのテキストは小さいが
記述が分散していてあちこち読まにゃならん。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGRFCがルールだなんて誰が言ったのかしら、ねえ?
0094デフォルトの名無しさん
NGNGIETFが・・・
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG009885
NGNGhttp://supporter.s1.xrea.com/ に対して、プログラムを動かしたところ、
HTTP/1.1 302 Found
Date: Sun, 16 Jun 2002 23:20:53 GMT
Server: Apache/1.3.24 (Unix) mod_layout/3.0.3 mod_gzip/1.3.19.1a
Location: http://www.xrea.com/err403.htm
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
X-Pad: avoid browser bug
と言われました。ブラウザから見たところ、ファイルは存在していました。
std::string request =
"GET / HTTP/1.1\r\n"
"Accept: */*\r\n"
"User-Agent: Hoge\r\n"
"Host: www.xrea.com\r\n"
"Connection: close\r\n"
"\r\n";
send(sock, request.c_str(), request.length(), 0);
0099ななーしさん@接続しっぱなし
NGNG# 他にはExperimental, Informational, Historic, Best Current Practiceなど。
RFC2616, HTTP/1.1はstandardですから守りましょう。
詳しくは、RFC2026, The Internet Standards Process -- Revision 3や
http://rfc-jp.nic.ad.jp/introduction/を。
各RFCのstatusはrfc-index.txtで一覧できます。
>>96
氏ねや
>>97
違う。公式のルール。
0100デフォルトの名無しさん
NGNGHost: supporter.s1.xrea.com
0101デフォルトの名無しさん
NGNG「変な文字が混入して困っています」と言うぅっッッ!
0102デフォルトの名無しさん
NGNGここは85にゼロからhttpプロトコルを教えるスレになったと言うことでファイナルアンサー?
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGftpプロトコルかもしれないし、scsiインタフェースかもしれないし、usbバスかもしれない。
しかし、telnetプロトコルじゃなければ、IEEE1394インターフェースでもないし、pciバスでもないだろうね。
0105デフォルトの名無しさん
NGNGデムパ?
0106デフォルトの名無しさん
NGNGこのスレに書き込めるようなプログラムはどのように書けばいいのでしょうか?
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG最初の「プログラムで」は余計でした。
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNGを自動生成したいのだと思われ
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGワラタ
0113ななーしさん@接続しっぱなし
NGNG> telnetプロトコルじゃなければ、
じゃなければ、て(w
0114デフォルトの名無しさん
NGNGいいでしょうか?
0115デフォルトの名無しさん
NGNG好きなのを発行すればいいとおもう。
0116デフォルトの名無しさん
NGNGカフェオレ牛乳でも飲むよ!
0117デフォルトの名無しさん
NGNGおれ、102だけどサッパリわからんぞ、教えてくれ
0118デフォルトの名無しさん
NGNGHTTPのPはProtocolのPだってことでしょ。
Ftpのp、SCSIのI、usbのb。
0119デフォルトの名無しさん
NGNGNTテクノロジね
0120デフォルトの名無しさん
NGNGバッファオーバーランなどのセキュリティーホールをふさぐ為の
設計・コーディングについて解説してある本はありませんか?
0121デフォルトの名無しさん
NGNGいや、単にバッファを可変長にするかアフォみたいに大きくするかデータ読み出しの時点であるサイズ以上は素来診具する。
0122 ◆.t4dJfuU
NGNGVC++でWinInetを使ってWEBサーバにアクセスするPGを作ってます。
プロトコルはhttpです。
存在しないサーバに対してHttpSendRequestを行うとエラーになるので、
逆に、ここでエラーになった場合はサーバが見つからなかった、ということで
逃げようとしてます。
問題は、サーバは存在しているがページが見つからなかった(若しくはアクセス不可)
場合です。
InternetReadFileで読もうとしてますが、404とかのエラーコードを認識するには
どうしたらいいのでしょうか?
どなたか教えて下さい。お願いします。
0124デフォルトの名無しさん
NGNGdjbのトコトカ http://cr.yp.to
esehttpdにもそんな謳い文句があったなぁ……
0125120
NGNG読んでみます。ありがとうございました。
あとこんなのを見つけたのでとりあえず買ってみます。
Windows/.NET向けの書籍のようですが。
プログラマのためのセキュリティ対策テクニック
http://www.microsoft.com/japan/info/press/JPN_ViewMsPress.asp?Book_id=822&list_id=1
バッファ オーバーランを解消せよ!
http://www.microsoft.com/japan/msdn/columns/secure/secure05202002.asp
0126123 ◆.t4dJfuU
NGNGスレ汚しですいません。
0127名無しさん@Meadow
NGNGこれはわりと良い、と某所で聞いた。
http://www.ipa.go.jp/security/awareness/vendor/programming/index.html
0128デフォルトの名無しさん
NGNGrecvfrom()直後にtime()で得た時刻が正確なパケットの
到着時刻って理解していいんでしょうか?
初心者なものですみません。
0129デフォルトの名無しさん
NGNG何をもって受信時刻とするかによるが
recvfromで得られたとき、というのが実際妥当なところ。
それ以前の部分は中経路と考え、プログラムに到達したときとなる。
0130デフォルトの名無しさん
NGNGありがとうございます。
しかし、ループの中にrecvfrom()があると、パケットは送信側から
どんどんくるのに、recvfrom()で得られた時刻が受信時刻って
あんまりしっくりこないなぁと思いました。
0131デフォルトの名無しさん
NGNG形を取るときに送受信で気を付けることあります?
0132デフォルトの名無しさん
NGNG改行コードと漢字コードくらい。
後は何も気にしなくて良いところがプロトコル。
0134ななーしさん@接続しっぱなし
NGNGStackGuard を使う。
http://www.immunix.org/stackguard.html
んじゃ。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGできますでしょうか?
もし、やりかたがあったら教えていただきたいのですが。
0137136
NGNGstruct timeval timeout;
timeout.tv_sec = 60;
timeout.tv_usec = 0;
ret = select(0,NULL,NULL,NULL,&timeout);
if (ret == 0){
printf("タイムアウト!\n";
return;
}
ret = recv(s, buff, sizeof(buff), 0);
0138デフォルトの名無しさん
NGNGselectの第二引数を調べてくれ
0139名無しさん
NGNG何か良い方法があれば教えていただけるとありがたいです。
で、その処理ですが、ひたすらwrite()でデータを送る。
ただし、相手がビジーになったときに、その理由(バッファフルなど)を
送ってくるので,そのような時はread()で読みたい。
というものです。
このような時は、write()でブロックされてしまわないように
fcntl()を使って、NONBLOCKINGモードにしておいて、
write()とread()をループさせようと思いますが
どうでしょうか。
あと、NONBLOCKINGモードの設定とかで注意点とかあればお願いいたします。
0140デフォルトの名無しさん
NGNG私だったらスレッドで分けちゃいます
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGselectは読み込み、書き込みの両方を同時に待機できるよ。
readfdsとwritefdsの両方にfd_setを指定すれば、
読み込み可能になるか、書き込み可能になったら復帰する。
int status;
do {
fd_set rdfds;
fd_set wrfds;
FD_ZERO(&rdfds);
FD_ZERO(&wrfds);
FD_SET(fd, &rdfds);
FD_SET(fd, &wrfds);
status = select(fd + 1, &rdfds, &wrfds, null, null);
} while (status < 0 && errno == EINTR);
if (FD_ISSET(fd, &rdfds)) {
/* 読み込み可能 */
}
if (FD_ISSET(fd, &wrfds)) {
/* 書き込み可能 */
}
>>141の方法だとCPUに負荷がかかるからやめた方がいい。
0143名無しさん
NGNG>>142
データを送信し終えるまで、このプログラムをループさせれば
良いということですね。
ん?そうすると、141さんのタイムアウト0でループさせるのと
一緒に思えますが、何か思い違いでしょうか。
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG読み込み、書き込みどちらかが可能になるか、エラーが返るまでブロックする
0146名無し
NGNGスレッドでわけても、writeでブロックされている時は、
別のスレッドでもreadできないのでは?
0147デフォルトの名無しさん
NGNG>ん?そうすると、141さんのタイムアウト0でループさせるのと
それはいわゆる busy loop というやつで、全速力で回るとCPU時間を
100%消費することになる。マルチタスクなOSでは好ましいスタイルとは言えない。
>>144
伝統的なbsd socketにおけるselectの第一引数には、
fdsetにセットしたfd(を整数値とみなしたときの)の最大値+1を入れる。
ちなみにwinsockでは無視されるから注意しよう。
0148デフォルトの名無しさん
NGNG>別のスレッドでもreadできないのでは?
ふつうのsocketの実装なら、writeとreadは並行して行えるはず。
「ふつう」がどこまで通用するかは微妙 ;-)
Solaris2.5なんかはバグってたらしい。
0149デフォルトの名無しさん
NGNGデータを送信するときはsendを使ってますが
FD_WRITEの使い方がよく分からないです。
データを送信するときはFD_WRITEを待たなければいけないんですか?
FD_WRITEは送信バッファに空きがあることを示すイベントと書いてありました。
0150デフォルトの名無しさん
NGNGMFCでクラスがあるくらいだから出来るんじゃない?
多分イベントオブジェクトを受け取ってwaitforsingleobjectかと。
0151デフォルトの名無しさん
NGNG待たなくても構わないが、ブロックするかエラーになる
0152デフォルトの名無しさん
NGNG0153初心者
NGNG0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGいいでしょうか?
非同期にしたらいいんでしょうか?
0156149
NGNGじゃあFD_WRITEが発生するまで待ってからsendする方向だと、
一度sendするたびにFD_WRITEが発生したかどうかのフラグみたいなものを
用意しなくちゃいけないんですかね?
0157デフォルトの名無しさん
NGNGもともとUnixのものだからね。UnixだとSocketに限らずすべての入出力は
ファイルと同じように扱える。つまりselectにSocket以外のファイルディスクリプタ
もセットしてデータの到着や書きこみ可能なタイミングを監視できるわけだ。
「どっから読んだり書いたりしようかな〜」と選択するってことでselectって
名前になっているのだと思う。
0158デフォルトの名無しさん
NGNG複数のファイル記述子からシグナル状態になった物を選択して返すからselectじゃないの?
0159デフォルトの名無しさん
NGNGというか、なぜ無視できるのでしょう?
0160デフォルトの名無しさん
NGNGfd_setの実装が、まるで違うから。マクロとかも覗いてみ。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGwww.nakka.comとか
0163161
NGNGどうも〜、って思ったらすでに見てました^^;
ココ参考にTCPクライアント(非同期型)作ってるんですけど、
データ送信するときsend使ってるけどココのサンプルはFD_WRITEの中で呼んでますよね。
FD_WRITEってイベントだから任意のタイミングではsendは使えないんですか?
0164デフォルトの名無しさん
NGNGWinSock FAQもおすすめ。
http://tangentsoft.net/wskfaq/
>FD_WRITEってイベントだから任意のタイミングではsendは使えないんですか?
FD_WRITEを待たないとTCPスタック内の送信バッファの状態によっては
WOULDBOCKエラーになるかもしれない。たとえば受信側の処理がすごく低速な場合とか。
まあ普通だいじょうぶだろうけど。
0165ななーしさん@接続しっぱなし
NGNGシリアスなmulti-threadedなアプリでは、
逆のsendしてブロックされる場合もイヤだよね。
// ちなみにWOULDBOCK → WOULDBLOCK
>>161
任意のタイミングで要求出して、後はシステムにそこはかとなくやって欲しければ、
同期でprogrammingすればいいじゃない…
0166デフォルトの名無しさん
NGNGwriteを使って実現可能でしょうか?
<FORM METHOD="post" ACTION="../cgi-bin/test1.cgi">
0167デフォルトの名無しさん
NGNG可能!
0168デフォルトの名無しさん
NGNGでも試したのでですが、どうもwriteで送った値が送られていないようなのですが
何か考えられる原因はありますか?
0169デフォルトの名無しさん
NGNGどうしろと・・・。
0170デフォルトの名無しさん
NGNGとりあえずな、自分の送ったデータと、それへのレスポンス
でも示して貰うか、ソースを晒してもらわないことには、
何も言えない。(というより、該当することが多すぎて列挙しきれない)
0171デフォルトの名無しさん
NGNGURLconnection::setDoInput(true)って
やってみましたか?
::setDoOutput(true)だったかもしれない
これで、私はPostできましたよ
0172デフォルトの名無しさん
NGNGデータ蓄えてから受け取ってるんだけど。データがまとめられたり分割されるのは
わかるけど、毎回まとめられてるとなんか変な感じ。クライアントでsendを何回も
連続して発行してるけどそれってマズイのかな?
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGsend〜がWSA_EWOULDBLOCKで失敗した時だけFD_WRITEを待てばいいはず。
自動リセットイベントで待機する場合は、WSA_EWOULDBLOCKからWaitFor〜を
呼ぶ間にイベントがシグナル状態になるとデッドロックする可能性があるかも?
FD_WRITEは実装が複雑になるから、あまりやる必要はないんじゃないかな?
どうしてもしようと思うなら、WSAAsyncSelectを使わずに非同期(重複)I/Oを
使った方がいいかも。ロジックが大幅に変わるから直すのは大変だろうけど。
0175デフォルトの名無しさん
NGNG6〜7割取れてました、苦手な科目だったな・・・。
0176デフォルトの名無しさん
NGNG根本的にわかっていないようですね。
0177166
NGNGHTML
<HTML>
<HEAD>
<TITLE>テストぺージ</TITLE>
</HEAD>
<BODY BGCOLOR=#a0d0ff>
<FORM METHOD="post" ACTION="test1.cgi">
<INPUT TYPE="text" NAME="fieldname" SIZE="50"><BR>
<INPUT TYPE="text" NAME="fieldname2" SIZE="50"><BR>
<INPUT TYPE="text" NAME="fieldname3" SIZE="50"><BR>
<INPUT TYPE="submit" VALUE="書き込み">
</FORM>
</BODY>
</HTML>
のFORMのPOST部分をJAVAでやりたくて、CGIプログラムは
#include <stdio.h>
#include <stdlib.h>
main()
{
int len;
char *clen;
char *data;
clen=getenv("CONTENT_LENGTH");
if(clen==NULL){
printf("no contents.\n");
exit(1);
}
len=atol(clen);
data=malloc(len+1);
scanf("%s",data);
data[len]='\0';
printf("Content-type: text/html\n\n");
printf("<HTML><HEAD></HEAD><BODY>\n");
printf("%s<BR>\n",data);
printf("</BODY></HTML>\n");
}
0178166
NGNGで自分が作ったプログラムは
import java.net.*;
import java.io.*;
public class PasswordID{
public static void main (String [] args) {
try{
URL u = new URL("http://localhost/cgi-bin/test1.cgi");
URLConnection uc = u.openConnection();
uc.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream(), "ASCII");
InputStream in = uc.getInputStream();
InputStream buffer = new BufferedInputStream(in);
Reader r = new InputStreamReader(buffer);
out.write(fieldname=a&fieldname2=b&fieldname3=c);
out.write("\r\n");
out.flush();
out.close();
int c;
while((c = r.read()) != -1) {
System.out.print((char) c);
}
in.close();
}
catch (Exception e) {
System.err.println(e);
}
}
}
です。よろしくお願いします。
0179デフォルトの名無しさん
NGNG0180166
NGNGそれでwriteしても、正確なデータが遅れないんですよぉ〜。
0181じゃヴぁ
NGNG正しいソースは…
お昼休みに書く予定です
0182ごめんくさい
NGNGさっきの発言はうそです ごめんなさい!!
書くきなんて全然ありません
だってお昼だもん俺も休みたいもん!!
0183179
NGNGJAVAなんて知らないのに煽って悪かった。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGclose(sd);
がないとか言われました(VC6)。
shutdown(sd);
close(sd);
の変わりになる関数がなんかあった気がするんですが、
教えてもらえませんか? たしか、一回呼べば済むようなヤシだったと思います。
0186デフォルトの名無しさん
NGNG0187185
NGNGとしたら素直にとおったんですが、これでいいんでしょうか?
0189デフォルトの名無しさん
NGNG正解かと。
0190185
NGNGsocketのKEEPALIVEの設定をしたいのですが、
KEEPALIVEの可否自体はsetsockopt()でできるみたいですが、
そのintervalはどうやって指定するのでしょうか?
よろしくお願いします。
0191185
NGNGこんなドキュメントを見つけました。これって要するに、変えられないってことですよね。
要求ではコネクション毎にKeepAliveIntervalを指定したいみたいなんですが・・・。
まさかアプリケーションで作れってこともないと思うけど(相手がapacheなんで)。
困ったにゃ。
0192デフォルトの名無しさん
NGNG0193185
NGNGどうしてKeepAliveをしたいのかは仕様に書いてないんで分かりませんが。
0195デフォルトの名無しさん
NGNGKeepAlive(のタイムアウト)はHTTPだと思うんだけど、違うかな
0196デフォルトの名無しさん
NGNGSO_KEEPALIVEってのがあるけど、HTTPのKeepAliveとは別物。
0197デフォルトの名無しさん
NGNG0198185
NGNG0199デフォルトの名無しさん
NGNG・UDPで送られてくるデータはいかなる保証もされていない
・UDPで送られてくるデータはパケット長のみ保証されている
どっちが正しいんでしょうか?
0200デフォルトの名無しさん
NGNGそら、パケット自体の形式は保証されてるだろう。
届くかどうかは別として。
0201デフォルトの名無しさん
NGNG0202名無資産@ヘタレ部
NGNGUDPパケット(データグラム)は、届いたパケットの中身は
ある程度(チェックサム程度)保証される。経路で分割されたデータグラムの破片を
ユーザランドで受け取ることはない。
ただし、データグラムは到達しないかもだろうし
(分割されたデータグラムの片割れが届かなかったら、そのうち全部捨てられる)
データグラムが多重に届くことすらありえる
っていうか教科書嫁
>>201
TCPにはパケットの概念はないだろ
0203デフォルトの名無しさん
NGNGパケットが届く順序が変わるかもしれない。
あと、1回しか送ってないパケットが2回(以上)届くかもしれない。1回も届かないかもしれない。
届いたなら、データの中身は恐らく正しいであろう。壊れて届いたパケットは何も言わずに勝手に捨てられます。
0204デフォルトの名無しさん
NGNG時間差で>>202と同じ事欠いても・・・
0205デフォルトの名無しさん
NGNGこりゃまずいな...
0206デフォルトの名無しさん
NGNGCRCは削っても良いのか
0207デフォルトの名無しさん
NGNGこれ良くわからん
全く同じUDPパケットが2回以上届く事なんてあるの?
UDPが届かないのは良くわかるけど
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGあるよ。
そのパケットが送信されて受信側に届く前にそのパケットの再送要求出したときとか。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNGルータ間
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG宛先と無関係に流れてきたパケットをすべて取り込むモードです。
0215デフォルトの名無しさん
NGNGスニッファですな
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG...
select(n+1, ...);
のようなコードがあるのですがsocket()の戻り値は
その値自体に何かの意味があるのでしょうか?
0219デフォルトの名無しさん
NGNGstdin stdout stderr
とかで検索しる
0220デフォルトの名無しさん
NGNGsocket discriptor でググッたら 130件もバカが見つかったよ。
0221デフォルトの名無しさん
NGNG(;´Д`)ハァハァ
0222デフォルトの名無しさん
NGNGwinsock2.0、BCCでネットゲーム開発しています。
バイナリデータの送受信にはどういった方法を用いるのですか?
yahoo・グーグルでここ二日ひたすら探したのですが
バイナリデータ送受信を解説しているものが見つからず立ち往生してます。
考えついて試してみたのは
ビットシフトで8ビットにずつに分解して1バイトの配列に格納してsend
なのですが、受信側で再び再構築すると格納してたデータがおかしくなっていました。
1バイトずつ再構築しているのでバイトオーダーの影響ではないと思うのですが
初歩的すぎる質問でしたらキーワードだけでも教えていただけると助かります。
よろしくお願いします。
0223222
NGNGファイルからバイナリデータを読み出してそれを送信する、というのではないです。
変数に格納してある値をテキストデータとして送らないで送受信する方法を
「バイナリデータの送受信」と書きました。紛らわしくてすみません。
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGhtons
などを検索してみるとよいかも。けど「バイトオーダー」については
わかってるみたいなので、はずしてるかもー。
0227222
NGNGアドバイスありがとうございます!解決しました。
225さんの仰る通り、再構築ルーチンを再度見直してみたんですが
受け取ったデータを解析するルーチンがマズかったです。
受け取ったデータはBYTE配列に入れていたんですが、ルーチンの引数を
LPSTRにしてました・・・(;´Д`) LPBYTEにしたところすんなりいきました
ただのcharは符号付で-128から128、byteは符号無しで0から256ですよね。
>>226
バイトオーダーはわかっていたつもりだったのですが、
それよりもっと初歩的な、変数の型についてのミスでした。。。
ありがとうございました!
0228デフォルトの名無しさん
NGNGWinsock超初心者です。
質問があります。
「極めるVisualC++」という本のP154から始まるAPIのWinsockの
サンプルプログラムを打ち込んで、動かそうとしているんですが、
うまく動きません。
具体的には、クライアントがsendするところでエラーが帰ってきます。
WSAGetLastErrorで調べたところ、エラーの内容は「WSAENOTCONN」とのことでソケットが接続されていないらしいのですが、どう対処
していいのか分からない状態です。
とりあえず、プログラムを追ってみたのですが、サーバー、クライアント
共に正しく動いている(ような気が)します。
本当に初歩の初歩の質問だと思うのですが、何かよきアドヴァイスが
ありましたらよろしくお願いします。
0229デフォルトの名無しさん
NGNGsend()の直前でとめて、netstatやってみたら?
0230228
NGNGお返事ありがとうございます。
>エラー処理入ってる?
エラー処理は入っています。
プログラムを確認したんですが、connectの部分がごっそり
抜けていました。恥ずかしいです。
それで、もう一度動かしてみたのですが、今度はconnect関数に
入ったところで、プログラムが反応しなくなってしまいました。
よって、connectのエラーコードも分かりません。
もちろん、サーバは動かしています。
また何かポカをやっていると思うのですが、よろしくお願いします。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGacceptしたクライアント数が多くなると効率悪くないですか?
せめて受信の処理を検索せずにコールバックで処理するような関数はないのでしょうか?
環境はLinuxです。
0233228
NGNG*サーバ
///////始め////////////
SOCKADDR_IN svAddress, clAddress;
memset(&svAddress, 0, sizeof(SOCKADDR_IN));
svAddress.sin_family = AF_INET;
svAddress.sin_port = htons(45678);
svAddress.sin_addr.s_addr=htonl(INADDR_ANY);
///////終わり////////////
*クライアント
///////始め////////////SOCKADDR_IN svAddress;
svAddress.sin_family = AF_INET;
svAddress.sin_port = htons(45678);
u_long svaddr=inet_addr("128.128.128.3");
memcpy(&svAddress.sin_addr, &svaddr, sizeof(u_long));
///////終わり////////////
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGそうですね。プロファイルとってみたらselect(待ち時間は0)が50%近い値でした。
教科書どおりにacceptの度にforkするわけにもいきませんしどうしたものでしょう?
Winsockには非同期通知というのがあるらしいのでそちらを試してみようと思いますが・・・
0236デフォルトの名無しさん
NGNGWinならIOCPがあるんだが。
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG俺スレッド派だな。
0239デフォルトの名無しさん
NGNGが怪しい。
0240デフォルトの名無しさん
NGNGsvAddress.sin_addr.s_addr = ( (struct in_addr*)( he->h_addr ) ) -> s_addr;
みたいなカンジで。
0241デフォルトの名無しさん
NGNG0242228
NGNG解決しました。
u_long svaddr=inet_addr("128.128.128.3")
→
u_long svaddr=inet_addr("127.0.0.1")
にしたところ動くようになりました。
127.0.0.1がローカルのアドレスであるという知識も
無かったのが問題でした。
この参考書(極めるVisualC++)だけで、Winsock
を学ぶのは無理だと思いました。
何か他の参考書を買ってきたいと思います。
お答えしていただいた皆さん、ありがとうございました。
0243デフォルトの名無しさん
NGNGhttp://ghost.math.sci.hokudai.ac.jp/esehttpd/
ここが役に立つと思う。
Linux2.4系ならPOSIX Realtime Signalsがあります。
*BSDなら、kqueueとか使うんだったかな?
>233
つか、128.128.128.3:45678では誰かちゃんと待っているんだろうな。
0244228
NGNG>つか、128.128.128.3:45678では誰かちゃんと待っているんだろうな。
待っていませんでした(w
ちなみに、
u_long svaddr=inet_addr("128.128.128.3")
というのは、参考書のソースをそのまま写したものです。
また、それについての解説はありませんでした。
「極めるVisualC++」を買った初心者の方は注意してください。
0245デフォルトの名無しさん
NGNGつぅかTCP/IPの常識すら知らん奴がネットワークプログラミングなんぞするなよ・・・。
本は無実だと思われ。
0247デフォルトの名無しさん
NGNGなんで? どうやって勉強すんのよ? 本は無実だが>>228にも罪はない。
0248デフォルトの名無しさん
NGNG>どうやって勉強すんのよ?
マスタリングTCP/IP嫁よ
>本は無実だが>>228にも罪はない。
本は、128.128.128.3みたいな妙なアドレスを出す時点で有罪
228はそれに、まったく疑問をいだかなかった時点で有罪
0249デフォルトの名無しさん
NGNG127.0.0.1とか?
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGたとえばそれがhttp clientなら、kantei.go.jpとか有名な
あたりを指定しとけばいいし、俺様protocolで通信する
ServerとClientなら、localhostを指定しとけばいいと思う。
#名前を引くのは当然として
0253デフォルトの名無しさん
NGNG或いは出版社のサイトになってるのが多いんだけどな。
このスレ的にはwww.2ch.netだが、「無用な負荷をかけるな」と言われる諸刃の剣。
0254デフォルトの名無しさん
NGNGとかふざけたことほざいてるうちはネットワークプログラミングなんぞ10000024年早いってこった。
0255デフォルトの名無しさん
NGNGあそこは素直だからな。
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNGどこを指定しても、ポート 45678 なんかで待っている奴なんかいないから、結局
エラーになると言う罠。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG# 手元の本にそんなこと載ってなかった・・・。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG最悪でもソースに書いてある。
0263デフォルトの名無しさん
NGNG無いっぽいです(・・)
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG本を間違ったかな・・・(-д-)
0266デフォルトの名無しさん
NGNGWSAStartup()〜WSACleanup()を除けば
ほぼUnixと同じように書けるし。
Winsock2.0の本で良書があったと思うが、
題名忘れた。
0267デフォルトの名無しさん
NGNGWinsock 2.0 プログラミング?
0268デフォルトの名無しさん
NGNGなにか良い資料ない?
0269デフォルトの名無しさん
NGNGRFC
0270デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=Java+SNTP&lr=
0271デフォルトの名無しさん
NGNGまた、その最大数を変更することはできますか?
0272デフォルトの名無しさん
NGNG変更する方法はしらん。っつーかできんと思う。
参考サイト(delだけど)
http://www.asahi-net.or.jp/~nk2w-ishr/winsock2.htm
0273おねがいします
NGNGようになりましたが、これと同じことを Windows 2000 でもやりたいのですが、
プロトコル(TCP/UDP)とポート番号の組み合わせからプロセスIDを取得する方法
ってわかりますでしょうか?
パーソナルファイアーウォールなどでは、取得できているようなのですが。
お願いします。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGお願いします。
0276デフォルトの名無しさん
NGNGxp からコピーしても見れなかった。
iphlpapi や ws2_32 の dll もコピーしたがだめだった。
具体的には、-o オプションをつけると一覧が表示されない。-an ならOK。
xp では、非公開?の AllocateAndGetTcpExTableFromStack API を使って
表示しているのは知っていたのだが、ノートンのファイアウォールは、
Win 2000/98/Me でどうやって取得しているのかが知りたい。
できれば、GUIでそれらを表示したいと考えている。
netstat を 2000にコピーするだけで動けば、strace してなにやってるか
みれたのに。。。。
0278デフォルトの名無しさん
NGNGじゃ、リバースやめます。
どうやら、Transport Driver Interface (TDI)に手を出さないと無理らしい。
このへんの情報知ってましたらお願いします。
0279デフォルトの名無しさん
NGNG>>269
0280デフォルトの名無しさん
NGNGこの内容が、ちょっとややこしいので、理解できません。
この板の過去ろぐも見せていただきましたが、
細かい部分の質問が多くて、結局、どうすれば接続を確立して、
お互いにメッセージをやりとりできるのかがわかりませんでした。
CHATTERと言うサンプルプログラムも何だかよくわからなかったです。
もしよろしければ、どのような手順で、接続を確立し、メッセージをやりとりすればいいのか、
教えて頂けませんでしょうか。
開発環境は VC++6.0 です。
MFCは、使っても使わなくてもかまわないです。
もしくは参考になるページや、本などでも結構です。お願い致します。
0281デフォルトの名無しさん
NGNGWSAStartup();
socket();
--------サーバ側
bind();
listen();
accept();
--------クライアント側
connect();
--------送受信
send();
select();
recv();
--------終了処理
closesocket();
0282デフォルトの名無しさん
NGNGCAsyncSocketが楽な罠。
sock.create(80);
sock.connect();
0283デフォルトの名無しさん
NGNGWSACleanupも、作法でソ。
0284280
NGNGだいたいの流れはわかりました。
早速やってみます。
また質問があるかも知れませんが、そのときはまたよろしくお願い致します
0285280
NGNGやっぱりやってみたんですけど、エラーがデマクリで。。。
サーバーとクライアント用にソケットを作ってみました。
CAnsySock Socket_serv,Socket client;
_________________________________________
Socket_serv.Create( 9000,
SOCK_STREAM,
FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
"127.0.0.1" );
Socket_client.Create(9001,
SOCK_STREAM,
FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
"127.0.0.1" );
Socket_serv.Bind(9000,NULL);
Socket_client.Bind(9001,NULL);
Socket_serv.Listen(2);
Socket_clientConnect.("127.0.0.1",9000);
______________________________________________________________________________________________________________________________
アドレスが使用中です、と言うエラーと、ソケットはブロック化処理を行いませんが、指定された処理はブロック化を行います。
と言うエラーがでてしまいます。。あと、こんなのもでます。。。When Connecting X.400 over TP4
どこがいけないか、もしよろしければ指摘お願いしたいです;;
また、これからも結構質問するかも知れませんが、よろしくお願い致します。
0286デフォルトの名無しさん
NGNG入門でやりたいならどっかのページ(yahoo.co.jpとか)を
取得するテストでもやってみりゃいい
0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNG・clientのポート番号を指定してるのはおかしい
・Createでポート番号指定してるのにbindしてるのはおかしい
0289デフォルトの名無しさん
NGNG一概にクライアントでbindするのがおかしいと言い切るのはおかしい。
>>285は2重bindなどおかしいことは多々あるが。
0290デフォルトの名無しさん
NGNG/*サーバ側*/
struct msgbuff {
mtype:
mtext;
}b; /*構造体テキトー*/
msgget ( msgid,............... ) /*キューゲト*/
msgrcv ( msgid,...b.mtext...... ) /*レシーブ*/
fprintf ( fp, %s, b.mtext ) /*ファイルニカキコ*/
:
:
この後にクライアソトに成功・失敗を伝えたいんすけど
再度b.mtextって使用可能なんすかね?
b.mtext使用してクライアソトに伝えようと思ったんすけど・・・
なんか他に(・∀・)イイ方法あるなら教えてください。
厨なんで質問の意図わかりにくいかとは思いますが
何卒オナガイシマス
0291デフォルトの名無しさん
NGNG共有メモリを使ったIPCですk?
そして、よっぱらってぐらぐらします。
0292デフォルトの名無しさん
NGNGUNIXプログラミング質問すれ
http://pc.2ch.net/test/read.cgi/tech/992057422/
の方がいいかも。
0293デフォルトの名無しさん
NGNGコネクトが切れたらなにかしらアクションを起こすシステムを搭載しようと思ったので相談にきました
とりあえず切断が切られた場合。
相手がclosesocket()した場合は
Msg=DATA_PENDING, lParam = FD_CLOSE
が来るのでアクションを起こすのは楽です
でも、相手がLANケーブルを引っこ抜いた場合などはこのMSGが送られてこず、
ひたすらsend recvを失敗するだけになります
今のところ15秒に一度、相手に返事を要請するデータ(相手はこのデータを受け取ると返事用のデータを返します)を送って
コネクトの生存を確かめています
今のところこのシステムに不自由はないのですが、
sockの機能でこれを代理するものはないでしょうか?
0294デフォルトの名無しさん
NGNGみるところsocketの機能としてはなさそう。
さらにそこの上のほうを見ると多少対策法あるあもね
(#以降はきられるのでコピペでよろしく)
0295デフォルトの名無しさん
NGNGそのやりかた(APレイヤーでkeep-aliveする)がTCP/IP的にはもっとも
正しい。WinsockならばSIO_KEEPALIVE_VALSを使えば、TCPレベルでの
細かいkeep-aliveが設定できるが、APプロトコルが自製のものなら
やはりAPレベルのkeep-aliveがベスト。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGInternetSetOption()でタイムアウトの設定をしていますが
InternetReadFile()では正しくタイムアウトされるのですが
InternetOpenUrl()ではタイムアウトが動かす固まってしまいます。
MSDNではAPIのバグだ、と書いてありますが
かかれているとおり、非同期で組みなおすしかないのでしょうか?
http://support.microsoft.com/default.aspx?scid=kb;JA;q176420
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGありがとうございます
やり方としては間違っていないようで安心しました
参考文献もおもしろかったです
0301デフォルトの名無しさん
NGNGshutdown closesocketするだけではだめなようです。
OSはWindows2000で,MFCではなく素のAPIでやっています。
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNGそして、この場合の再利用の意味とは?
0304301
NGNGいや、相手との接続が急に切断して、また、そのsocket
でconnectできるかとおもったのですが。
見当違いでした。どうも。
0305デフォルトの名無しさん
NGNGとりあえず1チャンネルだけのクライアントは作れたんですけど、2複数のチャンネルを
どう処理したら良いか分かりません。
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNGどんなメッセージを送れば良いんですか?
VCでCAsyncSocket使ってますが、単にSendしてReceiveだと
bufferには「正しいユーザ名とパスワード入れろやボケ」とかえってきます。
0310デフォルトの名無しさん
NGNGHTTPのBasic認証だったら
ヘッダにbase64エンコードしたusernameとpasswordを入れて送るのよん。
0311デフォルトの名無しさん
NGNGどのヘッダが足らんのかは、RFC嫁。
0312309
NGNGレスありがとうございました。
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
ですね。
他にもHostも書かなきゃ駄目で、それに気がつくのに2時間かかりました…
0313ななーしさん@接続しっぱなし
NGNGこのスレ最初から読むのには2時間もかからないよ…
0314デフォルトの名無しさん
NGNGhttp://mentai.2ch.net/prog/kako/960/960830594.html
このスレの26-27がとても参考になりました。
「WinsockによるWindowsネットワークプログラミング」Arthur Dumas 海江田訳、アスキー出版 \3,980-
「Winsock2.0 プログラミング」Lewis 江村豊監修 ソフトバンク \5,800-
で、この2冊を買ってお勉強中です。
やっぱりネットに転がっている情報だけでは基礎が勉強できませんね。
0315デフォルトの名無しさん
NGNG今PerlのIO::Socketを使用して、サーバプログラムの基礎実験をやってるんですが、
メッセージを送受信できるサンプルプログラムを拾ってきて、動作を確かめていてたんですが、
サーバ、クライアントがどちらもLANの内側にある場合問題なく動作するんですが、
クライアント側を、ダイアルアップ経由で接続しようとすると、うまくいきません。
httpや、smtpなどのサービスは普通にアクセスが可能なのですが・・・
サーバ側のFireWallの問題かとも思い調べてみたのですが、使用しているポート(5000)は、
iptables -A INPUT -p tcp --sport 5000 --dport 5000 -m state --state ESTABLISHED,RELATED -j ACCEPT
として、許可するようにはしているのですが・・・
もう、ダメポです・・・、誰か何か情報無いですか?
ちなみに、サーバのホストはVine Linux 2.5です。ルータもこいつです。
0316デフォルトの名無しさん
NGNG板違い
ここはプログラミング板です。さようなら
0317デフォルトの名無しさん
NGNGDIONなのに。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG0322318
NGNGCです。
0323デフォルトの名無しさん
NGNGこの本の日本語版ってないのかな。
0324デフォルトの名無しさん
NGNGありません。自分で一から書いてください。
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG2台のPCをインターネットを介して、TCP/IPで接続させる実験を行っています。
片方のPCはWindows2000(SP2)で、もう片方のPCがWin98です。
ソフトの開発はVC++6.0,Winsockで行っています(MFC等は不使用です)。
二台のホストをそれぞれホストA、ホストBとしますと、
ホストAでconnect関数を呼んだとき(=SYNフラグをセットしたパケットを送ったとき)、
ホストBでaccept関数が呼ばれていれば、接続が行われますが
(=SYNとACKフラグがセットされたパケットが返りますが)
まだホストBでaccept()が呼ばれていない場合、
RSTとACKのフラグがセットされたパケットがホストBから返りますよね。
connect関数を一度呼ぶと、相手がaccept関数を呼ばない場合、この処理が3回行われて
最後にconnect関数からSOCKET_ERRORが戻りますが、ここで、
1回ないし2回だけRSTとACK付きのパケットがホストBから戻り、その直後に接続が確立
する場合があります。
今回僕が悩んでいるのは、この状態で接続が確立された場合に限って、接続が2分間で
切断されてしまう問題です。自家内LANのルータ等にそのような設定をした覚えが
ありませんし、外部のネットワークでそのように設定されている事があるのでしょうか?
どなたか、お気づきの事がありましたら、お教え頂ければと思います。
プロバイダは、Yahoo!BBとフレッツISDN(DION)を使用して実験しています。
0328デフォルトの名無しさん
NGNGそして単純にテストプログラムのミスだと思われ。
0329326
NGNGご返答ありがとうございます。
えっと、ホストAがクライアント、ホストBがサーバです。
>そして単純にテストプログラムのミスだと思われ。
それが、他の方が作成されたファイル送受信のフリーソフトを使ってみても、同様の
症状が出るのです。
症状を更に詳しく書きますと、この接続状態になってから2分間が経過した後に、
send関数を呼ぶと、WSAECONNRESET(10054)のエラーが返るのです。
2分間は通常の送受信が行えます。サーバとクライアント、どちらでもWSAECONNRESETが
返ります。2分経ってもsendを呼ばないとESTABLISHEDのままです。
どうかよろしくおながいします。
0330デフォルトの名無しさん
NGNG環境変えてみたら?
0331326
NGNGなるほど、そうですね。
夜に知り合いに協力してもらって、実験してみます!
0332326
NGNGYBBとケーブル会社のプロバイダを使った実験では、326の様な問題は
発生しませんでした。
…お騒がせしました…。
0333デフォルトの名無しさん
NGNGmain()をつかった、Win32コンソールクライアントをつくっています。
CAsyncSocketから派生させたソケットクラスのOnConnectとか
OnReciveとかをオーバーライドして非同期通信を実現したいのですが、
オーバーライドした関数は呼ばれることがありません。
通知を受け取るためにはどうしたらよろしいのでしょうか?
VC++6.0でプロジェクトを作成する時に”Win32 Console Application” の
プロジェクトを選択して”MFCをサポートするアプリケーション”をチェックしています。
CAsyncSocketを使うためにafxsock.hをインクルードしています。
オーバーライドしてもビルドは問題なく出来ます。
なにか、根本的にわかってないようです。
同じような経験をした方はいらっしゃいませんか?
0334
NGNGdouble inprod(doble a[],double b[],int c);
はどのように書けばいいのでしょうか?
ご教授おねがいします
0335Rina ◆tI333vNE
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1026138039/l50
内積求めるのが「ネットワークプログラミング」でしょうか?
0336デフォルトの名無しさん
NGNG当たり前じゃん
0337Rina ◆tI333vNE
NGNG23になるこの年まで全然知らないでプログラミングしてきました.
欝駄子嚢.
0338デフォルトの名無しさん
NGNGネットワーク機器の構成を書いてもらえると何かわかるかもしれんぞ
0339ななーしさん@接続しっぱなし
NGNGSocket programmingがネットワーク機器に依存しないように?
matrix programmingもネットワーク機器に依存しません。
0340デフォルトの名無しさん
NGNGネタは余所でお願いします。
0341デフォルトの名無しさん
NGNGMFCスレの方がレスつきやすいと思うが。
C*Socketは不可視ウィンドウでメッセージを受けてるから
メッセージループがないとイベントを受け取れない。
0342デフォルトの名無しさん
NGNGINもOUTもいらないはずのコマンドで10022エラーがかえってくる(エーン
0343326
NGNG遅レス、ごめんなさい。
自家内LANと書きましたが、今手元には無く、月曜日にならないと
LAN環境に近づけません。月曜日以降に問題が解決できなければまた
書き込みさせてください。よろしくお願いします。
0344デフォルトの名無しさん
NGNG別の処理をしようと思うのですが、「取得し終わった」というのは
どのように検知したらよいのでしょうか?
0345デフォルトの名無しさん
NGNGcloseを受信したらでいいんじゃなーい(適当
0346デフォルトの名無しさん
NGNGCAsyncSocket::OnCloseで受けれということでしょうか。
OnCloseはたしかに呼ばれるんですけど、呼ばれた後にも
OnReceiveで受信が続く場合があるんですが・・・
0348デフォルトの名無しさん
NGNGうそこけ
0349346
NGNG0350デフォルトの名無しさん
NGNGんですが、100バイトくらいにするとOnReceiveの途中で
OnCloseが呼ばれてまたOnReceiveが呼ばれます。
0351デフォルトの名無しさん
NGNGじゃあcontent-lengthは?
0352デフォルトの名無しさん
NGNG今はそれでやっています。
まぁそれでできてるので「じゃあいいじゃん」かもしれないですが
できれば取得し終わったタイミングがわかった方がスマートかなぁと
思いまして。
0353デフォルトの名無しさん
NGNGいや、そっちが普通だと思うが
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGcloseは冗談のつもりだったのに
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGありがとうございまつた。
0358デフォルトの名無しさん
NGNG0359ななーしさん@接続しっぱなし
NGNGそれって、
http://www.microsoft.com/japan/developer/library/vcmfc/_mfc_casyncsocket.3a3a.close.htm
http://home.postech.ac.kr/~ayo/winsock-faq/newbie.htmlの2.14
辺りの話と違いますの?
順序保証したいなら、後ろの奴みたいにハンドシェイクするんじゃない?
0360デフォルトの名無しさん
NGNGMSDNに書いてあるぞ
http://msdn.microsoft.com/library/en-us/winsock/wsapiref_6jn6.asp
0362ななーしさん@接続しっぱなし
NGNG最後の行余分だったな…
>>360
たぶん、CAsyncSocket::OnCloseは、
FINフラグの立ったTCP segmentを受けるとraiseするんだよね。
0363デフォルトの名無しさん
NGNGldap_init()でInitしたあと、
ldap_set_option()でLDAP_OPT_PROTOCOL_VERSIONを
設定しようとしたらアクセスバイオレーションで落ちてしまいます。
まあ、そこは省略もできるのでコメントアウトしたとしても、
ldap_bind_s()も失敗します。
いろいろと検索したのですが解決になる答えをみつけられません。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netdir/ldap/initializing_a_session.asp
個々のサンプルソースを参考にしました。そのままでは、簡単なコンパイルエラーがでますが、
変数の2重宣言のような簡単なものなのでこの問題には直接関係ありません。
ネスケのSDKを使へとかいうのは無しの方向でおねがいします。
(スレ違いかなと思いつつwinsock.hをwinldap.hが呼んでいるのでここで質問しました。)
0364デフォルトの名無しさん
NGNG比較したようなサイトってないですか?
BSD Socketベースのほぼ共通のソースを使ったものと、
それを基に各プラットフォームに最適化したものなどを
比較しているようなデータが欲しいのですが。
0365デフォルトの名無しさん
NGNG0366364
NGNG単位時間あたりのUDP,TCPの送受信サイズというか
同一ハードで動作するサーバが捌けるクライアント数でしょうか?
とりあえず比較してあるデータであればそれを見てみたいのです。
0367デフォルトの名無しさん
NGNG目的を教えてくれたら俺の持ってる資料を公開してやってもいいぞ
0368デフォルトの名無しさん
NGNGsocketプログラミングできるライブラリは無いでしょうか? 市販のもので有名
なPC/TCPというものがありますが、販売終了だとか・・・。
開発言語はMS-CかTurboCです。例えばMSのLANMANで使えるsocketライ
ブラリとか、その他何か情報あれば教えてくださ〜い。
0369363
NGNG結局解決になってないのですが、
ldap_open()でudpで接続する分にはうまく動作しました。
ldap_init()とldap_set_option()をとおして
ldap_bind_s()をうまく通す方法がありましたら引き続き情報ください。
レスがつきにくいのはスレ違いだから?
0370デフォルトの名無しさん
NGNG>MS-DOSまたはPC-DOSでWinsock APIとよく似た感じのインターフェースで
そんな感じの、オレも探したことあった。けど、無かった記憶。
多分、海外のプログラムマニア系のFTPとかにありそうな気が。または仕様書でも。
PC−DOSっていえば、以前、あれようのブラウザが売られてたから、
IBMに行けばなんとかなるな。無理だけど。
って、そんなん何に使うの?<368
0371370
NGNGオレは使わんが。
ttp://www.asyncsystems.com/tcpip.htm
0372ななーしさん@接続しっぱなし
NGNG> 単位時間あたりのUDP,TCPの送受信サイズというか
混みあってきたら譲り合う方式のネットワークで、
そんな性能追求しても仕方ないと思うぞ。専用のネットワークなのか?
いずれにせよ、
> 同一ハードで動作するサーバが捌けるクライアント数でしょうか?
多数のクライアントを相手にするサーバの性能は、
サーバの作りに強く依存して、network stackにはあまり依存しない。
0373デフォルトの名無しさん
NGNG私自身は,ネットワークプログラミングの事は分からないので,
的外れかもしれませんが.
DOS上でのネットワークプログラムとしては,以下のようなもの
があるのを知っています.
DOSVNC - a DOS Viewer for VNC
http://c0w.inode.at/mjy/dosvnc.html
ソースコードもDLできます.
全然的外れだったら,ごめんなさい・・・・ですが,もし参考に
なれば幸いです...
0374368
NGNG>> 371
ここ数日探し回ったのですが、見つからないですね。教えてくださった
URL、探していた物にかなり近いのですが、高いですね・・・。(T_T)
それにしても、プログラム技術よりも基礎知識がどうも足らないようで
す。DOSでSocket通信をやるにはPacketDriverってやつがいるんです
よね? これはLANカードに付いてくる物や、FTP鯖を探せば手に入る
物もあると・・・。LANMANってのはPacketDriverではないということなの
かな? この辺、もう少し勉強してきます。(やっぱ英語力要るなぁ)
> って、そんなん何に使うの?
仕事なんです・・・。MFCしか触ったことがない新人プログラマに、でき
るかどうか調べてこい、という上司はいかがなものかな・・・と。(藁 ま、
試練ですかね。
>> 373
このソースコード、プログラミングに入ったら役に立ちそうです。どうも
情報ありがとうございます。
しかし、検索エンジンで探し回ってもわからないとき、いつも2chに行き
着いてしまうのは気のせいだろうか・・・w
0375373
NGNG老婆心(ひょっとして甘すぎ ?)だけれど.
参考書としては,
「パソコンTCP/IP教科書」 アスキ− /刊
DOS上のTCP/IPにも触れられている.
「FreeBSD ネットワーク管理ガイド」
ピアソン・エデュケーション /刊
UNIX系OSの FreeBSDの本だが, DOS上のTCP/IPの事にも
触れられている.
プログラミングには,直接関係ないが,2ch内だの
■★▲DOSはまだ現役!
http://pc.2ch.net/test/read.cgi/os/984154754/
■■●DOSでネットワーク●■■
http://pc.2ch.net/test/read.cgi/os/999912322/
あと, >>373で示したのは,
Waterloo tcp/ip (WatTCP)
と言われる DOS上で,TCP/IPを実装したものを含んでいる.
0376ななーしさん@接続しっぱなし
NGNG仕事かよ! 高いなんて言ってないで、
http://www.allied-telesis.co.jp/products/product/software/index.html
とっととここで買え。マニュアルも必ず買え。高いも糞もねぇ。
// まさか、MorphyOne上にportする仕事じゃねえだろうな(プ
0377名無しさん
NGNGJavaでできますか?VBのほうがいいですか?
0378デフォルトの名無しさん
NGNG荒らしプログラムと正直に書け。
0379デフォルトの名無しさん
NGNGどっちでも、OK.
0380デフォルトの名無しさん
NGNGメッセージをやり取りするソフトを作っています。
とりあえずメッセージ送信を、クライアント側からサーバ側へ
"MSG 送信文字列の長さ 送信先ID\r\n送信文字列"
という形式で送り、サーバ側から送信先クライアントへ
"MSG 送信元ID 送信文字列の長さ\r\n送信文字列"
というテキスト形式で送ることにしています。
受信部分は、まずOnReceive()でReceiveにMSG_PEEKフラグをつけて
256文字ほど一旦読み込み、\r\nを文字列検索してそこまでの長さを調べ、
再度\r\nまでをMSG_PEEKなしで読み込んでいます。
その後、読み込んだサイズ情報を元に、再度Receive文で
送信文字列部分を読み込む、という方法です。
しかしこの方法でテストをしているとと、メッセージをいくつかやりとりしているうちに、
急に何をsend()してもサーバに届かなくなってしまいます。
また、そうなるとサーバからのsend()も認識しなくなってしまいます。
上記のメッセージ送信以外の通信(たとえばオンライン・離席中の切替命令)
は何回繰り返してもこのような現象が起こらないため、おそらくこの
メッセージ送受信処理に問題があると思うのですが、どうにも原因がわかりません。
この現象が起こるのは本当にランダムで、同じ文字列を3回ぐらい
送信しただけで起こることもあれば、20回くらいまで耐えることもあり、
全く見当もつきません。
何が悪いのでしょうか・・・?
0381
NGNGsend()の引数を0バイトにして呼び出したら、FD_WRITEは発生するのでしょうか?
これができればデータ送信をFD_WRITEに全部書けるので便利な気がするのですが。
もし他に方法があれば教えてください。
0382デフォルトの名無しさん
NGNG発生しないよ
どうも。 残念(´・ω・`)・・・
0384381
NGNGPostMessage(hWnd, SM_EVENT, server, WSAMAKESELECTREPLY(FD_WRITE, 0));
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG旨いゆで卵の作り方だ。
まず、生卵を用意する。
普通は鮮度が良い程良いのだが、この調理法では古い卵でも旨くなるのであまり気にしなくて良い。
次に電子レンジに生卵を入れる。この時注意して欲しいのは
●皿を使わず、直にターンテーブルの上に置く。
●ラップ等で包まず裸のまま入れる。
●卵は1個より3〜4個置いたほうが旨くなる。
あとは、電子レンジを回して3分程チンするだけだ。(500W時)
実際に茹でてないので厳密には茹で卵とは言えないが、そこはご愛嬌。
今までの卵料理とは段違いの旨さ、ふわふわ感なので是非試してくれ。
因みに食すときは酢醤油をお勧めする。
0388デフォルトの名無しさん
NGNG板違いというか.....
それ実行したら・・・・・.
以前,パソコン一般板にそういうスレが立ってたことが.
で実行した奴が・・・・・XXXXXX(笑).
0389380
NGNG「OnReceiveを受けて受信処理を行う場合、Receive()は1回しか使えない」
というのが原因でした...
0391デフォルトの名無しさん
NGNG容易に類推できそうなものだが
0392デフォルトの名無しさん
NGNGよく見たら "Port3" になっていることに気がつき、感心した。
0393390
NGNGWinsock2.0プログラミングから引用
第4章 非同期転送モードの使用方法 P94 FD_READの項
「大量のデータを受信するアプリケーションの場合は、一度のFD_READ
メッセージにつき何度かrecvまたはrecvfromを呼び出すことで
データスループットを大幅に増やす方法もあります。」
とあるのですが、これは間違っているということでしょうか?
0394デフォルトの名無しさん
NGNGそのためにはWSAASyncSelectでフラグを落とせって
その周辺に書いてないか?
CASyncSocketではそういう細かい制御が
できないんじゃないの?
0395394
NGNG> With these semantics, an application need not read all available data
> in response to an FD_READ message--a single recv in response to
> each FD_READ message is appropriate. If an application issues
> multiple recv calls in response to a single FD_READ, it can receive
> multiple FD_READ messages. Such an application can need to disable
> FD_READ messages before starting the recv calls by calling
> WSAAsyncSelect with the FD_READ event not set.
0396デフォルトの名無しさん
NGNG最初にFD_READが来てrecvしたあと、まだバッファにデータが残ってたら
すぐに再びFD_READが来るでしょ?
で、連続してrecvすると、バッファが空なのにFD_READが
(最初のrecv直後の段階で)既に送られているので、
そのFD_READ時にrecvが失敗する(WSAEWOULDBLOCK)って話じゃないの?
2回recv出来ないとか、WSAAsyncSelectのモードとかじゃなくて、単に、
「recvが-1(BLOCK)を返しても正常に動作するように作ればいい」
ってことだと思うけど。
0397390
NGNG本にそのような記述はありませんでした。
>>396
ということは、recv==-1を考慮していない場合にのみ
(そんな実装アリ?)、recvを2回以上呼んではいけない
といういう意味でしょうか。なら合点がいくのですが。
0398デフォルトの名無しさん
NGNGなら本がおかしいんだろ。MSDNライブラリよりどこの
馬の骨か知れない本のほうを信じるのか?
どっちにしろ389はCAsyncSocket限定の話っぽいから
たいした問題じゃないが
0399デフォルトの名無しさん
NGNGHookの説明には多数の間違ったサンプルが付属してたけどね。
0400デフォルトの名無しさん
NGNG回して実行すると、タイミングによっては片方のポートがconnection refuse の errno
で失敗するんですが、通常、同一ポートでデータの送受信をしたい場合ってどういう
風に実装するんでしょうか?
0401デフォルトの名無しさん
NGNGちなみに通信はUDPです。
0402デフォルトの名無しさん
NGNGもし規定に従ってなかったら、それはMSの実装がおかしいだけ
そもそも、Such an application can need to disable がどういう意味なのか、
よくわからんのだが、重要なのはcanとneedのどっちだ?
0403デフォルトの名無しさん
NGNG普通にconnectもしくはaceptしてsendもしくはrecvするだけだが?
connection refuseになるタイミングってどんなの?
0404デフォルトの名無しさん
NGNG>>403
すみません。その後、自己解決しました。
相手のポートをstruct sockaddr_in型のデータに設定する所でネットワーク
バイトオーダーに変換してませんでした。つまりバグでした。
正しく設定したらできました!
0405デフォルトの名無しさん
NGNG>255.255.255.255は全アドレスに対するブロードキャストだよね。WANも含む。
なんて大嘘に誰も突っ込まないのはなぜ??
つーか、>>74なんて、納得しちゃってるし(笑)
>実際にはルータが止めるだろうけど、
実際にはって....まるでルータの自主的な安全対策のように書くなよ。
止めなかったら、ルータじゃなくてブリッジになるだろーが(笑)
こいつ、ぜんぜんわかってなさそ・・・
255...をlimited broadcastって呼ぶのも知らんのだろうな。
知ってたら、WANを超えるなんて発想もないだろうから。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGWSAAsyncGetHostByName() はなるべく使用したくありません。
0408デフォルトの名無しさん
NGNG無理
0409デフォルトの名無しさん
NGNG一連のスレッド読んでも、とてもそんな流れには見えんけどなぁ
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGお好きなように。
0412410
NGNGんで、それって256だったり1024だったりしませんか?
10万以上のソケットを監視したいんですが、一発じゃできないですかね?
できなかった場合selectでぐるぐる回そうかと思ってるんですが、
wait時間を0で指定するにはtimevalをNULLクリアして渡せばオケーですか?
0413デフォルトの名無しさん
NGNG>10万以上のソケットを監視したいんですが
下手なDoSですが。
0414デフォルトの名無しさん
NGNG/ヽ /ヽ
/ ヽ / ヽ
______ /U ヽ___ / ヽ
| ____ / U :::::::::::U:\
| | // ___ \ :::::::::::::|
| | | | | U ::::::::::::|
| | .|U | | ::::::U::::|
| | | ├―-┤ U.....:::::::::::::::::::/
| |____ ヽ .....:::::::::::::::::::::::<
└___/ ̄ ̄ :::::::::::::::::::::::::|
|\ | :::::::::::::::::::::::|
\ \ \___ ::::::
0415デフォルトの名無しさん
NGNGとりあえずな、
http://www.kegel.com/c10k.html
ここみろ。
0416デフォルトの名無しさん
NGNG10万って、既にTCPのポート数を超えてると思うんだが(^^;
0417デフォルトの名無しさん
NGNGほんとだ・・・。
0418410
NGNGDoSならselect()で待つ必要はないでしょう。
>>415
ありがとうございます。
ですが、standerd lilaryはリコンパイルできる環境ではないんです。
0419410
NGNGんじゃあ、サーバを分けるようにします。
なんにせよ、数万コネクションを処理したいんで、困ってます。
とりあえず、ループしながら100個くらいずつ調べることにします。
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNGまず英語でランはどう書くかから。
0422デフォルトの名無しさん
NGNGハァ? 意味がわからん。standard libraryって何さ?
selectを使うのが必要条件だってことか?
0423410
NGNGそうです。
0424デフォルトの名無しさん
NGNGstdlib
0425デフォルトの名無しさん
NGNGTCPのPORTは関係ないだろ。
問題は、ソケットハンドルだろ。
0426デフォルトの名無しさん
NGNGあとは、10万/FD_SETSIZE 分forkするとかやな、、
0427デフォルトの名無しさん
NGNGコネクション張る以上、こちらのポートも消費されると思われ。
0428デフォルトの名無しさん
NGNGよく考えれば確かにselect()を使う必要はないです。
ていうか、一回acceptして読み込んだら、後はreplyするだけで良かったみたいです。
ソケットの配列でも作って憶えておきます。お騒がせしました。
>>426
それも無謀っぽいですけどね(^^;
staticのエリアが結構でかいんで。
0430デフォルトの名無しさん
NGNGされるから、SRC_PORTが被っても大丈夫じゃないかと思ったんだが、、
0431デフォルトの名無しさん
NGNGいや、だから65536以上のコネクションは・・・
0432デフォルトの名無しさん
NGNGはい、Portではなくてソケットディスクリプタの制限ですね。
0433デフォルトの名無しさん
NGNGあれれ、一回りしているよ、、?
0434デフォルトの名無しさん
NGNGそれは更に上を逝く無謀さだとおもうが(笑)
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG200 processか、、、たしかにきついな、、
0437デフォルトの名無しさん
NGNG無理です。
0438私の名前は名無しです。
NGNGkqueue等の別の手段を考えるべき。
http://www.kegel.com/dkftpbench/Poller_bench.html
kqueueは爆速なんだけど、FreeBSD限定なんで注意。
でも、一度このパフォーマンスを味わってしまうと
もうselectには戻れませぬ。
# NetBSDとかLinuxとかに移植しようとする動きはあるようだけど、
# まだ実用レベルじゃなさそう。
0439デフォルトの名無しさん
NGNG財力にモノを言わせてスケールアウトすべし。
0440デフォルトの名無しさん
NGNG415で既出
0441デフォルトの名無しさん
NGNGclientに細工が要るけど、それくらいの接続数を確保する必要のある規模の
サービスなら最初はロビーに尋ねるんじゃなかろうか。
0442デフォルトの名無しさん
NGNG10万以上のソケット…って時点で誰もがシステムの設計が怪しいって感じると
思うんだけど。もちろん、シェイプアップして10万以上が限界ってなら分かるけど。
結論からいうと1台のマシンじゃ無理。>>415,>>438の方法でも1台で10万近い
ソケットを捌くのは難しい。俺は>>439に一票。そもそも1台でやる仕事じゃない。
0443439
NGNG0444デフォルトの名無しさん
NGNG…「監視」ってんだから同時アクセスじゃねーの? >>410のしたいことが分からんから
何とも言えないが.
0445デフォルトの名無しさん
NGNG0446410
NGNG10万コネクションは最大数ですが、同時です。
ソケットの監視はメンドイんで、定期的に直接眺めることにしました。
select()によるタイムアウト処理はしません。
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGマスタリングTCP/IP・入門編でも読め. 基礎がなってない.
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGパケットじゃなくてソケット監視なのよね。
今考えると激しく意味不明。
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG無理なの?
0457デフォルトの名無しさん
NGNGって言うかそれになんの意味が・・・。
0458デフォルトの名無しさん
NGNGスレッドならselectする必要ないんじゃない?
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNGできるよ。unix方面ではカーネルコンフィグやrlimitの設定が必要だったりするけど。
0461デフォルトの名無しさん
NGNG最近はパフォーマンスも上がってきたことだし、
Javaで10万本スレッド立てれば余裕なんじゃないかな。
0462デフォルトの名無しさん
NGNGどの道、>>460は必要だろ。
0463デフォルトの名無しさん
NGNGスタックのための空間が枯渇しませんか?
0464デフォルトの名無しさん
NGNGjavaならjava.nio使え。
0465デフォルトの名無しさん
NGNG同感。
スレッドを無限に生やしても負荷が低いなんて夢見るなよ。>>461
0466デフォルトの名無しさん
NGNG複数のマシンに処理を振り分けるのが普通だよね。
大規模なwebサービスやってるところのほとんどはそんな感じでしょ。
0467デフォルトの名無しさん
NGNG非分割DLよりも分割DLのほうが転送量を稼げるのは何故なんですか?
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGここに、100の高速なクライアントが同時接続するとする。おっと、QoSは無しだぜ。
素直に計算すると、一接続あたり100Kbpsだわな。
で、ここで、分割DLと称して、同時接続数を101に増やすクライアントが
1つあるとしようか。 このとき、合計200接続で、1接続あたり50Kbpsだ。
101個の同時接続を果たしたクライアントは、十分時間がたつと、
5050Kbpsの帯域を得ることができる。
本当はもっと多くの要素が絡んでくるが、つまりはそういうことだ。
0470467
NGNG早速のレス、ありがとうございます。
キーポイントは「1コネクションあたりの転送量」だと思うのですが、
これは、どのように決定されるのでしょうか?
「1コネクションあたりの転送量」を計算で求めることが可能であれば、
例えば、2台のPC間で、100MBのデータを T秒で転送したいときに
必要なコネクションの数を計算することが出来ますよね?
あくまでも理論値かもしれませんが。
(私にとって)多少内容が難しくても構わないので、
文献等があれば教えていただけませんか?
ずっとぐぐってるんですが、キーワードが絞れなくて
ファイル共有やレンタル鯖情報ばかり引っかかってます・・。
とりあえず、さっき見つけた↓の論文を見つけたので読んでみます。
ttp://www.internetconference.org/ic99/papers/s02p03.pdf
0471デフォルトの名無しさん
NGNG文献も何も簡単な計算で求められるだろうが。ちょっとは考えれ。
0472デフォルトの名無しさん
NGNGオーバーヘッドを除けば、何本張ってもあまり変わらない。
転送時間を制御したいなら、コネクションの数で行うのはナンセンス。
単に送り側がタイマで制御すればよい。
0473467
NGNGすみません、考えます。
>>472
転送量を絞る制御ならタイマで行えますが、
「1コネクションの最大転送量」を超える量を転送したい場合も
コネクション数を増やさずに、タイマで行えるのですか??
# 私は、大きなデータを短時間で転送したいんです…。
ちょっと頭冷やして考えてきます・・・。
ありがとうございました。
0474デフォルトの名無しさん
NGNGそれから、diskI/O が入るなら、スレッド使って、ダブルバッファリングでの転送も有効。
あと、TCPがなんとかオプション(わすれた)ってのをサポートしてれば、パケットロスで
差分転送だけで済む。Solarisなら、7ぐらいからサポートはじめたやつ。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGいくらなんでもスレッド10万とかいうアイデアよりは
マシだと思いますが
0477デフォルトの名無しさん
NGNGところでnioはバグバグだったようですが安定したんですかね
0478デフォルトの名無しさん
NGNGrs232cだとPurgeCommで入力バッファをクリアできたけど
winsockだとどうするのん?
0479デフォルトの名無しさん
NGNGTCPが勝手にやるベ
0480デフォルトの名無しさん
NGNGスレッドを10万個作るってこと?
0481デフォルトの名無しさん
NGNG何を今更・・・。
0482デフォルトの名無しさん
NGNGできるものなのか?
マルチスレッド使わなくても。
0483デフォルトの名無しさん
NGNGフォンノイマン型コンピュータの性質。
それは置いといて非同期IOってできるの?
0484デフォルトの名無しさん
NGNG非同期IOすればできるんでない?やったことないけど。
0485482
NGNGやっぱ非同期IOとかでないと無理なんかねぇ?
それってwinsock2.0だろ?
知識ないっす。
recvfromとsendtoを交互で呼び出しても、sendtoしてる間は
recvfromが実行されてないわけだからなぁ。
なんかうまいアンド簡単な解決策はないものだろうか・・・。
0486デフォルトの名無しさん
NGNG調べたり、身に付けたりする能力がないなら手を引いたほうがいいと思うよ。
0487デフォルトの名無しさん
NGNG>それってwinsock2.0だろ?
知るかボケ。と。
0488C ◆7j4tWa.I
NGNG質問なのですが、どなたか、下記の一連のレスについて分かる方が
いましたら、ご教授願いたいのですが。。。
http://pc3.2ch.net/test/read.cgi/tech/1027531796/586-594
よろしくお願いします。
0489ななーしさん@接続しっぱなし
NGNG> それってwinsock2.0だろ?
> 知識ないっす。(略)
> なんかうまいアンド簡単な解決策はないものだろうか・・・。
お前の使うOSをここに晒せ。
0490デフォルトの名無しさん
NGNGWinSock1.xの時代からあるんでは?
#だって、スレッドのないWin3.1の解決策だったから。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNGかけますか?
0493デフォルトの名無しさん
NGNG自分に飛んでくるのはもちろん受け取れるぞ。よかったな。
0494デフォルトの名無しさん
NGNG下手は考えるまえに適当なソースでも読め。
select して書き込み可能状態なら sendto は block しないで即かえってくる。
select して読み出し可能な状態なら、recvfrom は block しないで即かえってくる。
そゆことになってるからあまり心配すな。
下手に winsock の非同期 API なんか使うと将来 linux にポートするとき困る。
0495494
NGNGUDP の話だったんですか?
なら thread 使うのが良いと思う。
0496デフォルトの名無しさん
NGNGUDPでパケットを送信する際に一定の間隔を空けなければいけない
なんていう状態ってありますでしょうか?
簡単な送信&受信プログラム(指定サイズのパケットを送信&受信)を作成して
パケットが正しく届くか確認したんですがどうもパケットがロストしてしまうんですよね。
最初はノーウェイトでぶん回してたのが原因かと思い、20パケット送ったら10msスリープ
するとかしてみたんですが、それでもロストパケットが発生するんです。
512バイトのパケットを送ったとしても上記の設定では実質4Mbps程度なので問題ないとは
思うのですが…ドライバとかカードの性能なのか、はたまた他に原因があるのか。
こういった現象について何か知ってる方がいらっしゃったら解決策等を教えていただけませんか?
0497496
NGNG0498デフォルトの名無しさん
NGNGしんどいぞえ
0499496
NGNGう〜ん、OSとかになるとプログラムの作りでは無理やり回避させるしかないのかなぁ。
ちなみに、1パケット毎に1msなら問題なしなんで、やはりノーウェイトで
の送信にある程度の限界があるのかも…いや、そんなはずは…でもなぁ。
0500ななーしさん@接続しっぱなし
NGNGつーか、お前はTCP/IPを一から勉強し直せ。
早めにやっておくと、programがこんがらがる前に取り返しがつく。
packet lossを防ぐのは、TCP moduleの方が君よりずーと得意だと思うぞ。
0501デフォルトの名無しさん
NGNGノーウエイトで送れば、送信側より受信側のほうの処理が遅ければ
ロストするかもよ?もしくは間に入ってるルーターの速度とかは大丈夫?
0502デフォルトの名無しさん
NGNGその回線やPC、他にイロイロ動いてんの?
0503496
NGNGいや、TCPの送出モジュールは既にあって今UDPの送出モジュールを作らなければ
いけないのですよ。
>501
受信側ですか…なるほど、送信側ばかり気にしていた感があるので
受信側の受け方も少し見てみます。
0504496
NGNG他に動いているものはウィルスバスターくらいかと。
回線は完全にローカル環境(PC-HUB-PC)で試験してます。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG誰かご存知の方はおられませんか。
デバッグモードで立ち上げてsockの関数エントリを書き換えるといったものではなく、ただ
単に何を受信し、何を送ったかわかれば良いのですが。
0507505
NGNG受信データをチェックする機能を簡単にoffできたと思います。
それによってPCが相当軽くなった記憶があります。
0508デフォルトの名無しさん
NGNGプログラム側の話なら、WinPCap。
0509ななーしさん@接続しっぱなし
NGNG> つうか、いくらUDPだからってそう頻繁にロストするとは考えにくいんだがなぁ。
そういう仮定自体、全くインターネット的ではないのだが…
>>503
> 受信側ですか…なるほど、送信側ばかり気にしていた感があるので
> 受信側の受け方も少し見てみます。
特定の環境だけで(快適に)動くsoftwareを作っているわけ?
0510デフォルトの名無しさん
NGNGこれはどうよ?
0511496
NGNG特定環境というわけではないですが、まずは他に影響のないような環境で
動作を確認してからと考えています。
0512ななーしさん@接続しっぱなし
NGNG実装で確認する前に勉強した方がいいよ。
> 特定環境というわけではないですが、
なら無駄な試行錯誤になることが確実だから。
頭がネットワークプログラミングに切り替わってない。
0513デフォルトの名無しさん
NGNGいや、解析ダンプしたいわけではなくて、MMORPGの地図ナビゲートツールを作りたい
ので、サーバーから送られてくる現在の座標を得たいのです。
0515デフォルトの名無しさん
NGNGWinpcapを使いますと、Winpcapをインストールしないといけなくなるので
一般配布する事を考慮して独自にキャプチャしたいと考えています。
あとrawモードでキャプチャする方式だとすると、ネットワークカードが入
っていない環境では問題があるのではないかと。
0516デフォルトの名無しさん
NGNGVBスレにいた厨房だな。
Windows自体がそういうAPIを提供していない以上
自分でデバドラ書くかWinpcapとかいうの使うしかないでしょ。
あとネットワークカードが入っていない環境でなんの問題があるの?
素直にWinsock2.2を使えよ
0517デフォルトの名無しさん
NGNGダイヤルアップのことを想定しているのでわ?
0518デフォルトの名無しさん
NGNGWinsock2.2はダイアルアップのも取れるよ
0519デフォルトの名無しさん
NGNGそのVBスレの厨房は誰だか知りませんが、もちろんSockのAPIでどうにかするという
発想では無理でしょう。またネットワーク全体をワッチしたいわけではないので、デバ
ドラを書く必要は無いでしょう。
現にデバドラどころかDLLも使わず、後から起動して自由に特定アプりのパケットを
監視、フィルタリングできるツールというのが出回っているので、本質的には可能な
のでしょうが、考えていたらこれはソケットの知識じゃなく、別の知識が無ければ書
けないような気がしてきました。
>>517
その通りです。
0520デフォルトの名無しさん
NGNG理路整然としているが結局のところは何も語っていないというのがおもしろい。
0521デフォルトの名無しさん
NGNG>監視、フィルタリングできるツールというのが出回っている
ツール名教えれ。
0522デフォルトの名無しさん
NGNG詰まっているんですよ。結局、大体の方向性はこれだろうなというのが分かっていま
すが、突破口が見つからないという。しかし他の人がすんなりやっているからには、
何か知らない出口があるのかも知れないと。それで相談をと。
下にあったVBのスレを探してみますと、似たような事をしたい人が質問をしていました。
すると653で
Winsock2.2を使えばCでちゃちゃっとできるが
VBでもAPIさえ定義すればちゃちゃっとできると思う。
というアンサーが。本当にちゃちゃっと出来る事でしょうか。
0523デフォルトの名無しさん
NGNGacceptしたソケットに応答するためsendするときに、すでにクライアント側でshutdown/closeされている場合、
sendすると例外が発生してプログラムが終了してしまいます。
これを回避するには
・応答するためのsocketがすでに閉じられていないか判定する
・sendで例外が発生しても終了しないようにする
のどちらかだと思うのですが、どちらでもいいので対処法を教えて下さい。
0524デフォルトの名無しさん
NGNG例えばWPEです。他にはhttp://treds.co.uk/ragfiles/あたりなどからも何か手に入る
かと思います。
0526デフォルトの名無しさん
NGNGWindows Packet Editor 1.3なるものを落としてみたが、
"WSKGSPY.VXD" なるファイルがついてるし、
>This tool work under w95 and w98 only.
ってかいてあって、WindowsXPでは起動しねーし。
つか、vxdの役割はわかっているのか?>524
0527デフォルトの名無しさん
NGNGWPEは確かにVXDがついていますが、これで組んだ実行形式のフィルタはVXD無し
で動くようです。
NT系でやるには、WPE Proの方を使います。これにはDLLがついていますが。
0528デフォルトの名無しさん
NGNGWinsock2.2でぐぐってみろ、そのまんまが見つかるから
0529デフォルトの名無しさん
NGNGSIGPIPE喰らってんじゃないの?
signal(SIGPIPE, SIG_IGN)しときな。
0530デフォルトの名無しさん
NGNGすんまそん、素のCなんです。
0531デフォルトの名無しさん
NGNGあ、PIPEですか。やってみます。
0532496
NGNG直接の原因なんですが、socketの受信バッファが足りてませんでした。
WinPCapにて送信側、受信側のパケットを監視したところパケットはロストせずに
届いてたので、その辺から510のページ見て受信バッファの設定して…
って感じでした。
皆さんありがとうございました。ほんと、助かりました。
0533デフォルトの名無しさん
NGNGできますた。ありがとうございます。
0534デフォルトの名無しさん
NGNGもしこれの事でしたら、もう何ヶ月か前に見たのですが、ちょっと違うのです。
というのは、パケットを見るだけなら良いのですが、フィルタができないものでして。
http://homepage2.nifty.com/spw/hint/PacketDump.html
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGおいおい。フィルタってIPやポートでするんだろ。
だったら受信したパケットにIPやポート番号が入ってるんだから
それを見るってことだよ。
君はCOBOLerか?
0537デフォルトの名無しさん
NGNGTCPの**番ポートだけをキャプチャし、それ以外は捨てる、
と言うような意味。
おそらく、どこかの板の方言で、横取ったパケットを、ルールに従い
書き換えて元々の通信しているホストにつかますことを、
「フィルタ」と呼ぶのではないでしょうか。
いずれにしても、506はコテハンにして、用語を慎重に選択すべきだとおもふ。
0538デフォルトの名無しさん
NGNG混乱させないでくれよ。
>>506の言ってるのは前者でいいだろ
0539漏れはコテハソ
NGNGこれは失礼しました。
おっしゃる通り、この場合のフィルタとはチート用語の意味のフィルタでして。
一般用語のフィルタリングとは全く意味が違います。
用語には気を付けます。
>>538
後者なのです。
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGMMORPGっての知らないからわからないのかな。うーん。
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGそうだよねー。そう、思うよね。
0545漏れはコテハソ
NGNG場合によっては余計な刺激となる部分を隠している事に気付かれたのでしょう。
>>542
チーターの世界の隠語だと思います。
何でフィルタもとい、パケットの編集を要するかと言うと、いや別に編集はできな
くても良く、送信できる必要があるだけですが、こちらからコマンドを送ると座標
が返ってきたり、周囲にある障害物の情報が返ったりするので、ナビツールとし
て成り立たせるためにはパケットを送信する必要があるためです。
0546(・∀・)
NGNGのPGやってるんですが、UDPソケットでクライアントがconnectして、readおよび
writeを使った送受信ってどうやるんですか。
サーバ→read
クライアント→write
ではじめのやり取りはできるのですが、そのあと
サーバ→write
クライアント→read
とやっても、サーバ側に、相手がわからんというエラーで
落ちちゃいます。
UDPでサーバ側のwriteはできないのでしょうか?
もしできるのなら、例をみたいのですが。
環境はRH7.2のLinux環境です。
0547デフォルトの名無しさん
NGNGUDPでConnectはしませんが、何か?
0548デフォルトの名無しさん
NGNG>クライアント→write
>ではじめのやり取りはできるのですが、
マジですか!?
0549デフォルトの名無しさん
NGNGUDPとTCPの違いを勉強しなおしてから出直してください。
0550デフォルトの名無しさん
NGNG0551(・∀・)
NGNGテストしてるんですが、どうしてもUDPでwrite、readの送受信が
やりたいんです。
0552デフォルトの名無しさん
NGNGテストしてるんですか?どうしてもUDPでwrite、readの送受信は
できないんです。
0553デフォルトの名無しさん
NGNGテストしてるんですか?どうしてもUDPでwrite、readの送受信は
できないんです。
0554デフォルトの名無しさん
NGNGテストしてるんですか?どうしてもUDPでwrite、readの送受信は
できないんです。
0555デフォルトの名無しさん
NGNGなんか、ここで聞くやつは、わかってないくせに生意気な態度のやつが多いな。
0556デフォルトの名無しさん
NGNG要はクライアントもサーバーにしなきゃいかんのだぞ
接続って概念がないんだぞ
ただ送るだけなんだぞ、ただ来たパケットを受信するだけなんだぞ
0557(・∀・)
NGNGばかみたい。
ちなみに、UDPでもクライアントがconnectすればサーバ側のreadにたいして
writeでデータおくれます。
逆ができなくてこまっていたんですけど。聞いてもむだみたい。
0558デフォルトの名無しさん
NGNGそうですね。無駄です。さようなら。
0559デフォルトの名無しさん
NGNGソース晒してみろ。オレが添削してやるよ。
0560デフォルトの名無しさん
NGNGなんで、sendto や recvfrom 使わないの?
0561学生
NGNGh_addr_list[0]をに格納されているアドレスを10進数方式で表示するプログラ
ムをつくっているんですけど、アドレスがうまく表示されません。
ちなみに環境はRedHat7.3+gcc2.96です。
#include <netdb.h>
#include <stdio.h>
main() {
struct hostent *ht;
char *host = "www.2ch.net";
if (ht = gethostbyname(host))
printf("The address of %s is %s\n", host, inet_ntoa(ht->h_addr_list[0]));
else
printf("error\n");
exit(0);
}
0562デフォルトの名無しさん
NGNGが文字列へのポインタとはとても思えない。
それにたいして、%sを使用しているところ。
0563デフォルトの名無しさん
NGNGUDPでsendtoしてパケットを送信すると、いちいちIPアドレスから
相手のMACアドレスを引いて送信することになるんですよね?
かなりのタイムロスになる気がするんですが、コネクションを張れば解消されるのでしょうか?
0564学生
NGNG>> inet_ntoa(ht->h_addr_list[0])
>が文字列へのポインタとはとても思えない。
manで調べたら、
char *inet_ntoa(struct in_addr in);
と出ましたが、これって文字列のポインタじゃないんですか?
あと関係ないかもしれませんが、ht->h_addr_list[0]をstruct in_addrのポイ
ンタにキャストしてみたんですけど、結果は同じでした。。。
ちなみに実行結果は
The address of www.2ch.net is 24.152.4.8
となります。(本当は64.71.145.43)
0565デフォルトの名無しさん
NGNG一度IPアドレス→MACアドレス変換をした結果はarpキャッシュに入るから、
毎回MACアドレスを引きにいったりはしないよ。
「コネクションを張れば」って、UDPにそんなものはないです。
UDPに対してconnect()ができるのは、sendto()で毎回宛先アドレスを指定
するかわりにあらかじめ宛先を決めておける、程度の意味しかない。
connect()してプロトコル上何か違いがあるわけじゃないです。
0566デフォルトの名無しさん
NGNGinet_ntoa()は文字列へのポインタを返す。だからそれに対しての %s
は間違ってはいない。
=== freebsd の man より ===
The routine inet_ntoa() takes an Internet address and returns
an ASCII string representing the address in `.' notation.
^^^^^^^^^^^^
===========================
問題なのは、inet_ntoa()渡している引数の方だろう。
>>564よ
struct in_addr tmp;
memcpy(&tmp, ht->h_addr_list[0], sizeof(tmp));
printf("%s\n", inet_ntoa(tmp));
やってみ。
0567デフォルトの名無しさん
NGNGh_addr_list[0]はアドレスそのものが格納されてるわけじゃなくて、
アドレスへのポインタが入ってる。
inet_ntoa()にはstruct in_addrへのポインタじゃなくて実体を渡すように
なってるので、inet_ntoa(*(struct in_addr *)ht->h_addr_list[0])
にするとちゃんと表示されたよ。
初期化(無効な初期値の設定)は何を代入すべきでしょうか?
int port = 0;
int sockfd = 0;
とかでいいのかな?
0569デフォルトの名無しさん
NGNGいわゆるunixでは、0は少なくともfdとして有効な値だから避けたほうがいい
portは0は使われないという保証があったっけ?
0570デフォルトの名無しさん
NGNGport は別に初期化しておく必要はあまりないな。
作るソフト次第でデフォルトポートを設定する。
0572デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNGshortがデフォルトてunsignedな処理系って見たことないぞ
0578ななーしさん@接続しっぱなし
NGNGちゃんとサーバ側でもconnect(2)しているの?
UDPのconnect(2)って、kernel内のsocket構造体に、
「このUDP socketの宛先はここなのよん」と書き込むだけ。
>>546
> サーバ→write
> クライアント→read
>
> とやっても、サーバ側に、相手がわからんというエラーで
> 落ちちゃいます。
やってないから、「サーバ側『で』」エラーが起きちゃうんじゃねーの?
0579デフォルトの名無しさん
NGNGそりゃchar以外の無印整数型がunsignedだったら規格違反だし
0580デフォルトの名無しさん
NGNGHTTP等のプロトコルでノイズの対処はどのようにすればいいのでしょうか。
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG石橋を叩きて渡る?
羮に懲りて膾を吹く?
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGwin32環境?
0602デフォルトの名無しさん
NGNGリンクの種類を知りたいのなら OS 依存。
IP reachability を知りたいのなら適当なホストへの到達性を調べる。
0603599
NGNG0604デフォルトの名無しさん
NGNGだったらwininetでMSDL調べるべし。
0605599
NGNGRasEnumConnectionsで出来ました。
でもこれってADSLなどの環境でもRASPPPoE使われたら、ダイヤルアップと判断しちゃいますよね。
それはどうしようもないか・・・。
0606デフォルトの名無しさん
NGNGRas系のAPIで接続に使われてる回線の種類を取得できない?
0607デフォルトの名無しさん
NGNGRASDT_PPPoEになるのはXPのPPPoEを使った場合だけみたいだけど
RASPPPoEではどうなるのかむしろ報告きぼんぬ
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1028580373/530-
0610デフォルトの名無しさん
NGNG現在、OpenSSLを実装して、通信しようとしていますが、SSL_connectでこけます。開発は、C言語でWinsockです。
SSL_library_init()
SSL_load_error_strings()
SSL_CTX_new()
connect()
SSL_new()
SSL_set_fd()
SSL_connect()
の順序にて、関数を実行していますが、他に必要なイニシャル(SSL_connect前にすべき事)はありますか?
本もWebも調べたのですが、ほとんどのサンプルは、これと同じように書いてあります。
(もちろんconnect()は完了してから、後の処理を行ってます)
0611610
NGNG0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNGint sd;
SSL_CTX *ctx;
SSL *ssl;
sd = socket(AF_INET, SOCK_STREAM, 0);
connect(sd, (struct sockaddr*)&server, sizeof(server));
SSL_load_error_strings();
SSL_library_init();
ctx = SSL_CTX_new(SSLv2_client_method());
ssl = SSL_new(ctx);
SSL_set_fd(ssl, sd);
SSL_connect(ssl);
0615デフォルトの名無しさん
NGNGどこそこの部分でXXなエラーがでるとかなんとか言えよ。
それと通信相手のこともな。(HTTPS鯖か?)
0616610
NGNG>>610のSSL_connectの戻り値が、0で終わります。
それ以前の関数は、全て正常に実行されますので、他にイニシャルが足りないのかなとか思っちゃいました。
相手先は、HTTPS鯖です。
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGl_onoff=1;
l_linger=0;
この設定でshutdwon/closeをしてもTIME_WAITになるときとならないときがあるんですが、
原因と対処方法が分かる方がいれば、教えて下さい。
0619デフォルトの名無しさん
NGNGhttpでユーザー名とパスワードを設定したいのですがどうすればいいでしょうか?
今のところInternetSetOptionを使うのだと言う事はわかっているんですがうまくいっていません。
InternetOpen->InternetOpenUrl->InternetSetOption->InternetReadFile
の順でやってみていますが今のところ
401 Authorization Required
です。
0620デフォルトの名無しさん
NGNGUser_AgentがJava1.3.1_02になるんですが、
これを変更するにはどうしたらいいですか?
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGパケットを解析すれば良いのでは?と思うんですけど。
間違ってたらごめん。
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=HttpURLConnection+user+agent&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
とりあえず、Googleぐらい使ってから来い、ボケが。
0626デフォルトの名無しさん
NGNGとりあえず調べたことある。そのときに
HttpURLConnection.setRequestProperty( "User_Agent","agent");
ってあったんだが、そうすると
User_Agent: Java1.3.1_02
User_Agent: agent
の二つ出てくるんですが
0627デフォルトの名無しさん
NGNG1.4.1で試した?
0628デフォルトの名無しさん
NGNGというよりも自分の環境を列挙しないと
誰も答えてくれないよ。
0629デフォルトの名無しさん
NGNGVBにはねーだろ。arpコマンドの出力を加工すれば?
同じサブネットのやつしか取れないけどな。
0630デフォルトの名無しさん
NGNGAPI 呼ぶしかない。Windows98 以降 or WindowsNT 4.0 (SP4) 以降な
ら...
http://www.mitene.or.jp/~sugisita/family/papa/vb/index.html
を参照すればいいらしい。
0631621
NGNGありがとうございます!ありそうな感じです。いろいろと調べてみます。
0632デフォルトの名無しさん
NGNGサーバープログラムのサンプルってないですか?
0633デフォルトの名無しさん
NGNGwin32 ネットワークプログラミング
みたいな
0634デフォルトの名無しさん
NGNGとかではいかんのか?
0635デフォルトの名無しさん
NGNGどのようなソフトがあるでしょうか?
0636デフォルトの名無しさん
NGNG「そういうソフトをつくれ」
になるわけだが。
0637デフォルトの名無しさん
NGNGそこのところを、なにとぞよろしゅうお願いします。
0638デフォルトの名無しさん
NGNGよくワカランが、多分似たようなモン。
でも本当に板違いなんで、回線切って首吊って氏んでね☆
0639デフォルトの名無しさん
NGNGさすがです。さんくす。氏ぬのはかんべんしてね☆
0640デフォルトの名無しさん
NGNG(TCPViewのようなもの:http://www.sysinternals.com/ntw2k/source/tcpview.shtml)
LocalAddress/Port、RemoteAddress/Portまで取得できています。
このコネクションを確保しているアプリケーションを特定する方法はあるでしょうか?
ターゲットはWindows2000です。
(WindowsXPのAllocateAndGetTcpExTableFromStackみたいなのが欲しいのですが……)
0641デフォルトの名無しさん
NGNGこの呼び出しをほかのスレッドから強制終了させることはできないでしょうか?
やはり、TerminateThreadとか使わないといけないんでしょうか?
0642デフォルトの名無しさん
NGNGgethosybyname
そんな関数はありませぬぞ
0643デフォルトの名無しさん
NGNG0644641
NGNG0645デフォルトの名無しさん
NGNGあの、長ったらしい非同期の方をつかいなはれ
WSAなんとかの方。
WSAAsyncGetHostByNameぞなもし?
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNGhttp://www.kohala.com/start
http://www.hackcanada.com/hackcanada/media/hnn090899.html
0648デフォルトの名無しさん
NGNGだめ?
0649デフォルトの名無しさん
NGNG簡単な方法ありませんか?
(正攻法だとローカルIPアドレス(192.168.〜とか)しか取得できないみたいなんで)
TAの設定見に行くしかないでしょうか?
0650デフォルトの名無しさん
NGNGつないでみて、教えてもらうしなないでしょう。
0651649
NGNGありがとうございます。
検索してもその方法か、TAの設定ページ見に行く方法しかありませんでした。
(後者は機種限定の様で。)
どっちにしてもプログラムで扱える様に加工しないといけない様です。
めんどっちいのでまたの機会にします。
0652名無しさん@接続しっぱなし
NGNG# traceroute -m 2 www.2ch.net
の結果を加工。
0653デフォルトの名無しさん
NGNGsend()やrecv()って文字列で送受信するように決められてるらしいのですが
それ以外はintとかおくるにはどうすればいいのでしょうか?
intでしていてcharでキャストとかやってみたんですがどうもできないみたいで・・
0654デフォルトの名無しさん
NGNG歴史的事情からchar*になってるけど、実際はバイト列と思ったほうがいいです
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG文字列じゃねぇよ。バイト列だ。
int value=123;
send(socket, (char*)&value, sizeof(value), 0);
でやれ。
0657656
NGNG0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNGホストバイトオーダーが同じホスト同士だったらいらんよね?(一応確認
0660653
NGNGみなさんレスありがとう!!
int brf[100]
send(socket, (char*)&buf, sizeof(value), 0);
でいけるでしょうか?ためす環境がなくて・・・。前このようなかんじでやってできなかったもので
0661653
NGNGint buf[100]でした;;
超ド級初心者でごめんなさい・・・
0662デフォルトの名無しさん
NGNGつっかsizeof(value)じゃなくてsizeof(buf)だな
0663デフォルトの名無しさん
NGNG&が余分なんじゃない?
0664653
NGNGint buf[100]
send(socket, (char*)&buf, sizeof(buf)0);
みたいなのでいいんでしょうか?
かなりばかなしつもんかもしれないんですがcharは8バイトでintは32バイトぐらいで違うと思うんですが
大丈夫なんでしょうか?
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGあ,>>663も見れ。
>charは8バイトでintは32バイトぐらいで
?????????????????????????
0667デフォルトの名無しさん
NGNG>>664は単位の勉強も必要と思われ
0668デフォルトの名無しさん
NGNGint a[2] があったら,内部では
______________
|0123|0123|
~~~~~~~~~~~
↑a[0] ↑a[1]
となっていると考えれ。そんで, (char*) aとすると,
__________________
|0|1|2|3|0|1|2|3|
~~~~~~~~~~~~~~~
となると考えよ。
0669653
NGNGみなさんこんな僕にレスありがとう!!
668さん丁寧な説明ありがとう、じゃーデータの損失とかはなく、気にしなくていいってことですね!
勉強してるんですがおいつかなくて;;;
0670デフォルトの名無しさん
NGNGネタにマジレスカコイイ
0671デフォルトの名無しさん
NGNG>データの損失とかはなく、気にしなくていいってことですね
そうだ。値のキャストとポインタのキャストは違うと思え。
値のキャスト: キャスト先のバイト数に合わせられる
ポインタのキャスト: キャスト先のポインタ型であると”見なす”
0672デフォルトの名無しさん
NGNGその図は・・・ネタ?
0673デフォルトの名無しさん
NGNG初心者に教えるには最適だと思うが,何か?
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNGTCP ならデータの損失 (欠落が正しい) は無いと思っていいが、送信元が
10バイト送っても、受信側で 9バイトしか受信できない時があるから気をつけて
ね。残りの1バイトは、もう一回受信すると読める。当然逆 (送信元が 10バイト
2回送ってるのに、受信側で 20バイト読める) もあるからね。
昔、ちょっとはまった事あり。
0676デフォルトの名無しさん
NGNGたぶん>>669で言ってるのは話の流れからしてキャストによるデータ損失のことだと思われ。
0677デフォルトの名無しさん
NGNG>>669へのレスではなく653さんへのレスなら正しいのだとおもう
0678653
NGNGsend()ではstrlen()
をつかっていて
recv()ではsizeof()
をつかってるみたいなんですがこれってどういうことなんでしょう?
0679デフォルトの名無しさん
NGNGそうゆう場合はMSG_WAITALLを指定するというのも有なのでは?
ブロックしていいなら
0680デフォルトの名無しさん
NGNG単に受信データのサイズが可変長だからバッファのサイズを指定してる
だけなのでは?
0681デフォルトの名無しさん
NGNGその本のsizeof()は恐らくC/Sが完全に同期をとってやりとりしてんだろうけど。
0682653
NGNG0683デフォルトの名無しさん
NGNGバイナリデータだと途中に \0 が入ってるかもしれないだろう?
そういうこった。
0684デフォルトの名無しさん
NGNGでrecv()は受信データを書き込むメモリのサイズを指定
だからrecv()のとこでオーバーフローしなければいいんで
ないかな?
でもなんでsizeof()にこだわる必要があるのですか
0685デフォルトの名無しさん
NGNGrecvにsizeofを使うのは、受け取れる最大長を指定するため。
freadやfwrite使った事ある?
0686デフォルトの名無しさん
NGNGchar str[1000];
strcpy(str,"12345");
の時,
send(socket,str,strlen(str),0) // 5バイト送る
send(socket,str,sizeof(str),0) // 1000バイト送る
だ。
sendにsizeof()使ったでも構わんが,それは意図した動作かどうか良く考え。
0687686
NGNG結局send()には実際に何バイト送りたいかを指定するのだ。
>>686の例で,実はstrがバイナリデータで,1000バイト送りたいのならsizeof(str)だ。
0688デフォルトの名無しさん
NGNGchar str[1000];
strcpy(str,"12345");
int len = strlen(str);
send( sd, &len, sizeof(int), 0 );
send( sd, str, strlen(str), 0 );
だってばさー。ウケ側は
recv( sd, &len, sizeof(int), 0 );
recv( sd, str, len, 0 );
だっつーの。
0689デフォルトの名無しさん
NGNG送られてくるサイズ分かってたらいいでしょ?
653を混乱させたいわけ?
0690デフォルトの名無しさん
NGNG送信時にstrlenっつーことは固定長じゃないでしょ?
それに
send( sd, str1, strlen(str1), 0 );
send( sd, str2, strlen(str2), 0 );
ってやられたらどーすんの?
0691デフォルトの名無しさん
NGNG0692653
NGNGみなさんありがとうございます。おかげで理解できました。
たとえば
int buf[1000]
で1から1000まで順番にいれてそれをおくりたいんですが
send(socket, (char*)&buf, strlen((char*)buf),0);
受信側では
int buf[1000]
recv(socket, (char*)&buf, sizeof(buf)0);
でいけるんでしょうか?今ためせなくて・・・
まちがってるところあるでしょうか?
0693653
NGNG0694デフォルトの名無しさん
NGNGintの値に256とかが含まれてたらstrlenじゃだめ
だから、write/readとおなじなの。
0695653
NGNGそれを計算して数値を送るというのに変えたいと思っています。
本では文字列を打ち込むので長さがわからないということでstrlenをつかってたみたいですね。
数値を送る場合はstrlenは使わないほうがいいでしょうか?strlenはNULLまでのサイズということなら。
日本語おかしくてすいません;;;
0696デフォルトの名無しさん
NGNGでも、>>690で書いたように連続でなんか送ってきたり、
一回のrecvで到達/受信しきれないデータがきたりするんで、
早いトコ慣れて、通信仕様(今の場合先頭のsizeof(int)に電文長が収まってる)を決めて
やり取りすることを憶えた方がいいよ、絶対。
0697デフォルトの名無しさん
NGNGネットワークの送受信もその応用なんだけど、そこまでいってないような。
0698デフォルトの名無しさん
NGNG>>695は当然バイナリを送るんだからstrlenなんて*使ったらダメ*。
0699デフォルトの名無しさん
NGNG>>675さんがもういってるけど
0700デフォルトの名無しさん
NGNGあ,マジレスだったのね。スマソ。
>send( sd, str1, strlen(str1), 0 );
>send( sd, str2, strlen(str2), 0 );
>ってやられたらどーすんの?
いや,十分分かってますよ。
でも,プロトコルが区切りを含んでいるやつなら別に構わんでしょう?
例えばHTTP。
0701653
NGNGありがとうございます。ほんと助かります。今周りに聞く人がいなくて;;;
通信仕様覚えた方がいいですね。一回で送れたりできたないってのが僕にとってはかなり壁になりそう;;;
がんばってみます。ありがとうございました
0702デフォルトの名無しさん
NGNG> send( sd, str1, strlen(str1), 0 );
> send( sd, str2, strlen(str2), 0 );
> ってやられたらどーすんの?
どーすんのって、どうしようもないよ。
0703デフォルトの名無しさん
NGNG>>700
0704デフォルトの名無しさん
NGNG\n\n以降はContentLength長読む、ってカンジだよね。
もちろん、プロトコルが区切りってのも分かる。
0705デフォルトの名無しさん
NGNGまだ気にしなくてもいいかもしれない
0706デフォルトの名無しさん
NGNGそうだね。
多分そのうち653から
「○○バイト送ったはずなのに届いたデータが足りないんですぅぅぅ!!」
という質問が来るに1000パケット。
0707デフォルトの名無しさん
NGNG意味がわからない
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG奥が浅いよなー
0711デフォルトの名無しさん
NGNGマルチスレッドのスレッドが別にある罠
0712デフォルトの名無しさん
NGNG重要なのはセッション層より上の手順。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNGOSIは忘れていいです。
0715デフォルトの名無しさん
NGNG相手からのcloseではなく途中の障害で切断された場合の検出に
SO_KEEPALIVE使用するんですけど、検出に2時間っていうのが
一般的にTCPのコネクション切断を知る手段って?
0716デフォルトの名無しさん
NGNG見なす」みたいなルール決める。
0717デフォルトの名無しさん
NGNGtcp_keepidleの値を変更すると、システム全部に影響が出るんで
それは避けたいなっと
0718名無しさん@接続しっぱなし
NGNG> 一回で送れたりできたないってのが僕にとってはかなり壁になりそう;;;
んな奴がTCPでsend/recv使うんじゃね─よ。
シングルタスク、同期通信なら、fwrite/freadで十分だろ。
> 通信仕様覚えた方がいいですね。
全世界共通規格としてのプロトコルと、
あんたのアプリ間通信の局所的取り決めを区別出来るようになりな。
>>713
TCP/IPプロトコル群のレイヤー構成にピッタリマッチしなくても、
>>653は一度レイヤーに付いて学んでおく必要があると思うけど、どない?
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNG#っていうか通信って結局I/Oだし。ソケット使えばファイル操作とほとんど同じだし
0721デフォルトの名無しさん
NGNGそれとは別の話としてまずUDP使ったサンプルとか、
エコークライアントとかでTCPダンプしたほうが理解が早い。
きっと。
0722デフォルトの名無しさん
NGNGsocketが初めての人が多いきがする。
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG相手がソケットなら確実に保証されてない。(Win系はWriteFileね)
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNGFIONBIO指定&ネットワーク上に負荷かけたとき位なのでは?
0727デフォルトの名無しさん
NGNGエラーのことをいってんのか?
0728デフォルトの名無しさん
NGNGですた
0729デフォルトの名無しさん
NGNG次のwriteでエラー(-1)が返るんじゃないの?知らんけど。
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGでも、write()は動作が違うのかね?
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG指定サイズがかけなくても1byteでも書き込めた場合は-1にはならない
です。
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGできるなら、障害によるものか単にデータの送受信が無いだけなのか
で処理を分けたいのです。
かといってアプリケーションが周期的にデータを送信してみるというのも
ちょっと違う気がしています。
4096byte以上を書き込むと発生する気がします
0737デフォルトの名無しさん
NGNGselect()で調べないのかい?
select()==-1 通信エラー
FD_ISSET(sd)==false 届いてない
FD_ISSET(sd)==true 届いてる
→recv() == -1 なにがしかのエラー
→recv() == 0 切断された
→recv() > 0 正常読みこみ
0738デフォルトの名無しさん
NGNG>>723,>>727はアフォ
>>722は言いたいことが良く分からない。programmingに依ると言いたいのか?
>>731の二行目の文は曖昧。
>>731はどういう時に起きると言っているのか不明。それについて>>733は正しい。
ちなみに>>726のようなシステム仕様を勝手に想定するのも良くない。
もちろんマニュアルにそう書いてあれば良い。
0739デフォルトの名無しさん
NGNG相手のプロセスが異常終了した場合はTCPがFINを投げてくれるので
select()で判断できます。
ネットワークの障害でデータが送られてこないのか、クライアントが
ぼけっとしてるだけなのか分けて処理したいのです。
ネットワークの障害ならコネクションの切断とサーバのリソース開放に
もっていって、それ以外ならつなぎっぱなし。
それをアプリケーションが監視しないで済ませようと。
0740デフォルトの名無しさん
NGNGそれはちょと無理じゃないか?
普通はタイムアウトで検出じゃない?
0741デフォルトの名無しさん
NGNGそのタイムアウトというのが問題でして、SO_KEEPALIVEオプションで設定
すると、2時間かかるのです。
この2時間を短くするのは可能なんですけど、システム全ソケットに影響が出て
しまうという。
で、これをソケット単位で設定するTCP_KEEPALIVEというオプションをサポート
している処理系を探しているのです。
0742デフォルトの名無しさん
NGNGすみません。
いってること勘違いしました。
アプリでタイマを持つのではなくTCPのレイヤでってことで。
0743デフォルトの名無しさん
NGNGこういうやつ?(これは林檎さんだけど)
0744デフォルトの名無しさん
NGNGこのあたりのスレッドで役に立つのない?
0745デフォルトの名無しさん
NGNGそゆうのです。
>>744さん
役に立ちました。
なぜかlinuxは実装してないと思い込んでました。
0746デフォルトの名無しさん
NGNGWinsock(Windows)には実装されてないですねぇ。
0747デフォルトの名無しさん
NGNGwinsockって使ったこと無いんですが、大きく違うものなのですか?
0748デフォルトの名無しさん
NGNGいや,基本的にBerkeleySocketそのまま。
だけどオプションとか関数とか色々削減されてる。
まあ普通(?)に使う分には大丈夫。
で,WSA*()っていうWindows独自の関数がたっぷり。
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGなんか最近公開されたAPIでできたようなできなかったような…記憶が微妙。
0751名無しさん@接続しっぱなし
NGNGいや、SO_RCVTIMEOとかWinとSolarisくらいしかない(当時w)のもある。
2000+Winsock2だと、PC-UNIXよりも非同期等が豊富。
>>741は、KEEPALIVEってどういうものか分かってるのかなぁ?
>>749のやり方との違い…説明できるだろうか…
>>739
> ネットワークの障害でデータが送られてこないのか、クライアントが
> ぼけっとしてるだけなのか分けて処理したいのです。
超能力があるのなら、ネットワークもコンピュータもいらないじゃん。
0752名無しさん@接続しっぱなし
NGNGそもそもAllocateAndGetTcpExTableFromStack自体がUndocumented APIでしょ。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/ip_helper_start_page.asp
にも載ってないしねぇ。
2000のiphlpapi.dllに実装されるのを待つしかないのでは? (想像 ハート)
AllocateAndGetTcpTableFromStack→GetTcpTable
AllocateAndGetTcpExTableFromStack→GetExTcpTable
な感じになるかなぁ
0753デフォルトの名無しさん
NGNG>いや、SO_RCVTIMEOとかWinとSolarisくらいしかない(当時w)のもある。
>2000+Winsock2だと、PC-UNIXよりも非同期等が豊富。
あ,そうだったのか。知ったかぶりしてスマソ(恥
0754名無しさん@接続しっぱなし
NGNGいや、95+Winsock1だと>>748のような感じだからいい(w
Winsockといってもピンキリな状況。
しかしより問題なのは、
同じ関数でもWinとWinsockの組合わせで振る舞いの仕様が違うこと!
互換ライブラリなし。アプリごと、マイミドルウェアごとに互換部実装!
version upごとに単調に機能が増えるだけならいいのだが…非連続性が…
0755722
NGNG「ソケットへのwriteは送信バッファへの書き込み」
ということに気づけばそんなに難しい話じゃないんだけども。
733の言うようにwriteの戻り値は書き込んだバイト数になります
これはファイルでも同じなんですがね・・・
ただし、Javaとかいうタワケた環境では取得不可能(1.4から可能らしい)
Javaでネットワークプログラミングを覚えました、なんてもう見てらんない。
0756デフォルトの名無しさん
NGNGけど、TcpViewや多くのFireWallSoftwareは実現してるから何か方法があるはず……
0757デフォルトの名無しさん
NGNGんじゃあ、Win2k持ってる奴は、GetProcAddress(LoadLibrary("iphlpapi.dll"),
"AllocateAndGetTcpExTableFromStack" )してみれ
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG>ただし、Javaとかいうタワケた環境では取得不可能(1.4から可能らしい)
単に取得不可能なんじゃなくて、全部書き込むか失敗するまで復帰しない。
普通はJavaの仕様の方が扱いやすいが、シビアな状況では困るかもね。
0760デフォルトの名無しさん
NGNGNIO
http://java.sun.com/j2se/1.4/docs/guide/nio/index.html の
* A multiplexed, non-blocking I/O facility for writing scalable servers ね。
http://jcp.org/jsr/detail/051.jsp に必要な理由は書いてある。
「シビアな状況」な人は、
http://www.cs.berkeley.edu/~mdw/proj/java-nbio/
http://www.cs.berkeley.edu/~mdw/proj/sandstorm/iocore-bench/
http://www.javaperformancetuning.com/tips/nio.shtml
辺りが面白い。底辺プログラマには今後一切関係ない話だけど。
0761デフォルトの名無しさん
NGNGWin2kのiphlpapi.dllがexportしてる関数くらい調べてから書いてるさ
0762デフォルトの名無しさん
NGNGセンス悪すぎ
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG>>741は、KEEPALIVEってどういうものか分かってるのかなぁ?
>>749のやり方との違い…説明できるだろうか…
わかっていないのは、あんたの方。要は、データのやり取りが非常にまれにしか
ない状況で、例えばケーブルが切れたことを即座に検出したいんだと思う。
>>749 の方法だと、例えば1日一回しかデータのやり取りがないと最悪丸一日
そう言う障害に気付かない。そう言うのが困るって言う状況もあるよ。
>>739
>> ネットワークの障害でデータが送られてこないのか、クライアントが
>> ぼけっとしてるだけなのか分けて処理したいのです。
>超能力があるのなら、ネットワークもコンピュータもいらないじゃん。
相手マシンでプロセスがバンバン動いている時なんかは、クライアントはあまり
動けないけど、TCP スタックは動けることが多い。(もちろん実装によるけどね。)
だから、超能力なんか使わなくても回線が切れているか、クライアントの応答が
ない事ぐらいはわかることが多い。
... ぐらいのことは、普通のサーバー管理者なら常識。サーバーの負荷が結構高く
ても、ping には応答すれば TCP層までははまず大丈夫と判断できる。
と、言うことでプログラムで、繋いでいる相手に ICMP Echo パケットでも投げる
のがいいかと...。
0765not 751
NGNGは?
わかってないだろ。
そもそもKEEPALIVEはアプリケーションのTIMEOUT用に使うものではないし。
アプリケーションは好き勝手にポーリングシレ
ちなみに後半の管理者の常識とやら始めて知りました。
世の中便利になりましたね。(w
0766751
NGNG何の音沙汰もなく何が何やら分からないって状況が起きる可能性が
ネットワークでは常にあり、それに対する対処方法(*1)が、
個別にやっていた「都合の良い場合」ほとんど全てを
同時に解決してしまうことに気づくことが、
ネットワークプログラマへの第一歩です。頭の転回が必要になります。
また*1)を行なわないのは、どんなに「特別な場合に」良い振る舞いであっても、
最悪の時が酷すぎるという意味で、『糞』ネットワークアプリケーションです。
局面ごとに適当なtimeoutを用意すること、socketのEOF, errorを見張ること、
application layer heartbeat packetを撃つこと、などなどが肝要で、
また基本中の基本です。
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGごめん
0771デフォルトの名無しさん
NGNGSO_KEEPALIVEで全部が救えるわけではない。
ハーフオープンコネクションが残るのを避けることができるだけが
正解なので>>739の発言は間違い。
また、クライアントのポーリングをアプリでやるか、KEEPALIVEを
使うかは好みの問題とかそんなレベル。
>>739はTCPのコネクションの監視はTCPでやりたいだけ。
ただ、>>764の
>そもそもKEEPALIVEはアプリケーションのTIMEOUT用に使うもの
>ではないし。
に関しては意味不明
0772デフォルトの名無しさん
NGNG> 使うかは好みの問題とかそんなレベル。
うーむ、そうなんですか。時代は変わった…
> >そもそもKEEPALIVEはアプリケーションのTIMEOUT用に使うもの
> >ではないし。
> に関しては意味不明
意味不明も何もそのままの意味では。
keepalive がアプリケーションの timeout に使えるようになったのは
timeout 時間が変更可能、しかもコネクションごとに設定できるようになってからでそ。
0773751
NGNGsocketを捕まえたままハングアップしているのを、検知できないです。
対応できる状況が「より包括的」で、健全な仕様を設計できるのは、
アプリケーション層でのタイムアウトやハートビートです。
実際シリアスなプロトコルは良くNULL requestを用います。(e.g. NFS等)
TCP Keep-Alive方式は、poorな分コーディングも楽ですが、(特に決め打ち時)
局面ごとに違う後始末が必要なアプリケーションで、
SIGPIPEのhandlerの設計が難しくなります。(マルチスレッドだと悲惨)
# Winsockでは、直後のsocket操作でWSAENETRESETが返ります。
# このインターフェースもよりpoorな分だけ、コーディングが楽ですね。
また、Keep-aliveはTCPに必須ではありませんし、有害という議論もあります。
(RFC 1122[HR RFC], RFC 1127)
最初からアプリケーション層でやれば、
socket FAQ, Stevens本、RFC 1122,1127のややこしい議論を読まずに済みます。
結局TCP Keep-Aliveは銀の弾じゃない、初級者にはそう見えるようですが。
リモートの様子は全然分からないけどタイムアウト起きちゃった、
この事態と考えを「完全に」受け入れましょう。それが近道です。
0774デフォルトの名無しさん
NGNGkeepalive/timeoutに依存するコードは書かないなあ
OSによっては変更不可能だったりするし
0775デフォルトの名無しさん
NGNGおれ、そろそろ「シビア」なことを理解しなきゃならんかも。
Publish/SubscribeなC/SをJavaで設計することになるかもしれない。
大規模になったときに発生しやすい障害とか、そういう勘所がぜんぜん予想できない。
Pub/Subの管理なりパケットの設計なんてのはいいとして、
例外のクラス構成や障害対策をどのように考えておけばよいかがサパーリ。
基本として最低限対応しておくべき事項って何だろう。
0776デフォルトの名無しさん
NGNG> keepalive がアプリケーションの timeout に使えるようになったのは
> timeout 時間が変更可能、しかもコネクションごとに設定できるようになって
> からでそ。
アフォですか ? 相手アプリケーションが無限ループなんかでハングアップしてて
も、Keepalive はタイムアウトしないことは知ってるのか ? そもそも、Keepalive
って誰が返すかも知らんのか ?
アプリケーションのタイムアウト監視と Keepalive じゃ目的が違うぞ。
0777名無しさん@接続しっぱなし
NGNGhttp://www.shoeisha.com/book/Detail.asp?bid=9
はヘビーマルチスレッドなサーバを設計する前に必ず読んでおくべきだと思う。
使うフレームワーク選択の話はJavaスレの方がいいかも。
0779デフォルトの名無しさん
NGNG> Publish/SubscribeなC/SをJavaで設計することになるかもしれない。
冗談だろ?やめとけ
0780デフォルトの名無しさん
NGNGKEEPALIVEを使用します。
当然、アプリでも処理してます。
ご意見どうもでした。
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGあんた誰?
>>739(=736=715)じゃないよね?
0784デフォルトの名無しさん
NGNG指定に関わらず常にKeepAliveはONだよ
0785デフォルトの名無しさん
NGNG本当? それ、RFC1122に違反してるね。
FreeBSD、インターネットに繋げないや…
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNG> 指定に関わらず常にKeepAliveはONだよ
情報ソースは ?
0788デフォルトの名無しさん
NGNGWinsockを使って、インターネットからHTMLファイルをダウンロードするソフトを作っています。
全体的に実装の方法は分かりました。
で、実際、作って動かした所、自宅のネットからは動くようになりましたが、
会社のLANを伝って、インターネットに接続する場合は、最初の方でGetHostByNameで失敗します。
LAN内のサーバにあるページをダウンロードはできるのですが、どうしてもインターネットからは
できません。
おそらく、LAN内にあるProxyサーバが原因だと思いますが、Winsockを使う場合、どうしたらいいのでしょうか?
また、何が原因なのでしょうか?
(Wininetも使って実験してみた所、こちらの方では、LAN内でも動くことが分かりましたが、
後のことを考えて、どうしてもWinsockを使いたいのです。)
0789デフォルトの名無しさん
NGNGProxy通すんだったら,
まず目的URIに接続するのではなく,Proxyに接続する。
で,Proxyに対して
GET 目的URI HTTP…
を送信する。のだ。
0790788
NGNGレス、ありがとうございます。
概要としては分かりましたが、実際の方法としては、?という感じです。
一応、流れとしては、今、
WSAStartUp()->Socket()->Connect()->Send()...
という感じなのですが、
Connect()の前に、Host名をIPアドレスに変換する必要があるわけですが、
その時に失敗するのです。
仰ることは、Host名→IPアドレスの時に、Host名にProxy名を入れればよいということ
なのでしょうか?
そして、Send()の時にGETすればいいということなのでしょうか?
参考となるページを教えてくだされば光栄なのですが。。。
0791デフォルトの名無しさん
NGNG>Host名にProxy名を入れればよいということ なのでしょうか?
そういうことです。
結局,目的地のことは何も知らなくていいです。
ProxyServerにさえ接続できればあとは丸投げです。
参考になるページは・・
http://www.google.co.jp
この辺で適当に・・(苦笑
0792788
NGNGなんとなく、わかりました。
適当に探してみます。(ワラ
ありがとうございました。
0793デフォルトの名無しさん
NGNGsocketで多段串で送信したいんだけど、どうやるの?
0794デフォルトの名無しさん
NGNGttp://x68000.startshop.co.jp/~68user/net/http-3.html
「Proxy に対応する」
ってのがあるんで,それを見ればなんとなく分かるかと思います。
ちなみにこのサイトはぼくがネットワークプログラミングを初めて触るときにお世話になりました。
0795デフォルトの名無しさん
NGNG多段プロキシに対応したプロキシサーバに向かって
それ用の記述でリクエストを送りつければいいのでは
0796デフォルトの名無しさん
NGNGhttp://ほげほげ1/-_-http://ほげほげ2
かな。
0797デフォルトの名無しさん
NGNG次に「delegate以外のproxyでも通じるやり方ってある?」という質問が来る。
0798デフォルトの名無しさん
NGNGその質問が来たら
http://www.google.com
と答える。
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNGおれもだ。
間にutuが入り込んでおる
0801デフォルトの名無しさん
NGNG思い質問します。これって可能でしょうか?
843 名前:名無し検定1級さん 投稿日:02/09/22 02:47
またこんなこと聞いたら絶対合格無理とか言われそうですが・・・
もし自分のIPを偽れるようなブラウザを自作してfusianasanで2chにアクセスすれば偽のIP表示できたりするんでしょうか?
847 名前:名無し検定1級さん 投稿日:02/09/22 10:46
>>845
いいえ、自分のPCから送信されるIPデータグラムの送信元IPアドレスを偽るようなソフトです。ついでに送信元MACアドレスも。
まだTCP/IP仕組みを完全に理解して無いので、そんな単純なことじゃないかもしれませんが。
0802デフォルトの名無しさん
NGNGその結果connectに失敗して書きこめません。
半年程前にはやったSYN-flood攻撃ツールは実際にこれを行っています。
で、fusianasanで表示されるのはIPアドレスではなくリモートホストなので、
DNSの逆引きに対して(サーバーを自分でたてて)リモホを騙れば出来ないこともないでしょうが、
簡単ではないし、マナー的にもやってはいけないことではないでしょうかね。
0803デフォルトの名無しさん
NGNGなるほどです。
素人考えですが、Connectだけ正常なIPアドレスで行って
書き込み時のみ偽装IPアドレスで行うなんてことは
できるのでしょうか?
0804デフォルトの名無しさん
NGNGしかも、IPアドレスは保存されてるでしょうから、
問題になった時に追跡できますね。
0805デフォルトの名無しさん
NGNG出来ないです。つーか勉強足りなさ過ぎ。10年早い。帰れ
0806デフォルトの名無しさん
NGNG私もできないと思っているのですが資格板にできるって人がいるので
詳しい人がいそうなのでここにきました。
0807デフォルトの名無しさん
NGNGhttp://school.2ch.net/test/read.cgi/lic/1030209098/
0808デフォルトの名無しさん
NGNG> ここの894とかの言ってることがわからないんです
> http://school.2ch.net/test/read.cgi/lic/1030209098/
> TCP/IPのオプションでIPアドレス偽って通信することはできるぞ。
まあ、できるといえばできる。つーか、IP アドレスなんてソフト的に割り当ててあるもんだから、いくらでも変えられる。更に言うと、複数の IP アドレスをひとつの NIC に割り振ることもできる。(WindowsNT系なら5個まで標準でサポートしている。)
MAC アドレスについてもドライバさえ (書け or Hack でき) ればいくらでも偽造は可能。技術的には、複数の MAC アドレスを割り振ることもできる。(ごく一部の NIC を除く。)
ただ上記の TCP/IP のオプションと言うのは意味不明。
また、同一ネットワーク内であれば上記のように偽って通信することはできるが、間にルーターが入っているとネットアドレスの所を変更してしまうとルーターが指定したところにパケットを送ってしまうので、通信はできない。
0809デフォルトの名無しさん
NGNGそれはわかります。自分もクラスタ組んだマシンでIPアドレス書き換えた
通信したことありますから。
でも、今回のは2ちゃんに書き込む話なので間にルータが入るのは
当然といっても過言ではないわけで。
やっぱりできないって結論でよいですよね。
0810デフォルトの名無しさん
NGNG> やっぱりできないって結論でよいですよね。
そりゃ知らんよ。そいつが、2ch の鯖管かも知れんしね。
ただ、http://school.2ch.net/test/read.cgi/lic/1030209098/894 は...
> ここにいる香具師はFW立てないのか?
> そういう怪しいパケットをはじくのは基本だから2chもはじいてると思うが。
なんて言ってるぐらいだから、信用できるかどうかぐらいすぐわかると思うけど...。
0811デフォルトの名無しさん
NGNG>そりゃ知らんよ。そいつが、2ch の鯖管かも知れんしね。
むぅ。確かに。
>なんて言ってるぐらいだから、信用できるかどうかぐらいすぐわかると思うけど...。
まだネスペ取得できていない素人なので自信がないのです。
0812デフォルトの名無しさん
NGNG>>896 >>898 >>899 >>900
偽りたいIPアドレスをAとする
自分のIPアドレスをBとする
相手のIPアドレスをCとする
Bが「Aが送出したパケットをルータBを経由してCに届く」ように設定したパケットをCに送出。
CにとってはAからきたパケットだと認識し、「CからルータBを経由してAに届く」ようなパケットをA宛に出す。
が、実際はルータBを経由しているのでルータBに届く。
これでBがAを装うことができる。
ただし、この機能を使ったパケットは弾かれるのが常識。悪用したくても無理だと思われ。
0813793
NGNG調べたら-_-はdelegateというサーバでしか機能しない様でした。
0814デフォルトの名無しさん
NGNGttp://isweb16.infoseek.co.jp/diary/hedge/ipspoof.htm
のSource Routingの項目をみろ。
大抵ISPのルータでSource Routing付きIPは破棄される
ようになっていると思うので、事実上使えないわけだが。
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNGすごいっす。さんくす。資格板に張ってくるっす。
0821デフォルトの名無しさん
NGNGいいんですか。
普通にコマンド打って取ってくるだけでは、分までしか出てこない。(たまに、時まで。リモート側のファイルの年が今年でなかった場合)
0822デフォルトの名無しさん
NGNG0823名無しさん@接続しっぱなし
NGNG> 普通に
とは? modtime(protocol的にはMDTM)使ってるの?
0824デフォルトの名無しさん
NGNG溢れたデータってどうなるの?
C言語やJAVAだと、入出力系はライブラリがバッファを作るみたいだけど
バッファに入る程度ならいい感じに受信してくれるのでしょうか?
0825デフォルトの名無しさん
NGNG> ふと疑問に思ったんだが、処理速度より受信速度が上回ったとき、
> 溢れたデータってどうなるの?
捨てるしかない。普通は、そうならないように...
1. バッファリングする。
2. 処理速度を向上させる。
3. あふれそうになったら相手にちょっと待て、というような仕組み (プロトコル) をもつ。
のどれかで、対処する。もちろん、1. は、一時的な対処だから、全体的に「処理速度より受信速度が上回る」状況では、結局バッファーがオーバーフローてしまう。
0826デフォルトの名無しさん
NGNGTCPと仮定して:
送り側から見ると、送信キューが詰まる。
そのときselectはwritableを返さない。
あるいは非ブロックソケットならsendが0バイト送信しますたと返す。
だからあふれることはないよ。
Javaのjava.net.Socketは仕様がバグってるからうまく処理するのは
難しいかも。
825はアプリの作り方の話?
だったらそのとおりだあね
0827825
NGNG> 825はアプリの作り方の話?
> だったらそのとおりだあね
はぁ ? TCP/IP は、>>825 の 3. で処理してますが...。俺には、>>826 の方がずっとアプリ寄りの話に見えるが...。(select/send なんて、もろソケットを仮定してるみたいだし..。)
0828デフォルトの名無しさん
NGNGUDPでTCPのエミュレートとかいう痛い話に見えるか、
そこの違いか?
0830名無しさん@接続しっぱなし
NGNG・TCPの仕組みの勉強をしろ。
・IPネットワークの最大努力配送について勉強をしろ。
それがイヤなら、UDPを使ったプログラムを書かないと誓って
ただTCP&socketを信じろ。「いい感じ」にやってくれるから。
ただし古いWinsockでSO_RCVTIMEOを使う時はsocketを信じてはいけない。
0831653
NGNGみなさんの指摘どおりつまずいてしまいまして;;;
恥じを承知で質問させていただきます。
クライアントからint型で2000送ろうとしたのですが、一回ではおくれないみたいで
1000ぐらいでとまってしまいます。
以前指摘してもらったことから、もう一度送ればいいとやってみたのですがうまくいかず、どうすればいいのか
困ってます。
0832デフォルトの名無しさん
NGNG-1の場合、errorはいくつになってんの?
0833デフォルトの名無しさん
NGNG意味不明。もう少し詳しく書かないと答えようが無い。
・・・多分こんなんでいいんだろうけど。
int sendall(int sock, void *buf, int len)
{
int sent = 0;
while (sent < len) {
int cur = send(sock, (char *)buf + sent, len - sent, 0);
if (cur <= 0) {
return (sent > 0) ? sent : -1;
}
sent += cur;
}
return sent;
}
0834デフォルトの名無しさん
NGNGもう一度送ればって、intのバッファを先頭から再送してたりしないよね?
0835デフォルトの名無しさん
NGNG0836653
NGNG詳しく書かなくて申し訳ないです;;
833さんのでずばり解決できそうです。recvでも同じようにすればいいんですよね?
一度やってみます。
それから返事遅くなってすいません;;
0837デフォルトの名無しさん
NGNG送りきる前に電文が欠けたりするよ。
>>833で上手く逝かなかったらその辺も疑ってくだちぃ。
0838デフォルトの名無しさん
NGNG> 送りきる前に電文が欠けたりするよ。
Apacheは返事のsendの後、相手がcloseするまで30秒ぐらい放置してますね
ところで参考までにOSなんか教えてもらえるとうれしいッス
0839デフォルトの名無しさん
NGNG相手のcloseをselectなりrecvなりで待つってのが正しいとは思います。
ただ、その仕事での問題として、ソケットライブラリでは、
そーゆーアプリケーション側の問題までは関知してなかったんで、
困ったなぁ、となりました。
0840デフォルトの名無しさん
NGNGsend直後にcloseすべきじゃないってのはそうだと思うけど、
そのためにshutdownがあるのでは。
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGというか、close時にflushしてくれないってのはやっぱおかしいな。
俺も「そういうこと(環境)もある」とだけは覚えておこう。
0843デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG> というか、close時にflushしてくれないってのはやっぱおかしいな。
そりゃおかしいよ。
SOCK_STREAMのセマンティクスを守るために、
TCP socketにはTIME_WAITって状態があるんだから。だから、
>>840
> send直後にcloseすべきじゃないってのはそうだと思うけど、
なんてことはない。引き続く送受がなければいきなりcloseしてよい。
> そのためにshutdownがあるのでは。
違う。> 「そのために」
Socket FAQを読むべし。いじょ
0846デフォルトの名無しさん
NGNG接続できたあと、スレッドをつくり、一つのソケットで送信、受信を同時にしても大丈夫なのでしょうか?
やっぱりまずいんでしょうか?
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGファイルハンドルやコンソール出力に同じことをしたらどうなるか
想像してみれ。
0849デフォルトの名無しさん
NGNGコンソール出力からの受信って何だろう…
>>846
とくに問題は無い。
が、ノンブロックモードにする必要があるから、
別のソケットにしたほうが楽だと思う。
あとサーバーから送信する先のポートの問題とかもあるかも。
0850デフォルトの名無しさん
NGNG>>840の一行目はウソ。
0851デフォルトの名無しさん
NGNGスレッド1が受信専用でスレッド2が送信専用ならおそらく問題ない
0852デフォルトの名無しさん
NGNGwinMXってP2Pですよね。でも最初検索するときの、
「誰がどのファイル持ってる」という情報だけは、一箇所に集めてて、
最初にそこを参照して、持ってる人見つけて、あとはP2Pでやる、
って感じでいいですか?
なんかP2Pで通信する仕組みを考える時って、それが一番問題な気がします
名簿なし、手探りで不特定多数の相手を見つける、って無理な気が
0853デフォルトの名無しさん
NGNG新手のWinMXを作るんですか?
0854デフォルトの名無しさん
NGNGいやオンラインゲームに使えないかなと思って。
自分にはサーバ立てるのは負担なので、P2Pだけでネットワーク対戦
できたらいいなと。
LAN環境とかでやるなら、ブロードキャストで
全部当たればいいと思うんだけど、
大規模、不特定多数になるとそれだと無理じゃないかと思ったので
0855デフォルトの名無しさん
NGNGwinmxのWPNとかはそういう仕組みじゃないぞ。
0856デフォルトの名無しさん
NGNGレスありがとうございます。
送信と受信をまったく同時にしたらソケットの中で衝突がおきるのかなー?と初心者ながら思ってました。
ソケット2つ作ってそれを同じ相手につなげて送信と受信分けたほうがいいのかなー?
0857デフォルトの名無しさん
NGNG0858デフォルトの名無しさん
NGNGうん。
ノンブロッキングにしたらすぐ返ってくるけど。
0859857
NGNGありがとう!感謝感謝です
0860デフォルトの名無しさん
NGNGつーか、君勉強足りなすぎ。ちゃんと本読みなさい。
SOCK_STREAMは双方向全二重の信頼性のある通信を提供します。
同じ方向に利用するスレッド間の同期/排他は忘れないでください。
以上の言葉の意味が分かるまでは勉強しないと先でつまずきます。
0861デフォルトの名無しさん
NGNGじゃあ、>>843のコードがどこか示してくれや。
どんな時にそうなっているんだ? その状況は>>843の主張と整合するか?
0862デフォルトの名無しさん
NGNGお前等、まともなネットワークプログラミングなんかしたことないだろ ?
> ノンブロックモードにする必要があるから
馬鹿、そんなことしたくないから「マルチスレッド」にするんだよ。
> あとサーバーから送信する先のポートの問題とかもあるかも。
意味不明だ。具体的に書いてみれ。
0863デフォルトの名無しさん
NGNGで暴れてたアフォか?
> 馬鹿、そんなことしたくないから「マルチスレッド」にするんだよ。
馬鹿、そんな理由でマルチスレッドなんか使わないんだよ。
素人ほどスレッドを使いたがるのはホントだな。
まさか java.net.Socket とかいう欠陥クラス使ってないだろうな。
0864856
NGNG回線は全二重というのはわかるのですが、送信や受信するときいったんソケットにためてるのかなー?とおもっていまして、
それだと送信パケットと受信パケットが混ざるとだめかなー?と思ってました。
もし一つのソケットでできる場合2つのソケットで送信と受信をする場合と比べてスピードは遅くなるのでしょうか?
>>同じ方向に利用するスレッド間の同期/排他は忘れないでください。
これはクリティカルセクションとか、親スレッドが終了するまで子スレッドは終了させないようにするとかということでしょうか?
質問ばかりですいません
0865デフォルトの名無しさん
NGNG> 馬鹿、そんな理由でマルチスレッドなんか使わないんだよ。
送受信がほとんど絡まないような場合だと、スレッドの方が全然楽。
ノンブロックでポーリングしまくる方がよほど素人だよ。
スレッドもまともに使えねー奴と言うオチか ?
0866デフォルトの名無しさん
NGNG> もし一つのソケットでできる場合2つのソケットで送信と受信をする場合と比べてスピードは遅くなるのでしょうか?
もちろん状況によるが、普通は物理層がネックになるだろうからあまり変わらないと思う。(Gbit ぐらいになるとよくわからんけどね。)
>>同じ方向に利用するスレッド間の同期/排他は忘れないでください。
> これはクリティカルセクションとか、親スレッドが終了するまで子スレッドは終了させないようにするとかということでしょうか?
クリティカルセクションと言う言葉は関連するけど、「親スレッドが終了するまで子スレッドは終了させないようにする」とか言うのは、全然関係ない。
要は、2つのスレッドが同時に両方とも書き込んだりしないようにしないとダメってこと。これは、別にソケットだからと言うわけじゃなくてファイルだろうがプリンタだろうが同じ。
0867デフォルトの名無しさん
NGNGお願いだから素人はスレッドなんか使うのやめてくれ。
ややこしくなるから。
0868デフォルトの名無しさん
NGNG> ややこしくなるから。
心配するな、ややこしいと思ってるのはお前だけだから。
ぐちゃぐちゃ書くなら、「何がおかしい」かぐらい書いたらどう ? (まあ、書・け・た・ら の話だけどね)
0869856
NGNG>>要は、2つのスレッドが同時に両方とも書き込んだりしないようにしないとダメってこと。これは、別にソケットだからと言うわけじゃなくて・・・
え?これは別々のスレッドで同じメモリへ同時に書き込みはだめってことですよね?それさえ気をつければソケットにはまったく同時に送信、受信できるんですよね?
0870デフォルトの名無しさん
NGNG> え?これは別々のスレッドで同じメモリへ同時に書き込みはだめってことですよね?それさえ気をつければソケットにはまったく同時に送信、受信できるんですよね?
う〜〜〜ん、なんか微妙に違ってる気がするなぁ。
複数スレッドが同じメモリーを同時に読み出すのは OK だけど、だからと言ってソケットから同時に受信できるわけじゃない。
例えば、2つのスレッドが同時にソケットから読み出す時に、ネットワークら "ABCD" と来たら、
"A", "BCD" とスレッドに渡るかもしれないし、"AC", "BD" と渡るかもしれない。
と言うような話だよ。
送信と受信を同時に行うのは特に問題はない。(ヴァカな、>>867 には、ややこしいらしいから勧めないけどね。)
0871デフォルトの名無しさん
NGNGソケットの送信と受信は別々のものと考えて差し支えないよ。
たいがいのTCPスタックの実装は内部できちんと排他処理してくれてる。
とはいえ実装依存だから、ドキュメントで確認したほうがいい。
あるスレッドが受信待ちしてるときに、
別のスレッドがそのソケットの受信関連のフラグを操作したときの動作は
未定義かもしれない。
普通そんなことしないけど、素人はやりかねないね。
0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG> 送信や受信するときいったんソケットにためてるのかなー?とおもっていまして、
> それだと送信パケットと受信パケットが混ざるとだめかなー?と思ってました。
そんな、わけのわからんことには、なりません。送信バッファと受信バッファは別になってるんで、1つのソケットでちゃんと送信も受信も出来ます。
ただ、ブロッキングモードだと、受信するとき相手から何か送られて来るまで recv で止まってしまうから、止まってしまってたら送信出来ないだろ? だからノンブロッキングモードにするか、送信用のスレッドと受信用のスレッドを分けるか。
って話なんだと思うけど。・・・なんで2つのスレッドが同時に書き込む話になってるので?
0874856
NGNGレスありがとうございます。ソケット内部で送信バッファと受信バッファが別になっているとは勉強になりました。
今回あるスレッドで送信、あるスレッドで受信というようにしようと思ってました。一つのソケットでいけそうだということがわかりました。
あと、ソケットが一つでする送信、受信場合と2つで別々に送信受信する場合スピードはかわらないのでしょうか?変わっても気にしなくていい程度なのでしょうか?
ソケット内部での送信バッファと受信バッファが可変の場合変わるかなーと・・・かなり想像でしゃべってもうしわけないです。
あとsendで送るとき一定以上の量になると何回かに分けて送らなければいけないと思うのですが、この一回の容量というのはパケットのサイズなのでしょうか?
それともソケットのバッファがいっぱいになったからなのでしょうか?
0875デフォルトの名無しさん
NGNG> ただ、ブロッキングモードだと、受信するとき相手から何か送られて来るまで recv で止まってしまうから、止まってしまってたら送信出来ないだろ?
こんな知識で、「素人ほどスレッドを使いたがるのはホントだな。」とか言ってたのか、あきれて物も言えんわ。
0876デフォルトの名無しさん
NGNGソケットに限らずこれはあってる。
ソケット方面で言うと、ノンブロッキングモードを知らない奴(Java厨)とか
select/pollを使ったイベントドリブンなプログラミングに慣れてない奴とかが
こぞって使いたがるんだよね。
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGない。マルチスレッドマンセーなので不要、という思想だそうだ。
さすがにその愚かさに気づいたのか、JDK1.4からはnioというのが付いてる。
頭悪いよね。
0879デフォルトの名無しさん
NGNG0880873
NGNG>こんな知識で、「素人ほどスレッドを使いたがるのはホントだな。」とか言ってたのか、あきれて物も言えんわ。
いや・・・私はそんなこと言ってませんけど。勝手に結びつけないで頂戴って言っても無駄かな。
とりあえずこんな知識で発言してごめんよ。
でも間違ってたら指摘してくれると勉強になって有り難い。
>>877
なかった気がする。でも調べ足りないだけかもしんない。nioは見てないし。
>>874
> あとsendで送るとき一定以上の量になると何回かに分けて送らなければいけないと思うのですが、この一回の容量というのはパケットのサイズなのでしょうか?
> それともソケットのバッファがいっぱいになったからなのでしょうか?
バッファ。
でもブロッキングモードだったら、指定したバイト数を全部バッファに入れるまでブロッキングするから大丈夫。
いや、ブロッキングされるとマズイ場合も多々あるけど。そゆときはノンブロッキングにするかスレッド分ける。
0881デフォルトの名無しさん
NGNG> あと、ソケットが一つでする送信、受信場合と
> 2つで別々に送信受信する場合スピードはかわらないのでしょうか?
> 変わっても気にしなくていい程度なのでしょうか?
送受信のバッファはそれぞれ別個のものとして扱われるから、
速度の差はないんじゃないかなあ。
最終的にはTCPスタックの実装で決まることだけど、
送受信のバッファの扱いはOSごとに激しく異なってたきがする。
ところで素人素人連呼してるヴァカが一匹居るけど、
いろいろ試すことに価値はあると思うから気にしないでね。
0882デフォルトの名無しさん
NGNG当然だがselectもpollもないぞ。理由は878と同じらしい。
すべてはnio様の登場でチャラになったことになってる。
0883デフォルトの名無しさん
NGNG> > 素人ほどスレッドを使いたがるのはホントだな
> ソケットに限らずこれはあってる。
スレッドが適しているところにはスレッド使えばいいし、そうでないところには select とかでいいと思うよ。
もしかして、スレッド使えない方ですか ?
0884デフォルトの名無しさん
NGNG「使いたがる」と「適材適所」は激しく異なると思われ
0885デフォルトの名無しさん
NGNGいちおう、ブロックせずに読めるバイト数を返す available() ってのがあるから、(試したことないけど)入力に関してはノンブロッキングもどきが出来るのかもしんない。
0886デフォルトの名無しさん
NGNG真性アフォ発見!
0887デフォルトの名無しさん
NGNG> >>SOCK_STREAMは双方向全二重の信頼性のある通信を提供します。
>
> 回線は全二重というのはわかるのですが、
> 送信や受信するときいったんソケットにためてるのかなー?とおもっていまして、
socketと標準入出力ライブラリのハンドルは別です。
前者は全二重だけど、後者は仕様上半二重で構わないです。
そこのところを気をつけてください。(fdopenなどする場合)
0888デフォルトの名無しさん
NGNG> 素人ほどスレッドを使いたがるのはホントだな。
ちょっと分かってきた時に、無駄にpollingや非同期使いたがる奴もいるね。
どれを使うかはバランス感覚の問題だから、人に教えるのは難しいね。
しかし、一昔前に比べると、systemが成熟してきたので、
multi threadによる解決が自然な場合が多い。
初めからthreadの増大が問題になる事が分かっている場合以外は、
multi threadから始めるという方針も悪くないと思う。
0889デフォルトの名無しさん
NGNGうんうん、スレッドは本質的には非同期処理だからねえ。無駄だよねえ。
非同期ソケットとノンブロックソケットはまったく別物だから注意しようね。
> 初めからthreadの増大が問題になる事が分かっている場合以外は、
> multi threadから始めるという方針も悪くないと思う。
少なくとも、IOのためだけにthreadを使うのは間違ってるね。
Javaしか知らない困った人は解らないかもしれないが・・・
0890デフォルトの名無しさん
NGNG>「使いたがる」と「適材適所」は激しく異なると思われ
この発言はあってるけど、それがどうかしましたか ?
俺は、>>876 がやけにマルチスレッドを気にしてるみたいだから、マルチスレッドの方が書きやすいこともあるよって言ってるだけだよ。
>>886
どこが「アフォ」か書いてみな。あんた見てると、>>872 が正しいこと言ってるのがよくわかるよ。
>>887
> socketと標準入出力ライブラリのハンドルは別です。
> 前者は全二重だけど、後者は仕様上半二重で構わないです。
正確には、ファイル入出力は半二重 (ファイルポインタは1個しかないからね) だけど、COM ポートなんかだと全二重のシステムもあるよ。
>>888
ほぼ同意。
>>889
意味不明。
0891デフォルトの名無しさん
NGNG> いや・・・私はそんなこと言ってませんけど。勝手に結びつけないで頂戴って言っても無駄かな。
人違いか ? なら、ごめんよ。ただ、
> ブロッキングモードだと、受信するとき相手から何か送られて来るまで recv で止まってしまうから、止まってしまってたら送信出来ないだろ? だからノンブロッキングモードにするか、送信用のスレッドと受信用のスレッドを分けるか。
の文章は完全に誤解してると思うから、もう少し勉強してね。
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGCSocketクラスを使用してサーバアプリを作成しています。
accept後に一定時間通信がない場合、そのSocketをcloseしたいのですが
どのようにtimeout等を考えればよいのでしょうか?
0894デフォルトの名無しさん
NGNGそうすれば救われます
0895デフォルトの名無しさん
NGNG> 必死な奴だなあ
それしか書けないなら、書かない方がいいよ。アフォみたいだからね。
>>893
> accept後に一定時間通信がない場合
クライアント/サーバー間のプロトコルがわからない (TCP/IP とか言うなよ、そうじゃなくてアプリケーションレイヤーの話だからね) のでなんとも言え。
まあ、普通のクライアントのコマンドに対してサーバーから応答を返すような場合だったら、サーバーが Receive() で待ってる時にタイマー掛けといてタイムアウトしたら切断しちゃえばいいんじゃないの ?
0896デフォルトの名無しさん
NGNG>まあ、普通のクライアントのコマンドに対してサーバーから応答を返すような
>場合だったら、サーバーが Receive() で待ってる時にタイマー掛けといて
>タイムアウトしたら切断しちゃえばいいんじゃないの ?
レスありがとうございます。
まさにそのとおりです。
accept→Recieve→Sendといくのですが、
acceptしたあとどうタイマーをかけていいのかわからなかったもので。
やっぱりCSocketよりWinSock直でやったほうがいいんですかね
0897デフォルトの名無しさん
NGNG> accept→Recieve→Sendといくのですが、
> acceptしたあとどうタイマーをかけていいのかわからなかったもので。
もっとちゃんと状態遷移を理解してないとダメだよ。
1. Listen
2. ← Connect
3. Accept
4. Receive
5. ← Send
6. Receive
7. Send →
8. 4. へ戻る...
クライアントのから待ちになるのは、4〜5 だから 4 (=Receive 開始時) にタイマー掛けて、5. (=クライアントからのデータ到着) がタイムアウトしないかみるだけだよ。
> やっぱりCSocketよりWinSock直でやったほうがいいんですかね
ここら辺の話は、CSocket とか WinSock に依存した話じゃないよ。
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG状態繊維まで書いていただいてすいません…。
たしかにそのとおりだとは思います。
CSocketではacceptしたあと、受信可能状態になればOnRecieve()がよばれると思っています。
ですので、OnRecieve()がよばれるまえ(acceptした直後)にタイマーかけておいて
OnReceive()/OnSend()が呼ばれたらそれぞれ処理してタイマーかけなおし
すればよいのでしょうか?
0900デフォルトの名無しさん
NGNG> CSocketではacceptしたあと、受信可能状態になればOnRecieve()がよばれると思っています。
> ですので、OnRecieve()がよばれるまえ(acceptした直後)にタイマーかけておいて
> OnReceive()/OnSend()が呼ばれたらそれぞれ処理してタイマーかけなおし
> すればよいのでしょうか?
そう言う意味では、MFC 固有だな。スマソ。
とりあえず、接続されたら OnAccept() が呼ばれるから、タイマー掛けて、OnReceive() 毎に再設定でいいと思うよ。
0901デフォルトの名無しさん
NGNG>そう言う意味では、MFC 固有だな。スマソ。
やっぱそうなんですね。
>接続されたら OnAccept() が呼ばれるから、タイマー掛けて、OnReceive() 毎に再設定
本当にいろいろとありがとうございます。
とりあえずこれでやってみます。
0902デフォルトの名無しさん
NGNG自分のことだって分かってるんですね(プ
0903デフォルトの名無しさん
NGNG正直、>>898のやり方の方が、
非同期イベント処理の健全性を考えないで済むから楽。
非同期型のプログラムを書くには根本的な頭の切り替えが必要。
特に例外処理や後始末やハンドラの登録/抹消において。
最悪なのは手なりの同期/非同期混合型プログラム。地獄を見ることになる。
これはMFCのCSocket or CAsyncSocketとは直接関係ない話な。
0905デフォルトの名無しさん
NGNG書くしかないわな。(もちろんVC++でだけど)
0906デフォルトの名無しさん
NGNGわけわからん
0908デフォルトの名無しさん
NGNG> 自分のことだって分かってるんですね(プ
やっぱりこの程度のことしか書けないのね。まあ、2ch だからいいけどさ。
マ板に逝けば、仲間がイパーイいるよ。ププッ。
>>903
お説ごもっともだけど、全然有用な情報がないよ。
知識もってるってひけらかしたいだけ ?
こんなことしてはまったとか、具体的に書いてもらえればいいけどさ。
0909 ◆4I/Yf.lDws
NGNGfor(i=0; i<100; i++) {
sprintf(toSendText,"%d",i);
send(dstSocket, toSendText, strlen(toSendText)+1, 0);
Sleep(100);
}
それぞれのパケットに1組の数字(文字列)のみを入れて送信したいのですが、
受信したものは、「1\02\03\04\0」というように何個かがくっついてしまったのです。
どうすれば、1パケットに1つの数字を送信できるのでしょうか。
どなたか教えてください。
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG煽りはほっとけよ。
>>909
普通にやるとくっついたり分断されたりします。
for(i=0; i<100; i++) {
sprintf(toSendText,"%d",i);
len = strlen(toSendText);
send(dstSocket, &len, sizeof(len), 0);
send(dstSocket, toSendText, len, 0);
Sleep(100);
}
でどうよ?
そもそも i を文字列に変換する意味はあるのか?特にないのなら
send(dstSocket, i, sizeof(i), 0);
でどうよ?
0912デフォルトの名無しさん
NGNG> どうすれば、1パケットに1つの数字を送信できるのでしょうか。
無理。自分で、'\0' 見つけて分解するしかない。
逆に、1 と '\0' が2回に分けて送られることもありうるので注意すること。
あと、
> 受信したものは、「1\02\03\04\0」というように
と書くな、0x31, 0x02, 0x03, 0x04, 0x00 と誤解されるぞ。(と言うか、コンパイラはそう言う風に解釈する。)
ちゃんと、1 \0 2 \0 3 \0 4 \0 のように書け。
0913デフォルトの名無しさん
NGNGTCPなんですよね?
if (TCPです) {
出来ません。
TCPはバイトストリームです。
だからパケットを扱えません。// TCPではセグメントと呼びます。
}
それから、sendの返り値をちゃんと見なさいな。
0914デフォルトの名無しさん
NGNG最後のは
send(dstSocket, &i, sizeof(i), 0);
でつ…。
0915デフォルトの名無しさん
NGNG「バイトオーダに注意(MSB or LSB)」は追加しないでいいの?
>>909はカナーリ初心者プログラマだぞ。
0916デフォルトの名無しさん
NGNG俺もカナーリ初心者プログラマなのですが…。
バイトオーダーは送信元と受信元が同じエンディアンなら
気にしなくてもいいというのは誤った認識でしょうか?
#初心者なら送信元と受信元は同じ環境だと思ったので…。
バイトオーダーを考慮するなら
long hoge = htonl((long)i);
send(dstSocket, &hoge, sizeof(hoge), 0);
ですかね。
0917デフォルトの名無しさん
NGNG【方法1】
電文サイズと電文の実体を送信し、受信側でサイズ分受信する
【方法2】
受信側で\0をデリミタとする
以外に方法ってあるかな? つなげなおすとかでなくて。
0918909 ◆4I/Yf.lDws
NGNGやろうとしているモノは、送信側ソフトのスクロールバーを動かすと、
受信側ソフトのスクロールバーがそれにつられて動くという実験をやろうとしていたのです。
実際に動かしてみると、カクカクするので、909で書いたものを実行してみたところ、
値がくっついてしまっていることが分かったのです。
送られてきたモノを分解したら一応はできるのですが、カクカクするんです。
ちなみに、ローカルエリア内です。
VNCという遠隔操作ソフトをご存知でしょうか?
あのソフトもTCPを使用しているようなのですが、
上と同じ環境でマウスは非常に滑らかに動きます。
なにか違うのでしょうか。
勘違いなどしているかもしれませんが、教えていただけないでしょうか。
0919デフォルトの名無しさん
NGNG\0をデリミタにすると,数値そのまま送った時はまずいよね?
0の時デリミタになっちゃう。
>>911のようにテキストに変換するならいいけど。
0920デフォルトの名無しさん
NGNGまぁ、前者は明らかにマズイんだが。
0921デフォルトの名無しさん
NGNG明示的にフラッシュすればいいんでないの?
0922デフォルトの名無しさん
NGNGそらもちろんテキストが前提です。
バイナリ可変長ならサイズ指定が必須でしょう。
0923デフォルトの名無しさん
NGNGすいません。あなたを侮ってました。
すんません。すんません。(ぺこぺこ
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNGTCP_NODELAY
0926デフォルトの名無しさん
NGNGDELAYしようがしまいが、受信ソケットには電文は溜まっていく。
0927デフォルトの名無しさん
NGNG>送られてきたモノを分解したら一応はできるのですが、カクカクするんです。
>ちなみに、ローカルエリア内です。
これの話だけど。
0928デフォルトの名無しさん
NGNG> #初心者なら送信元と受信元は同じ環境だと思ったので…。
ビクーリな推測に基づく仮定だな。
君の書くプログラムは大丈夫なのか?
0929デフォルトの名無しさん
NGNG理想なんじゃないかな。
0930デフォルトの名無しさん
NGNGNDRやCDRみたいなのもあるから、それが理想とは限らんだろ。
0931デフォルトの名無しさん
NGNGなんでやねん。x86Windoesで送信したら受信する方はx86Windowsやないか。
0932デフォルトの名無しさん
NGNG何それ?
0934デフォルトの名無しさん
NGNGeで送信して、wで受信するんですね。
0935名無しさん@接続しっぱなし
NGNGhttp://www.cs.utk.edu/~raman/soap/soap.ppt
0936デフォルトの名無しさん
NGNG便利なライブラリご存じないでしょうか?
0937デフォルトの名無しさん
NGNGミソじゃねえよ。偶然くっつかなくなっただけだ。
少しは過去ログ見ろぼけ。
0938デフォルトの名無しさん
NGNG0939◇4I/Yf.lDws
NGNGコンピュータの世界に偶然なんてあるのかい?
そもそも、スクロールを実現すんなら、全データの信頼性よりもパフォーマンスが上がればいいんだろ
NODELAYつかって、パフォーマンスが上がったって事は、成功といってイイんじゃない?
ネトゲでデータの信頼性よりもパフォーマンスを重視するのと同じだよ
それにこの場合は送信元も受信元も同じって決まってるんだしさ
0940デフォルトの名無しさん
NGNGUDPのがいいんじゃない?
0941デフォルトの名無しさん
NGNG「パフォーマンス」???
0942デフォルトの名無しさん
NGNGもうほっといたら ? 本人満足してんだしさ。
そのうち痛い目見りゃわかるだろ。
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG0945名無しさん@接続しっぱなし
NGNGこの文章に騙される人は、健全性と完全性の区別が出来ない人だね。
>>943
とりあえず、しばらく放置じゃないかな?
0946デフォルトの名無しさん
NGNG>>933
0947デフォルトの名無しさん
NGNGSSLの通信をProxyに通す場合の手順がいまいち分かりません。
現在以下までは分かっています。
1.クライアントが、プロクシーサーバにCONNECTメソッドでリクエスト
2.プロクシーサーバは、200をクライアントに返す
3.プロクシーサーバは、1.で送られてきたリモートサーバにコネクションを張る
この後が分かりません・・・。
クライアントが何か出力しているのは分かるのですが、
それが合計何バイト出力してるのかが分からず、どこの時点でリモートサーバにデータを
送ればいいのかが分からないとか、そういうところで困ってます。
何か分かる方がいましたらひとつ願います。
RFC2616読んだのですが、これに関してあまり書いてなかった・・・。
HTTPプロクシーのRFCは2616じゃないのでしょうか。
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG0950947
NGNGProxyつくってます。
0951デフォルトの名無しさん
NGNG書き込みがきたら、その分だけ転送すればいいんでわ?
0952デフォルトの名無しさん
NGNGSSLで送信されてるなら、それを受信して解析しないと。
それに、その後再びエンコードしてHTTPサーバにリクエスト。
SSL crypto HTTPあたりでググってみれ。
0953デフォルトの名無しさん
NGNGCONNECTでコネクションが確立したら、あとは
クライアントが送信してきた内容をそのままサーバに垂れ流す。
サーバが送ってきた内容も同様にそのままクライアントに転送。
どっちがいつ送ってくるかは分からないからいつ送ってきても
いいように待つ。
ようするにsocksと同じで汎用のポートフォワーディングの
手段として使えるからちゃんとアクセス制限しないと
セキュリティホールになる。
>>952
SSL Proxyは通信内容に一切関知しない。
Proxyが暗号化を解除できたらSSLの意味がないだろ。
0954947
NGNGすんません。
もう少し詳しくと言うかなんか参考文献あったら教えてください。
0955947
NGNGあぁ、やっぱいつ送ってきても良いように待つのですか。
一般的なやり方ってどんなのがあるんでしょうか?
スレッドを使うとか?
0956デフォルトの名無しさん
NGNGソケットの使い方はUNIXネットワークプログラミングVol.1でも読めや。
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGTCP_NODELAY を使いつつ、send() 側も recv() 側も、バッファ(第 3 引数)を
1 byte にすりゃいいだろ。
いまさらだけど。
0959デフォルトの名無しさん
NGNGJavaで、selectするにはどうすれば良いんでしょうか。
0960デフォルトの名無しさん
NGNGスレッドとTCPのソケット通信について…
TCP/IPがマルチスレッドで動いてくれるとでも思っているヤツはバカ!
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNGまあそれはともかくJavaのJDK 1.3まではスレッド使うしかない。
JDK 1.4ならnio使え。
0964デフォルトの名無しさん
NGNG接続できるという話
http://www.kb.cert.org/vuls/id/150227
SSL Proxyを作る人は同じ轍を踏まないように。
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG屏風から追い出してくれたら答えます
0967デフォルトの名無しさん
NGNGタスクマネージャで確認した程度だから、間違ってるかもしれないけれど。
0968デフォルトの名無しさん
NGNGいや、Javaではないんですが、selectが無い場合はどうやるのかと思って質問しました。
実際は、C#でやっています。
C#では、Selectというメソッドはあるのですが、いまいち使い方が分かりません。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemnetsocketssocketclassselecttopic.asp
要は、ポートフォワーディングをすれば良いんだとは思いますが
どうやって実装すればいいのかに悩んでいたり。
0969デフォルトの名無しさん
NGNG> ポートフォワーディングすれば
間違えた。
> ポートフォワーディングみたいなこと
に訂正。
ポートフォワーディングって言うよりはトンネリングって言う方が正しいのかな。
0970デフォルトの名無しさん
NGNG主にソケットに関しての質疑応答スレです。
Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ
http://tangentsoft.net/wskfaq/
過去スレ:
ネットワークプログラミング相談室
http://pc.2ch.net/tech/kako/970/970344582.html
ネットワークプログラミング相談室 Port2
http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
ネットワークプログラミング相談室 Port3
http://pc3.2ch.net/test/read.cgi/tech/1023359282/
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG使い方が分からんってそのまんまじゃん。
もしかしてCのselectの使い方も分からない?
だったらFAQでも読め。URLはちょうどテンプレが
貼られてる。
0973デフォルトの名無しさん
NGNGネットワークプログラミング相談室 Port4
http://pc3.2ch.net/test/read.cgi/tech/1034236536/
0974デフォルトの名無しさん
NGNGへぇプロトコルがマルチスレッドに対応しているのか…どこの世界の話かよかったら聞かせろ。
おまえは、複数の人間がしゃべっているのを同時に聞ける天才か?
0975デフォルトの名無しさん
NGNGプロトコルとOS話が…は別だわな…
0976デフォルトの名無しさん
NGNG実装の話だよ。>>960 も「動く」って書いてる。
0977デフォルトの名無しさん
NGNG961はOS の TCP/IPプロトコルスタック部分が並列動作するってことを
簡略な表現で言っただけでしょ。
その程度の省略が自動補完できない時点で、知識レベルが論外って気がするが...
0978デフォルトの名無しさん
NGNG実際のとこどうなんだろ。
linuxとか*BSDとかの実装を見た人います?
0979名無しさん@接続しっぱなし
NGNGIP→TCPのDeMultiplexingを担っているところが、
TCPプロトコルスタック部分の(接続単位から見た)並列動作を実現しているところ。
と言われただけで、かなり具体的なイメージが湧かないと、
ソースの場所示されても分からないと思う。イベント駆動型だし。
ちなみに接続単位から見た並列動作が実現できてないのが、
一昔前のいわゆるパソコン通信です。(接続の多重化が行なわれてない)
0980デフォルトの名無しさん
NGNGようになってるのかなあ、と。
実際は排他制御されてたりしない?
0981名無しさん@接続しっぱなし
NGNG君が書いたら、大域変数バリバリでそうなるのかもしれないけど、
tcp_input.c(の関数群)は、「接続単位」に対してパラメタライズされてます。
> 実際は排他制御されてたりしない?
tcp_input.cの#ifdef CONFIG_SMP調べればすぐ分かるでしょ?
ジャイアントロックないでしょ?
そもそも多重化って意味分かりますか?
全然意味分からないならport 4の図書コーナーにGO!
0982デフォルトの名無しさん
NGNGどこの実装?CONFIG_SMPってことはlinuxかな。
何にせよ読んでる人がいることに驚いた...
接続単位ってことですが、送受信は分かれますか?
もし分かれるなら、
TCPの送受信で共有しているパラメータ(ブロッキングモードなど)
へのアクセスは正しく排他されますか?
0983名無しさん@接続しっぱなし
NGNG> 接続単位ってことですが、送受信は分かれますか?
送受がパラに動くようコンテキストが分かれてる、って意味?
TCPは全二重だから、送受で干渉ないように作ってあるわな。
しかもイベント駆動だから、素直にハンドラ書けば並列に動く。
もちろん必要最小限の排他は行なってるわね。
> どこの実装?CONFIG_SMPってことはlinuxかな。
BSDなんかでもnetwork関係は#ifdef SMP全くないでしょ。
NET4自体が、i386がメインじゃない大昔からSMPを考慮してるからね。
(386BSD自体はSMP駄目だったけど)
つーか、読め。人に聞いたsurveyは身に付かん。
http://pc3.2ch.net/test/read.cgi/tech/1034236536/6
The Implementation (TCP/IP Illustrated, Volume 2)
http://www.amazon.co.jp/exec/obidos/ASIN/020163354X/ref=pd_sim_dp_4/249-2677107-1089124
いじょしゅうりょ 1000取り合戦どうぞ→
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGそのへんは送受信で共有されてるパラメータによっては
複雑な処理になりそうですね。バグも入りそうだけど、
まあ腕の見せ所なんでしょう。
ところで本当に並列に動作していることを確認した人はいますか?
だれも「すると思う」レベルの話しかしてませんし。
難しいのかな。
0986次スレ案内
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1034236536/l50
0987名無しさん@接続しっぱなし
NGNG> ところで本当に並列に動作していることを確認した人はいますか?
あなたが説明聞いても分からないだけだよ?
本当に並列に動作しているもの。
0988デフォルトの名無しさん
NGNG> 本当に並列に動作しているもの。
確認方法は ?
0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG|_| 。‘人
|文|⊂)
| ̄|∧|
 ̄ ̄ ̄ ̄ ̄
| |
|_|
|文| ノノ サッ
| ̄|
 ̄ ̄ ̄ ̄ ̄
0991デフォルトの名無しさん
NGNG|_|
|文| ノノ サッ
| ̄|
 ̄ ̄ ̄ ̄
0992fang
NGNG0993fang
NGNG0994fang
NGNG0995fang
NGNG0996fang
NGNG0997fang
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNGl⊆⊇`ヽ ≡ ヤホーイ
(´�D`Lノ ≡
m=○=mノ) ≡
_/_/(「_ノニコ ≡
( (0)=(__)0) ≡(´⌒(´⌒;;
1000デフォルトの名無しさん
NGNG( ^▽^) ─┴┴─┐
/ つ. 1000 │
/_____|└─┬┬─┘
∪ ∪ ││ _ε3
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。