ネットワークプログラミング相談室 Port21
レス数が1000を超えています。これ以上書き込みはできません。
0001echoちゃん
2008/02/29(金) 21:19:37Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port20
http://pc11.2ch.net/test/read.cgi/tech/1186418855/
関連スレ
Java ネットワークプログラミング 【教えて!】
http://pc11.2ch.net/test/read.cgi/tech/1086238859/
0002echoちゃん
2008/02/29(金) 21:20:51Port19 http://pc10.2ch.net/test/read.cgi/tech/1159692799/
Port18 http://pc11.2ch.net/test/read.cgi/tech/1171029896/
Port17 http://pc8.2ch.net/test/read.cgi/tech/1148944560/
Port16 ttp://pc8.2ch.net/test/read.cgi/tech/1136005644/
Port15 ttp://pc8.2ch.net/test/read.cgi/tech/1128088448/
Port14 ttp://pc8.2ch.net/test/read.cgi/tech/1118469143/
Port13 ttp://pc8.2ch.net/test/read.cgi/tech/1109793931/
Port12 ttp://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port11 ttp://pc5.2ch.net/test/read.cgi/tech/1096187183/
Port10 ttp://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port9 ttp://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port8 ttp://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port7 ttp://pc5.2ch.net/test/read.cgi/tech/1063035045/ ★行方不明
Port6 ttp://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port5 ttp://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port4 ttp://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port3 ttp://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port2 ttp://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port1 ttp://pc.2ch.net/tech/kako/970/970344582.html
0003echoちゃん
2008/02/29(金) 21:21:51UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
そのソースコード
http://www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
http://www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
Linux/POSIXソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
Windowsソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320029992/
0004echoちゃん
2008/02/29(金) 21:22:15http://www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
Webプロトコル詳解?HTTP/1.1、Webキャッシング、トラフィック特性分析
http://www.amazon.co.jp/exec/obidos/ASIN/4894715414/
WinSock2.0プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756142362/
Visual Basicではじめるネットワークプログラミング超入門
http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/
0005echoちゃん
2008/02/29(金) 21:22:38★規格
RFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
0006echoちゃん
2008/02/29(金) 21:23:41C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
C10K ヘヴィーロードサーバ(日本語訳)
http://www.hyuki.com/yukiwiki/wiki.cgi?TheC10kProblem
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
http://www.whitefang.com/rin/
Java で packet capture
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html
BoostSocket
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
http://www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
http://X68000.q-e-d.net/~68user/net/
0007echoちゃん
2008/02/29(金) 21:27:33ethereal - http://www.ethereal.com/
Wireshark - http://www.wireshark.org/
tcpdump - http://www.tcpdump.org/
Windump - http://netgroup-serv.polito.it/netgroup/tools.html
WinPcap - http://www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - http://www.employees.org/~bmah/Software/pchar/
Packetyzer - http://www.networkchemistry.com/products/packetyzer/
libevent - http://www.monkey.org/~provos/libevent/
★プロトコル
TTCP
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.html
UDP Hole Punching
http://homepage3.nifty.com/toremoro/p2p/firewall.html
★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
0008デフォルトの名無しさん
2008/02/29(金) 23:04:480009デフォルトの名無しさん
2008/02/29(金) 23:08:42| |
\_/
|
/  ̄  ̄ \
/ \ / \
/ ⌒ ⌒ \ よくぞこのスレを立ててくれた
| (__人__) | 褒美としてオプーナを買う権利をやる
\ ` ⌒´ / ☆
/ヽ、--ー、__,-‐´ \─/
/ > ヽ▼●▼<\ ||ー、.
/ ヽ、 \ i |。| |/ ヽ (ニ、`ヽ.
.l ヽ l |。| | r-、y `ニ ノ \
l | |ー─ |  ̄ l `~ヽ_ノ____
/ ̄ ̄ ̄ ̄ヽ-'ヽ--' / オプーナ /|
.| ̄ ̄ ̄ ̄ ̄ ̄|/| | ̄ ̄ ̄ ̄ ̄ ̄|/| ______
/ ̄オプーナ/|  ̄|__」/_オプーナ /| ̄|__,」___ /|
| ̄ ̄ ̄ ̄ ̄|/オプーナ ̄/ ̄ ̄ ̄ ̄|/ オプーナ /| / .|
| ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/| /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
0010デフォルトの名無しさん
2008/03/01(土) 14:29:190011デフォルトの名無しさん
2008/03/04(火) 13:04:04「Winsock Programmers FAQ 2.13 - ネットワークの異常切断はどのようにして検出できますか?」に
あるような状況で、プロトコルに「コマンド/応答」の仕組みがないやり取りをする場合があるときの話です。
クライアントアプリケーションを開発してるのですが、次のような場合どうすればいいのでしょうか?
1. クライアントアプリ(これを作っている)がサーバにconnectする
2. サーバからの要求を受け取り処理結果をsendする
このとき、ネットワークが異常切断していたら、disconnectして再connectすることを求められています。
異常切断しても、ローカルのソケットが生きている場合は、sendは失敗しません。
また、FAQにあるようにecho機能を追加することもできず、既存のプロトコルを変更することも
許されていません。
FAQにあるように、pingで生存確認するしかないんでしょうか?
0012デフォルトの名無しさん
2008/03/05(水) 00:36:53POST https://aaa.bbb.jp/ccc/ddd/eee HTTP/1.1
したいのですが、connectすると
10060「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
となってしまいます。
IEのアドレスにhttps://aaa.bbb.jp/ccc/ddd/eeeを入れてやると応答があります(ボディを送っていないのでエラーメッセージしか表示されませんが)。
どうしたらconnectしてPOSTできるようになるでしょうか?
httpsだから特別なことをしなければならんのでしょうか?(その辺がわかりやすいページや本を教えてもらえると助かります。どれもhttpのGETの例ばかりで、httpsやPOSTの例がなくって。)
よろしくお願いします!
0013デフォルトの名無しさん
2008/03/05(水) 00:53:29httpsなので特別なことをしなきゃならんです。どういうことをするかは
ここにはとても書き切れないぐらい複雑。
よく知らないけど、Windowsだったらwinsockじゃなくてwininetとかいう
ので簡単にできたりしないかな。
0014デフォルトの名無しさん
2008/03/05(水) 01:38:350015デフォルトの名無しさん
2008/03/05(水) 02:07:08TCPならKeepAliveもあるし、
接続してから一定期間リクエストが来なければ切る手もあるし。
001611
2008/03/05(水) 10:38:10やはり、KeepAliveしかないですか・・・。
リクエストのタイムアウトは、通信間隔が非常に長くなる(24時間を越える)場合もあるため、
なかなか厳しいです。
KeepAliveに関して詳しく調べてみます。
0017デフォルトの名無しさん
2008/03/05(水) 18:31:23つ http://www7a.biglobe.ne.jp/~tsuneoka/cgitech/3.html
0018デフォルトの名無しさん
2008/03/06(木) 00:44:39かなりオ�hルかんね。
0019デフォルトの名無しさん
2008/03/07(金) 02:09:24recvfrom()中にifdownでネットワーク断が発生した場合、
どうやって検知すればよいでしょう?
tcpdumpではifdown直後にNetwork is down.と表示されるので
何からの方法で検知できるとは思うのですが、、
0020デフォルトの名無しさん
2008/03/09(日) 02:31:43"012456789"
↑3が抜けてる
というような事が起こりえますか?
0021デフォルトの名無しさん
2008/03/09(日) 04:53:29規格上は "012" "3" "456789" という IP パケットに分
割されて "3" のパケットが抜けることがあるかもしれ
ないが、一つのパケットに再構成出来ないので UDP で
はパケットロストでアプリケーションには届かないし、
TCP ならパケット再送で正しいパケットが届く。
0022デフォルトの名無しさん
2008/03/09(日) 05:19:36レスありがとうございます
勉強になります
0023デフォルトの名無しさん
2008/03/09(日) 17:28:59"3" "4567890" という具合いに三つのパケットに分割し
て、なおかつ "3" のパケットが抜ければそういう状態
になるかも知れない。
TCP 使ってればまず問題ない。
0024デフォルトの名無しさん
2008/03/09(日) 22:29:59それ以下のレイヤで分割されたなら、全部
届くか届かないかでないの。
0025デフォルトの名無しさん
2008/03/09(日) 22:37:11> UDPレベルで分割送出するならともかく、
これが > 23 で
> それ以下のレイヤで分割されたなら、全部
> 届くか届かないかでないの。
これが > 21 のつもりだったんだけど、何か変?
0026デフォルトの名無しさん
2008/03/09(日) 22:52:100027デフォルトの名無しさん
2008/03/09(日) 23:53:28あー、ユーザーランドインタフェイス内部でのつもりだった。
もちろん、それが特に書かれてるのが TCP の RFC
なのはわかってるけど >>20 に環境が書かれてないんだもん。
0028デフォルトの名無しさん
2008/03/10(月) 22:47:33お前、シッタカはタイガイニシル
0029デフォルトの名無しさん
2008/03/11(火) 00:33:03分かり易く解説したサイトってない?
0030デフォルトの名無しさん
2008/03/11(火) 00:46:35・SMTPを使ったメールはインターネット上のあらゆるサーバを経由して転送される
・あらゆるサーバとは、自分のあずかり知らないサーバを経由する可能性がある
・あずかり知らないサーバを経由するということは、そのあずかり知らないサーバの管理者
がどうとでもすることができる
他にもあるが、これだけでも分かったつもりにはなれるだろ。
0031デフォルトの名無しさん
2008/03/11(火) 01:08:18電子商取引推進協議会(ECOM)のガイドラインで
プロトコル上の欠点を示唆してるようだが、詳しい理由を解説してないから、
そこを突っ込んでいる奴を。
http://www.ecom.jp/qecom/seika/
0032デフォルトの名無しさん
2008/03/11(火) 01:13:42第5章 通信基盤ガイドライン
http://www.ecom.jp/qecom/seika/naiyou/p2_tradewg/new5.pdf
>SMTP では、メールが相手に確実に届く保証がないこ
>とやデータの順次性を必ずしも保てないといったデータ
>送受信の確実性の問題がある。
0033デフォルトの名無しさん
2008/03/11(火) 01:16:33多分ここら辺りにポイントがあると予想する。
>なお、データの送受信の確実性の確保に関しては、
>通信レベルだけの対応では不十分であり、
>アプリケーションレベルでの対応が必要である。
0034デフォルトの名無しさん
2008/03/11(火) 01:26:350035デフォルトの名無しさん
2008/03/11(火) 01:35:220036デフォルトの名無しさん
2008/03/11(火) 01:38:38当たり前のことしか書いてない。まぁメールなんて使うなってこった。
0037デフォルトの名無しさん
2008/03/11(火) 01:46:10届くことなんて保証してないぞ。TCPは可能な限りの努力をするが、
届かないときはどうしようもない。
*確実*だけのキーワードだと、ダウンタイムとか冗長性とか、
障害耐性とか、コアとなるハブの存在だとか、クラスター性だとか
・・・・。
0038デフォルトの名無しさん
2008/03/12(水) 00:26:140039デフォルトの名無しさん
2008/03/12(水) 00:35:07メールサーバー本体と直接通信してなかったりするから
TCPソケットでエラーが出なくても届いてない可能性があるかと。
直通のftpメールなら確実だと思うけど。
0040デフォルトの名無しさん
2008/03/12(水) 12:36:310041デフォルトの名無しさん
2008/03/12(水) 21:52:33その直後にディスクがクラッシュするかもしれないからな
確実とはいえない
0042デフォルトの名無しさん
2008/03/12(水) 22:06:500043デフォルトの名無しさん
2008/03/13(木) 04:49:20SMTPプロトコルの欠点だけ論うなら、
bounceが存在する
->エラー通知が10年後に届いても文句言えない
->確実性✕
なんて部分があるな。
0044デフォルトの名無しさん
2008/03/19(水) 23:41:34一つのページに使われているインラインコンテンツが30以上あった場合
これらをダウンロードするためには
もう一回接続する必要がありますか?
0045デフォルトの名無しさん
2008/03/19(水) 23:54:540046デフォルトの名無しさん
2008/03/22(土) 21:06:10どうしたらいいですか?
0047デフォルトの名無しさん
2008/03/22(土) 21:24:16特に何か作る必要がないのなら、別に何も作らなくていいのでは?
0048デフォルトの名無しさん
2008/03/22(土) 22:16:48文字列を入力したらもう一方の端末でその文字列を表示するというのをソケットを使って作成しましょう
0049デフォルトの名無しさん
2008/03/26(水) 09:51:42ヘッダの読み取りに、1行ずつストリームから取得するという処理を
書いているのですが、1文字ずつrecvして、\r→\nのパターンが
来るまで繰り返す、という方法はありなんでしょうか?
他に何か良い方法はあるでしょうか。
0050デフォルトの名無しさん
2008/03/26(水) 10:19:150051デフォルトの名無しさん
2008/03/26(水) 10:23:39// 1行読み取り,改行を含む長さを返す,バッファに入りきらない場合はnul終端文字列の長さ
int readline(int sd, char *buf, int bufsize) {
int rlen = 0, wlen = 0, cr = 0;
char ch;
for (;;) {
int r = recv( sd, &ch, 1, 0 ) ;
if (r < 0) {
fprintf(stderr,"readline:error r < 0\n");
return r;
} else if(!r) {
fprintf(stderr,"readline:warning !r\n");
break ;
}
if (ch == '\n') {
if (!cr)
fprintf(stderr,"readline:warning !cr\n");
if (rlen < bufsize) buf[wlen++] = ch;
rlen++;
break;
} else {
cr = (ch == '\r') ? 1 : 0;
if (rlen < bufsize) buf[wlen++] = ch;
rlen++;
}
}
if (wlen>=bufsize)
wlen--; // nul終端文字列になるように調節
buf[wlen] = 0;
return wlen;
}
0052デフォルトの名無しさん
2008/03/26(水) 10:33:06ありがとうございます。
自分でバッファリングしてくこと考えたら
頭痛くなってきたので。
\rはオプション扱いに致します。
0053デフォルトの名無しさん
2008/03/27(木) 12:31:480054デフォルトの名無しさん
2008/03/27(木) 16:03:57ゲーム作ってて、NAT越えできたらなぁとよく思うんだけど・・・
0055デフォルトの名無しさん
2008/03/27(木) 21:09:58TCPで接続張ってしまえば、自由に通信できるよ。最初の
接続元はNATの内側から出ないといけないけど。
ゲームなら別にそれでもいいでしょ。
0056デフォルトの名無しさん
2008/03/27(木) 22:46:39まだftpか。httpまであと何年かかるかな。
0057デフォルトの名無しさん
2008/03/28(金) 08:56:49>最初の接続元はNATの内側から出ないといけないけど。
意味ねーじゃんw
0058デフォルトの名無しさん
2008/03/28(金) 10:30:09質問者の54です。ちょっと意味がわからないのですが、NAT越えとは以下のことができる技術という認識であってるでしょうか?
AとBは、両方ともルータの中の人間。直接やりとりは普通は無理。
Cというサーバーに、AもBも通信を行なう
Cが、AとBをうまく結びつける
AとBが直接やりとりできるようになる(Cを経由しない!!) ←NAT越え!
これができると、マッチングサーバーCはほとんど負荷無く運営できて良いのですが。
NintendoDSのWIFI対戦も、この仕組みだと聞いております。
このCサーバーを構築する方法は、個人で気軽に手の届く技術でしょうか?
(どうやら、それをツールとして売り出している企業はあるようなのですが)
0059デフォルトの名無しさん
2008/03/28(金) 10:53:250060デフォルトの名無しさん
2008/03/28(金) 11:05:36具体的ソースを提示しているサイトが見当たらないことが
TCPをUDPに切り替える足かせになっているような気がします。
概念はわかりやすいものなので、実験環境があればテストは簡単そうです。
この土日にでもテストしてみたいと思います。
他にも何か情報があれば嬉しいです。
NAT越えは面白い分野ですが、ム板では盛り上がっていないようなので…
0061デフォルトの名無しさん
2008/03/28(金) 11:16:39なんで用語とか各メーカーばらばらなんだか・・
0062デフォルトの名無しさん
2008/03/28(金) 11:35:02UPnP対応ルータじゃないルータって、いまどき売ってるかね?
0063デフォルトの名無しさん
2008/03/28(金) 13:34:36だね。きちんと整備されたライブラリ使えば、socketでlistenするのと、
UPnPでポート割り当てるの同感覚。特定のポート番号使えるのが、NAT内の1台だけだって制限があるけど。
0064デフォルトの名無しさん
2008/03/28(金) 14:26:22恥ずかしながら、初めてUPnPというものを知りました。
これは素晴らしい技術ですね。
早速サンプルソースも手に入れましたので、実験してみたいと思います。
ありがとうございました。
>>63
もしよろしければ、きちんと整備されたライブラリ〜というものの例をいただけるとありがたいです。
とりあえず
ttp://www.bosuke.mine.nu/neta/upnp.shtml
ここを参考に組んでみようと思います。
余談ですが、今たまたまGoogleで色々調べていたら、ここの前スレで同じサイトを参考に組もうとしている人を発見しましたw
0065デフォルトの名無しさん
2008/03/28(金) 15:30:45UPnPも最近になってやっと危険性が認知されてデフォでoffになったりしてるし。
http://jvn.jp/cert/JVNVU%23347812/
http://internet.watch.impress.co.jp/ cda/news/2008/01/17/18149.html
0066デフォルトの名無しさん
2008/03/28(金) 16:47:430067デフォルトの名無しさん
2008/03/28(金) 18:25:28RFC3489の"5. NAT Variations"あたりを見てみたら?
UDP Hole PunchingできるのはFull Coneだけでしょう.
たしかI-Dのどれかに,どの機種がFull Coneかのリストが載っていたような
>>65
TURNを作れば? :-)
0068デフォルトの名無しさん
2008/03/28(金) 22:28:430069デフォルトの名無しさん
2008/03/29(土) 07:01:44NAPTは遺物となってもFWは残る
0070デフォルトの名無しさん
2008/03/31(月) 04:51:240071デフォルトの名無しさん
2008/03/31(月) 10:23:370072デフォルトの名無しさん
2008/03/31(月) 12:14:16proxy serverといってもいろんな種類があるが何のプロトコルのproxy?
007370
2008/03/31(月) 13:11:11HTTPプロトコルです
0074デフォルトの名無しさん
2008/03/31(月) 13:22:48代表的なのは、
・ メソッドに書かれてる URL から正しくホストに接続する
・ http://www.example.com/path1/path2.html みたいな URL をホスト接続時は /path1/path2.html に変換する
・ プロキシ特有の環境変数を付加する (必要な場合)
・ CONNECT メソッドを正しく解釈する (CONNECT 以降はそのままデータの送受信を行う)
辺りかな。 RFC などのドキュメントを見るのが一番手っ取り早いとは思うが。
0075デフォルトの名無しさん
2008/03/31(月) 13:27:01http proxyはちゃんと作るとかなり複雑だが、少くともリクエスト内容は書き換えなきゃいけないだろ。
あとは、HTTP/1.0/1.1の場合分けとかKeepAliveとかpipelineとかchunkとか100 Continueとか、
真面目にやりだすと結構大変。
とりあえずRFC2616嫁
0077デフォルトの名無しさん
2008/03/31(月) 13:37:560078デフォルトの名無しさん
2008/03/31(月) 13:39:24そないなことあらへんで。
0079デフォルトの名無しさん
2008/03/31(月) 13:44:170080デフォルトの名無しさん
2008/03/31(月) 13:47:37あ、なるほど。
0081fxで裁判中。教えて
2008/04/03(木) 08:29:02裁判の内容をここに記してみました
システム障害等でくわしいかた、是非とも情報をお待ちしております。
よろしくお願いします。
http://members3.jcom.home.ne.jp/chaochu/
0082デフォルトの名無しさん
2008/04/04(金) 00:49:43そのNGNがv6マルチプレフィクス問題で、やっぱNAPT使うか?とも言われている件。
0083デフォルトの名無しさん
2008/04/09(水) 11:10:34一般論的なセキュリティ上の推奨をどこかで見たようながあったような気がするんだが、
これって単に攻撃のための情報を減らす目的でしたかね?
何かそういった鉄則集みたいなのを 10 年くらい前にどこかで見たような記憶があるんですが
どこかご存知ないですか?
0084デフォルトの名無しさん
2008/04/12(土) 11:31:55無料のデータベースであるMySQLかSQLServer2005Expressを使おうと思ってますが
おすすめのものとその理由など教えていただきたいです。
0085デフォルトの名無しさん
2008/04/12(土) 11:35:230086デフォルトの名無しさん
2008/04/12(土) 12:00:58スレ違い以前に板違いだぞ、DB板かゲ製行ってくると良い
0087デフォルトの名無しさん
2008/04/12(土) 13:32:10いってきます
0088デフォルトの名無しさん
2008/04/12(土) 17:05:470089デフォルトの名無しさん
2008/04/12(土) 17:07:230090デフォルトの名無しさん
2008/04/12(土) 18:39:30投げてみました。
ApacheではKEEPALIVEがOffにされていた場合
Connectionがcloseとなっています。
closeであるかないかで判定しようと思うのですが、
どうでしょうか?
0091デフォルトの名無しさん
2008/04/12(土) 18:41:43Connection: close ならエンティティボディ送信後に切断だよ。
RFC 嫁。persistent connection でググレ
0092デフォルトの名無しさん
2008/04/12(土) 21:35:080093デフォルトの名無しさん
2008/04/12(土) 21:40:220094デフォルトの名無しさん
2008/04/12(土) 21:44:06ウラル貼ってくれ
0095デフォルトの名無しさん
2008/04/12(土) 21:54:17URL貼って下さい
0096デフォルトの名無しさん
2008/04/12(土) 21:56:350097デフォルトの名無しさん
2008/04/12(土) 21:59:34いや、
RFCの何番?
0098デフォルトの名無しさん
2008/04/12(土) 22:03:28そもそも>>1に「関連リンク云々」書いてあること読めないか?
0099デフォルトの名無しさん
2008/04/12(土) 22:16:56いや、
だからHTTPヘッダが大文字で返ってくるサーバとかあるのか、
って聞いてんだよ
0100デフォルトの名無しさん
2008/04/12(土) 22:21:100101デフォルトの名無しさん
2008/04/12(土) 22:26:46ありがとうございます。
0102デフォルトの名無しさん
2008/04/12(土) 22:57:12その規定が書いてあるのがRFCなんだけど。
0103デフォルトの名無しさん
2008/04/12(土) 23:05:57素で意味がわからん。
0104デフォルトの名無しさん
2008/04/12(土) 23:30:50規定してあるよ。おまいがよく読めw
0105デフォルトの名無しさん
2008/04/13(日) 00:09:310106デフォルトの名無しさん
2008/04/13(日) 00:49:58ttp://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec4.2
4.2 メッセージヘッダ
一般ヘッダ (section 4.5)、リクエストヘッダ (section 5.3)、レスポンスヘッダ (section 6.2)、エンティティヘッダ (section 7.1)
各フィールドを含む HTTP ヘッダフィールドは、RFC 822 [9] の Section 3.1 で与えられているものと同じである共通のフォーマットに従う。
それぞれのヘッダフィールドは、名前、その後にコロン(":")、そしてフィールド値から成る。
フィールド名は、大文字・小文字を区別しない。
「大文字と小文字を区別しない」
0107デフォルトの名無しさん
2008/04/13(日) 00:54:11そりゃRFCだろ。
0108デフォルトの名無しさん
2008/04/13(日) 01:00:510109デフォルトの名無しさん
2008/04/13(日) 09:39:25言い返されたからってムキになるなよ(;´Д`)
0110デフォルトの名無しさん
2008/04/13(日) 10:10:40出て行ってください
0111デフォルトの名無しさん
2008/04/19(土) 21:15:07Winsockで
0112デフォルトの名無しさん
2008/04/19(土) 21:46:270113デフォルトの名無しさん
2008/04/19(土) 22:11:14アプリが送受信しているデータの表示方法がなかなか分かりません。
tcpdump -s 1600 -X tcp port 1024
と打った上で、アプリに送受信させるとデータが含まれたパケットの中身が
バイナリで表示されますが、アプリが送受信しているデータだけ表示させる
方法はないでしょうか?
どなたか教えてください。よろしくおねがいいたします。
0114デフォルトの名無しさん
2008/04/19(土) 23:17:37つwireshark
0115デフォルトの名無しさん
2008/04/19(土) 23:52:330116デフォルトの名無しさん
2008/04/20(日) 03:30:50……(´・ω・`)
0117デフォルトの名無しさん
2008/04/22(火) 14:58:59よくサーバはクライアントのパケットを信用してはいけないと書かれていて、
逆にクライアントはサーバのパケットを信用して良いのでしょうか?
0118デフォルトの名無しさん
2008/04/22(火) 15:21:33信用できるサーバとしか通信しないなら信用してもいいかもしれないが、
信用できないという前提で組む方が、サーバに何かバグがあったり、
通信の改ざんを受けたり、なりすましサーバに当たったりしたときに、安全でいいと思うよ。
0119デフォルトの名無しさん
2008/04/22(火) 17:24:53なるほど、ありがとうございます
0120デフォルトの名無しさん
2008/04/22(火) 17:28:580121デフォルトの名無しさん
2008/04/22(火) 22:03:410122デフォルトの名無しさん
2008/04/22(火) 22:30:160123デフォルトの名無しさん
2008/04/23(水) 06:22:28どういう取り決めにしてますか?
自分はhttpと同じで、行単位で空改行までを
送受信単位にして、必要ならオプションの
バイナリデータが続く、という感じにしてますが。
いきなりバイナリでやりとりするのは
データ構造決めるのが面倒なんで。
何か既成のモデルがあったらいいんですが。
0124デフォルトの名無しさん
2008/04/23(水) 09:41:100125デフォルトの名無しさん
2008/04/23(水) 10:24:29任意長バイナリは GIF っぽくサブブロック化
0126デフォルトの名無しさん
2008/04/23(水) 15:46:48受けるときは寛容に、が基本。
http://tools.ietf.org/html/rfc791
> In general, an implementation must be
> conservative in its sending behavior, and
> liberal in its receiving behavior.
0127デフォルトの名無しさん
2008/04/23(水) 16:09:50俺の長い組み込み経験からのアドバイス。
1.レイヤを定める。下位レイヤは上位レイヤのデータ
構造を知らなくてもやり取り出来るようにする。バイ
ナリ←→プログラムデータの変換部分との間にユーティ
リティ的なレイヤがあると便利。
2.最初に「バイト長」とか入れない。これをやられる
と送信側でデータが揃わないと送出開始出来なくなる。
仕事でこういうプロトコル決めてる奴を見ると殺意が
芽生える。
3.1や2を実現するために、たとえバイナリでもエス
ケープ文字を用意する。俺が良く使うのは SLIP のエ
スケープ(昔仕事で使ったから)。下位レイヤでデー
タやコマンドの開始/終了などを用意する。読む側の
下位レイヤで「開始」が来たら読んでる途中のものを
全部破棄して例外を投げるように(初期状態 read で
catch するように)すると、通信相手のバグその他で
変な状態に陥っても元に戻ることが保証出来る。
0128デフォルトの名無しさん
2008/04/23(水) 16:23:06あんまり殺気たてんでくれ。
俺の20プロダクト中16回コロされてる事になる。
0129デフォルトの名無しさん
2008/04/23(水) 18:21:400130デフォルトの名無しさん
2008/04/23(水) 18:40:40GIF と PNG のフォーマットは通信用データ構造のお勉強に最適。
0131デフォルトの名無しさん
2008/04/23(水) 20:35:39>2.最初に「バイト長」とか入れない。
が、なぜ以下のようになるのかまったく意味不明。
>これをやられると送信側でデータが揃わないと送出開始出来なくなる。
データそろえて送信したところで、ネットワーク上で何バイトずつ
受信側に届くかなんて何の保証もないわけで。そろえて送る
理由がまったくない。
0132デフォルトの名無しさん
2008/04/23(水) 20:46:19127 じゃないけど、何を言ってるか分からないのは君だけだと思うよ。
0133デフォルトの名無しさん
2008/04/23(水) 22:27:05データ長は,送るものが先に決まるならプロトコルとしてはありかもしれないが、
エスケープ文字を入れて区切りの失敗を見つけるぐらいならソケット閉じてしまったほうが早いのでは?
むしろUDPで自分で順番を制御するとか。
0134デフォルトの名無しさん
2008/04/23(水) 22:38:110135デフォルトの名無しさん
2008/04/23(水) 22:53:03DLNAとかではHTTPベースでchunked encodingとかあったが、あれは、ストリーム送信用に送信開始時にデータ長が不定だったからだが。
ほかもそんなことが多いのかな?
0136デフォルトの名無しさん
2008/04/23(水) 23:09:21持ってこられると、XSL の処理結果や BLOB を垂れ流したい場合は一度ファイルか何かに
落とさなきゃいけないからかなり不便。
0137デフォルトの名無しさん
2008/04/23(水) 23:13:02データ全体を収めるバッファを用意するなんてありえない。
数KBさえ無駄にできない。
お前らはこういう基本すらわかってないんだな。
0138デフォルトの名無しさん
2008/04/23(水) 23:59:50リクエストヘッダーへ
Proxy-Connection: keep-aliveも
Connection: Keep-Aliveも指定しているのですが
PROXYがサーバー間の接続を勝手に切ってしまいます
クライアントー>PROXYの接続は維持しています
サーバー側のエラーコードは10054を示しています
サーバーからのレスポンスはしっかり帰ってくるのですが
直後に切られます。 なんで?
リクエストはPOSTなんですが これって正常動作?
0139デフォルトの名無しさん
2008/04/24(木) 00:04:51時間ボトルネックが何処かを考えれば自明。
どうがんばっても通信速度以上のスピードでは送れない
んだから、なるべく早く送信開始して、バッファアンダー
ラン(タイムアウトによる PUSH とか)にならないよう
にバッファに詰めていければ一番効率が良い。
とはいえ最近は下手するとディスクの方が遅かったりす
るからなー。
>>136
> 内容検証用の MD5 ハッシュも全体を走査してみないと決定できない
送信時は送信しながら計算して最後に付加すればいいん
だけど、受信は受信しながらオブジェクト作っても合致
しないときに破棄する必要があるんで面倒なんだよな。
0140デフォルトの名無しさん
2008/04/24(木) 00:09:05プロキシがサーバとの接続を維持する気がないなら Keep-Alive でリクエスト出したらいかん。
多分プロキシ実装が Persistent Connection に対応していないし、リクエストヘッダも何も考えず
素通りさせてるだけだと思うが。
0141デフォルトの名無しさん
2008/04/24(木) 00:13:59受信サイズの最後尾までファイルを拡張してから受信を開始すると途中で中断したときにある個所から後ろがごみデータが充填するんだが、
ファイルIOで一定サイズ移行のデータを削除してファイルサイズを小さくするって言う命令が無いために、ファイルを拡張すること自体が駄目何だよねぇ。
どこかに有効なファイルサイズを別に保存すればいいんだが、管理ファイルが散乱するので避けたいのだが、いい方法は無いものか。
0142デフォルトの名無しさん
2008/04/24(木) 00:16:39ただ、PROXYは定番どころのSQUIDをデフォルトで
使用しています。 レスポンスヘッダーがおかしければ
クライアントにデーターが届かないはずなんですが・・・
困ってます。
0143デフォルトの名無しさん
2008/04/24(木) 00:40:33?
PC 程度以上の OS のファイルシステムなら (ANSI 標準じゃないにしても) 大抵用意されてるんじゃないか?
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/ftruncate.2.html
>>142
よく知らんけど Squid が HTTP/1.0 互換モードで動いてるとか。
0144デフォルトの名無しさん
2008/04/24(木) 00:41:55void main(void)
{
int a,b,c;
printf("数字を入力してください\n");
scanf("%d",&a);
printf("数字をまた入力してください\n");
rewind(stdin);
scanf("%d",&b);
printf("数字をまたまた入力してください\n");
scanf("%d",&c);
if(a == b == c)
printf("等しいです,\n");
else
printf("等しくないです,\n");
}
これでa==b==cだったら"等しい"と表示させるように組んでるのに 1、1、1以外の数字は入力してもは全部"等しくないです"になるのは
なんででしょうか?
0145デフォルトの名無しさん
2008/04/24(木) 00:44:52http://pc11.2ch.net/test/read.cgi/tech/1206809426/
でどうぞ。
0146デフォルトの名無しさん
2008/04/24(木) 00:50:11スレ違いだけど
君が参考にしてるものは信用しないほうがいい
0147デフォルトの名無しさん
2008/04/24(木) 00:58:41たしかにSquidが吐き出すヘッダーは 1.0になっています
調べてみます。
0148デフォルトの名無しさん
2008/04/24(木) 02:08:49できれば 1:1 じゃなくて中継サーバかました n:n で使える奴。
0149デフォルトの名無しさん
2008/04/24(木) 02:38:39TCP
0150デフォルトの名無しさん
2008/04/24(木) 03:12:13もう一層上で。
0151デフォルトの名無しさん
2008/04/24(木) 03:48:092ちゃん
0152デフォルトの名無しさん
2008/04/24(木) 05:17:260153142
2008/04/24(木) 05:33:32公開PROXYでテストしたところうまくいきました
また、ぐぐったところ SQUIDはHTTP/1.1をHTTP1.0に
勝手に変換する事がわかりました
(ヘッダーは別としてかといってPROXY側から切断するので???ですが)
これ以降は板違いですので移動します m(。。)m
0154デフォルトの名無しさん
2008/04/24(木) 07:10:52ありがとう。知らなかったよorz
少しぐぐって、winだと_chsizeや下のサイトがあった。
http://www.void.in/wiki/PortableFtruncate
ANSIの関数全て読んだのは93年だったがそのころからあったのかな・・・・
0155デフォルトの名無しさん
2008/04/24(木) 23:26:33プロミスキャスモードにしないと何もパケットを受信しません。
自分宛のパケットだけキャプチャしたいのでプロミスキャスモードは使用したくないのですが
プロミスキャスにしなくてもパケットを受信する事は出来るのでしょうか?
0156デフォルトの名無しさん
2008/04/25(金) 23:31:22カイヤでstartとか送って、endが届くまでバイナリが続くとかにすればいいの?
0157デフォルトの名無しさん
2008/04/25(金) 23:32:450158デフォルトの名無しさん
2008/04/25(金) 23:47:02例えばディスクへアクセスするドライバを書くときに、
ファイルのサイズが判明するまでHDDに書き込めない(領域を確保出来ない)ようだとやりにくくて仕方が無い、
というような話だと思う。たぶん。
0159デフォルトの名無しさん
2008/04/25(金) 23:49:35HDDのドライバじゃなくてファイルシステムの造りの方が適切だな。
0160デフォルトの名無しさん
2008/04/26(土) 00:24:08尻にしかれた某芸能人の事かとオモタ
0161デフォルトの名無しさん
2008/04/26(土) 17:04:22> GIF と PNG のフォーマットは通信用データ構造のお勉強に最適。
画像フォーマットはツールが知らない種類のチャンクを読み飛ばせるように
バイト長が入ってる。通信の為じゃない。
0162デフォルトの名無しさん
2008/04/26(土) 17:07:24インタレースも知らないのか?
0163デフォルトの名無しさん
2008/04/26(土) 17:07:33ま、確かにそうなんだけど、GIFはCompuServe由来だし、PNGはPortable Network Graphicsだから、通信用である事も意識していたと思うよ。
0164デフォルトの名無しさん
2008/04/27(日) 14:03:53思いっきり局部しか見てませんて感じのレスだな。
0165デフォルトの名無しさん
2008/04/28(月) 10:45:56データがそろわないと、長さが書けないから送信できず、バッファが要る、ってのは、
可変長データならチャンク化すれば済むこと。
固定長データなら、バイト列にエンコーディングするレイヤよりも上のレイヤが先にデータ長を宣言すれば済む。
0166デフォルトの名無しさん
2008/04/28(月) 10:47:38素直に聞けよ。
0167デフォルトの名無しさん
2008/04/28(月) 14:00:03適材適所
一長一短
0168デフォルトの名無しさん
2008/05/06(火) 07:23:41MTU の 1,500B とかっていうサイズは、IP パケットがさらにその下のレイヤーで
分割されているということですかね?
0169デフォルトの名無しさん
2008/05/06(火) 09:36:310170デフォルトの名無しさん
2008/05/06(火) 14:49:23パケットサイズをもらってきておいて、
IPパケットを送出する際に分割するような
0171デフォルトの名無しさん
2008/05/06(火) 15:32:52これも実装依存だそうだ
0172デフォルトの名無しさん
2008/05/06(火) 17:14:110173デフォルトの名無しさん
2008/05/07(水) 23:22:32PULLHUP相当のエラーって感知できますか?
大人しくpull()った方がいい?
0174デフォルトの名無しさん
2008/05/08(木) 04:11:090175デフォルトの名無しさん
2008/05/08(木) 22:18:04どうやって処理すればいいの?
単純にクリアするだけでおk?
0176デフォルトの名無しさん
2008/05/09(金) 04:03:10fdsetは呼ぶ前にコピーして、そっちをselectに掛けてる。
コピーに変更があったら手動でオリジナルを更新。
何かのサンプルの真似だけど。
0177デフォルトの名無しさん
2008/05/09(金) 04:08:31わざわざFTPとか起動するの面倒なときっていい方法ありますか?
0178デフォルトの名無しさん
2008/05/09(金) 04:20:04でggr
0179デフォルトの名無しさん
2008/05/09(金) 05:04:50たとえばpoderosaを使ってる場合。
0180デフォルトの名無しさん
2008/05/09(金) 11:39:530181782
2008/05/10(土) 21:29:28よろしくオナガイシマス
linuxでの実装、通信関連の実装の経験の無い未熟ものです
http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html
linux TCPサーバー側
という部分のコードをコンパイルしているのですが、
accept()システムコールのこの部分で
dstSocket = accept(srcSocket, (struct sockaddr *) &dstAddr, &dstAddrSize);
error: invalid conversion from \342\200\230int*\342\200\231 to \342\200\231 socklen_t\342\200\231
と怒られています
どうしたら怒られなくなりますか
コンパイラは gcc-4.1.2-33です
0182デフォルトの名無しさん
2008/05/10(土) 21:31:40名前 782
スマン間違えてシマイマスタ
0183デフォルトの名無しさん
2008/05/10(土) 22:55:300184デフォルトの名無しさん
2008/05/10(土) 23:04:14コメント文で2バイト文字を使っていますが
ソースコードでは使っていません
0185デフォルトの名無しさん
2008/05/10(土) 23:09:43dstAddrSize が socklen_t ではないっていう型エラーでは? int で宣言してない?
0186デフォルトの名無しさん
2008/05/10(土) 23:50:33>>tAddrSize が socklen_t ではないっていう型エラーでは? int で宣言してない?
ビンゴでした、socken_t型で宣言したら、エラーが消えました
後、
#include <string.h>
#include <unistd.h>
を追加し
int status;
も追加し
gcc tcp_serv.c -lsocket
とコンパイルすると
/usr/bin/ld: cannot find -lsocket
collect2: ld はステータス 1 で終了しました
となっ てしまいました・・・・・
0187デフォルトの名無しさん
2008/05/10(土) 23:55:060188デフォルトの名無しさん
2008/05/11(日) 00:01:30どうも、そのようですね
HPが古いのでコンパイラのバージョンが違うから、こんなにエラーが出たのだと思います
g++ tcp_serv.c -o tcp_sev
でコンパイルに成功しましたが
Waiting for connection ...
のままなのですが、これで成功なのでしょうか?
クライアントと接続したらこのメッセージは消えるものなのかな・・・・?
0189デフォルトの名無しさん
2008/05/11(日) 00:03:43gcc tcp_serv.c -o tcp_sev
でした
0190デフォルトの名無しさん
2008/05/11(日) 00:23:280191デフォルトの名無しさん
2008/05/11(日) 10:05:45>>181です
thx
HPのコードを修正して、今しがたserverとclientの、実行ファイルを、同一PC内ですが起動して
Wiresharkでパケットが流れているのを確認シマスタ
今書いているPCの他に後2台Windows XPとFedora Core 8が繋がっているので
このサーバーで対戦型のオセロゲームでも実装してみようと思います^^
一応C++使い(MFC)なのでWindows側の実装は難しく無いんだけど
linuxのシステムコールやAPIの使い方を知らないのが痛い・・・・orz
とりあえずMFCでいう処の、GetKeystate()関数のような、linuxでのキーボード入力のAPIが知りたい
0192デフォルトの名無しさん
2008/05/11(日) 10:29:13select() が使えませんか?
0193デフォルトの名無しさん
2008/05/11(日) 10:43:50>>191です
なるほど、キー入力の前に接続方法を、再考する必要がありますね
複数のclientが、ぶらさがるサーバの場合、acceptシステムコールや、recvシステムコールをコールして実行してして
一旦、接続行われるとsocketをcloseするまでは、他からのリクエストが受けれなくなりますね・・・・orz
そこでselect()システムコールの出番ですね、ちょいと調べてみます。
0194デフォルトの名無しさん
2008/05/11(日) 10:48:30MFCの糞ソケットクラス使ってるとこの辺の感覚が分からんかも。
0195デフォルトの名無しさん
2008/05/16(金) 00:09:14抜粋したコードは以下のとおりです。
WSADATA wsaData;
int len;
static SOCKET serverSocket;
static struct sockaddr_in addr;
if (WSAStartup(MAKEWORD(2, 2), &wsaData)) return -1;
serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket == INVALID_SOCKET) return -1;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = INADDR_LOOPBACK; // ★ループバックアドレスを設定
addr.sin_port = htons(0); // ★ポート番号の自動割り振り
bind(serverSocket, (struct sockaddr *)&addr, sizeof(addr));
len = sizeof(addr);
getsockname(serverSocket, (struct sockaddr *)&addr, &len); // 自動的に割り振られたポート番号を取得
printf("%s\n", addr.sin_port); // 0が出力される
listen(serverSocket, 1);
getsocknameを行った後でaddr.sin_portに割り振られたポート番号が入っていることを期待するのですが、WinXP+VC7.1では0になっています。
手順がどこか悪いのでしょうか?
0196195
2008/05/16(金) 01:04:52自己レスです。
addr.sin_addr.S_un.S_addr = INADDR_LOOPBACK; // ★ループバックアドレスを設定
↓
addr.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
↓もしくは
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
でした。
また、addr.sin_portは使うときにはntols(addr.sin_port)としてやる必要がありました。
0197デフォルトの名無しさん
2008/05/25(日) 08:38:08winsock、TCP/IP非同期の、ゲーム用のチャットを作ってます。
クライアントからサーバーにチャット文が届いたらfor文で回して
各クライアントのソケットにsendしているのですが、
(for(i=0,i<MAXCLIENT,i++) send(socket[i])みたいな感じです)
この方法だとユーザーが少ないうちはいいのですが、
ユーザー全体数が150人くらいになると重くなります。
少しタイムラグがあって届くみたいな感じです。
どうすれば解決するでしょうか?
よろしくお願いします。
0198デフォルトの名無しさん
2008/05/25(日) 09:03:570199デフォルトの名無しさん
2008/05/25(日) 10:19:330200デフォルトの名無しさん
2008/05/25(日) 10:21:43UDPにする
0201デフォルトの名無しさん
2008/05/25(日) 10:49:35ノンブロッキングにする
0202デフォルトの名無しさん
2008/05/25(日) 13:25:460203デフォルトの名無しさん
2008/05/25(日) 13:28:480204デフォルトの名無しさん
2008/05/25(日) 14:40:10そんなに気になるラグはなかったぞ。多くても150msくらいの遅延しかない。
プログラム的に問題あるんじゃない?TCPでもsendにそんなに時間かかるって事はないと思うけど・・・
送信するデータのサイズにもよるけどね。
0205デフォルトの名無しさん
2008/05/25(日) 14:51:07一匹でも激遅クライアントがいると
そこでsendが糞詰まりを起こして全体が遅くなる
0206デフォルトの名無しさん
2008/05/25(日) 15:06:040207デフォルトの名無しさん
2008/05/25(日) 15:56:120208デフォルトの名無しさん
2008/05/25(日) 20:13:360209デフォルトの名無しさん
2008/05/25(日) 20:29:590210デフォルトの名無しさん
2008/05/25(日) 23:18:000211デフォルトの名無しさん
2008/05/26(月) 00:33:39for文じゃなくてマルチスレッドにするといいのかな?
どうも同じような気がするのですが、一応やってみます。
0212デフォルトの名無しさん
2008/05/26(月) 02:11:21とかもう救いようがないな。
0213デフォルトの名無しさん
2008/05/26(月) 03:31:040214デフォルトの名無しさん
2008/05/26(月) 10:34:34>TCP/IP非同期
って書いてあるやん
150人に一斉同報するのってフツーに重いんじゃないの
0215デフォルトの名無しさん
2008/05/26(月) 10:38:070216デフォルトの名無しさん
2008/05/27(火) 02:32:22環境を書いてないからなんとも言えんがな。
0217デフォルトの名無しさん
2008/05/27(火) 02:57:490218デフォルトの名無しさん
2008/05/27(火) 09:04:41かつ数百キロバイトのデータが必要になる場合があるときは
・単一スレッドから非ブロッキングモードで送信
・接続毎にキューを持ったスレッドを作成してブロッキングモードで送信
どちらがいいいのでしょうか?
接続クライアント数は10程度です。
0219デフォルトの名無しさん
2008/05/27(火) 09:33:28そうだとしてもブロッキングにはしないなあ、中断しにくいから
0220デフォルトの名無しさん
2008/05/28(水) 19:59:52ネットゲームの延長の質問ということでご了承ください><
直接アプリのアイコンをダブルクリックで起動じゃなくって、
ハンゲームとかのHPみたいにゲームスタートみたいなボタン(リンク)を
クリックするとアプリが起動するのありますよね。
HPからユーザー側のアプリが起動できちゃうと悪さができちゃうからムリ
みたいな事も聞いたことあるんだけど。。。
ああいうのってどうやってるのでしょうか?
0221デフォルトの名無しさん
2008/05/28(水) 21:26:27ためしに登録してみたが・・・
ActiveXコントロールのインストールが必要ですって言われたぞ
0222デフォルトの名無しさん
2008/05/28(水) 21:27:07#厳密には署名がなくても不可能ではないけど、
#そのセキュリティを緩めるのは致命的な筈
0223デフォルトの名無しさん
2008/05/28(水) 21:27:450224デフォルトの名無しさん
2008/05/28(水) 21:28:47ググレカス
0225デフォルトの名無しさん
2008/05/28(水) 21:34:28多分有料ですよね。
でも大体わかりました、ありがとうございます!
0226デフォルトの名無しさん
2008/05/28(水) 21:36:590227デフォルトの名無しさん
2008/05/29(木) 20:55:00東京藝術大学音楽学部 羽目鳥祭り開催中
http://school7.2ch.net/test/read.cgi/musicology/1211727581/
0228デフォルトの名無しさん
2008/05/30(金) 05:21:46ユーザーがインストールを許可する事でインストールされる。
インストールしなければ動かない。
実体はDLLかEXEなので起動されれば何でもできてしまう。
よくスパイウェアとして使われる。
よほどの馬鹿でなければ
信用あるサイト以外からはインストールしないので
作っても無駄
0229デフォルトの名無しさん
2008/05/30(金) 05:27:240230デフォルトの名無しさん
2008/05/30(金) 08:14:56署名のないActiveXを使ってる企業などのサイトで「警告が表示されますがOKを押してください」なんてわざわざ解説してたりするし。
「インストール手順を増やすうざいダイアログ」ぐらいにしか思ってないんじゃない。
あれを見るにつけ、日本って終わってると思う。
0231デフォルトの名無しさん
2008/05/30(金) 19:26:570232デフォルトの名無しさん
2008/05/30(金) 21:11:410233デフォルトの名無しさん
2008/05/31(土) 20:30:020234デフォルトの名無しさん
2008/05/31(土) 23:41:10ダウンロードに成功したり失敗したり 2分の1の確率で動いているのですが、
ダウンロードに成功しないのは なにが原因でしょうか?
0235デフォルトの名無しさん
2008/05/31(土) 23:49:58どこで何のエラーが返ってきてるとか
0236デフォルトの名無しさん
2008/05/31(土) 23:55:450237デフォルトの名無しさん
2008/06/01(日) 00:14:20h = URLDownloadToFile( 0, http, file, 0, 0 );
switch(h){
case S_OK:
printf( " success.\n" );
break;
case E_OUTOFMEMORY:
printf( " E_OUTOFMEMORY\n" );
break;
case INET_E_DOWNLOAD_FAILURE:
printf( " INET_E_DOWNLOAD_FAILURE\n" );
break;
default:
printf( " error?\n" );
break;
}
上のようにしてやっているのですが、 h が default の値しか返さなくて何が原因なのかがわからないのです。
0238デフォルトの名無しさん
2008/06/01(日) 00:20:46なんというゆとり
0239デフォルトの名無しさん
2008/06/01(日) 00:24:560240デフォルトの名無しさん
2008/06/01(日) 00:31:06戻り値は -2146697510 です
意味わかるんですか?
0241デフォルトの名無しさん
2008/06/01(日) 00:32:33リファレンスには
S_OK
E_OUTOFMEMORY
INET_E_DOWNLOAD_FAILURE
の3つしか 特に戻り値として明記されていませんでしたので これ以外の戻り値は わかりません。
0242デフォルトの名無しさん
2008/06/01(日) 00:40:10MSに抗議しないと
0243デフォルトの名無しさん
2008/06/01(日) 00:40:420244デフォルトの名無しさん
2008/06/01(日) 01:10:010245デフォルトの名無しさん
2008/06/01(日) 01:12:17おまえすげえなwww
3つの戻り値の和を返すというのはいったいどういうことを言いたいんだろうかこの関数は
0246デフォルトの名無しさん
2008/06/01(日) 01:20:041245206じゃハゲ
テキトーなこと抜かしてるんじゃねーよボケ
死ね工作員
0247デフォルトの名無しさん
2008/06/01(日) 01:40:250248デフォルトの名無しさん
2008/06/01(日) 01:52:000249デフォルトの名無しさん
2008/06/01(日) 01:54:150250デフォルトの名無しさん
2008/06/01(日) 01:55:03ビット和だろ常考
0251デフォルトの名無しさん
2008/06/01(日) 01:59:408 は失敗をあらわす。
b は FACILITY_CERT で、電子証明書関連のエラーだとわかる。
feda は不明。
httpsで繋ごうとして何かがまずかったんだなとはわかるね。
0252デフォルトの名無しさん
2008/06/01(日) 02:09:450253デフォルトの名無しさん
2008/06/01(日) 04:57:280254デフォルトの名無しさん
2008/06/01(日) 05:07:10言語は C/C++ Windowsでお願いします
0255デフォルトの名無しさん
2008/06/01(日) 05:08:390256デフォルトの名無しさん
2008/06/01(日) 05:19:49何でしょうか?
0257デフォルトの名無しさん
2008/06/01(日) 05:23:230258デフォルトの名無しさん
2008/06/01(日) 05:49:25ネットワークでなく インターネットの接続です
0259デフォルトの名無しさん
2008/06/01(日) 05:50:530260デフォルトの名無しさん
2008/06/01(日) 05:53:140261デフォルトの名無しさん
2008/06/01(日) 05:56:17ドメインならgethostbynameでIPに変換可能
あとは一緒
0262デフォルトの名無しさん
2008/06/01(日) 05:56:57ttp://sakuratan.ddo.jp/imgboard/img-box/img20080601055455.jpg
のようなダイアログがでたのですが、これではないやつで
インターネット接続関連のダイアログがでてくると幸いです
0263デフォルトの名無しさん
2008/06/01(日) 06:02:35Internet Protocolを使ってないコンピュータネットワークもあるってこと。
0264デフォルトの名無しさん
2008/06/01(日) 06:30:210265デフォルトの名無しさん
2008/06/01(日) 06:51:530266デフォルトの名無しさん
2008/06/01(日) 07:41:40あるわけないだろ。
ばか?
0267デフォルトの名無しさん
2008/06/01(日) 07:45:56うせろキチガイ
0268デフォルトの名無しさん
2008/06/01(日) 07:47:430269デフォルトの名無しさん
2008/06/01(日) 08:31:21ある意味犯罪
0270デフォルトの名無しさん
2008/06/01(日) 09:43:55アナタを・・・
telnetです・・・
0271デフォルトの名無しさん
2008/06/01(日) 15:34:01AppleTalkとかIPXは?
0272デフォルトの名無しさん
2008/06/01(日) 15:34:40Win32APIでネットワークアダプタを無効にするとか
やり方知らんが多分できるとオモ
0273デフォルトの名無しさん
2008/06/01(日) 15:48:13どうしてですか?XP SP2です
0274デフォルトの名無しさん
2008/06/01(日) 16:05:420275デフォルトの名無しさん
2008/06/01(日) 18:13:05ググればすぐわかる。
0276デフォルトの名無しさん
2008/06/01(日) 19:20:30何か参考になるものとかありますか?
0277デフォルトの名無しさん
2008/06/01(日) 20:02:120278デフォルトの名無しさん
2008/06/01(日) 23:23:04理由は?
0279デフォルトの名無しさん
2008/06/01(日) 23:37:340280デフォルトの名無しさん
2008/06/02(月) 04:57:580281デフォルトの名無しさん
2008/06/02(月) 10:36:41オンラインゲームが流行ったときに不況で
誰も手を出さなかったとういのもあるかも
そして>>279
0282デフォルトの名無しさん
2008/06/02(月) 13:03:35あからさまな出し惜しみとかして客に逃げられるパターンが多すぎる
0283デフォルトの名無しさん
2008/06/02(月) 13:30:29あっちの人たちは金が儲かれば形振りかまわないから成功はする
名声はないけど
0284デフォルトの名無しさん
2008/06/02(月) 14:20:060285デフォルトの名無しさん
2008/06/02(月) 14:23:01その他もろもろパクリは多いよな。
そりゃ作るのは楽だよ
開発で使ってるソフトも平気で割れでやってそうw
0286デフォルトの名無しさん
2008/06/02(月) 16:21:36ネットランナー・・・
0287デフォルトの名無しさん
2008/06/03(火) 21:38:57sockaddr_in add;
int addlen =(int)sizeof(add);
getpeername(Sock, (struct sockaddr *) &add, &addlen);
char buf[50];
_itoa_s(add.sin_port,buf,(int)sizeof(buf),10);
といった感じで取得はできましたが
IPアドレスを取得するにはどうすればよいでしょうか?
0288デフォルトの名無しさん
2008/06/03(火) 22:20:02getnameinfoにでも突っ込めば。
0289デフォルトの名無しさん
2008/06/03(火) 22:35:150290デフォルトの名無しさん
2008/06/03(火) 22:54:40http://human7.2ch.net/test/read.cgi/ms/1212471581/
0291デフォルトの名無しさん
2008/06/04(水) 01:37:08ネットゲームのプログラミングが目的なのですが、
コネクション数は1〜200あたりで、OSがwindowsXPとした場合、
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html
を読む限り、WSAAsyncSelectかWSAEventSelectを使うのが良さそうですが
どうなのでしょうか。
0292デフォルトの名無しさん
2008/06/04(水) 01:46:06IOCPにしとけ
0293デフォルトの名無しさん
2008/06/04(水) 01:48:590294デフォルトの名無しさん
2008/06/04(水) 01:57:35select 毎回の引数の処理が無駄
WSAAsyncSelect,WSAEventSelect メッセージの通知が遅い
IOCP とにかく速い、プログラムは難しくなる
で良いでしょうか?
ROのエミュ鯖ではselectが使われてて、引数の処理が入ってたのは見たなぁ。
0295デフォルトの名無しさん
2008/06/04(水) 02:18:41WSAEventSelectの64制限(WaitForの制限)は
複数のスレッドに64以下ずつわけるしかないんじゃなかったかな。
0296デフォルトの名無しさん
2008/06/04(水) 02:29:14マルチスレッドもネットプログラミングの経験もない自分的には
ひとまずselectが良さそうな気がしてきました。
オープンソースのmmoが2つともselect使用しているみたいなので、実装例見れますし。
0297デフォルトの名無しさん
2008/06/04(水) 20:45:00問題ない?
0298デフォルトの名無しさん
2008/06/04(水) 20:59:21ググッてみたけど、どこも似たような分かりにくい説明が多いです。。
0299デフォルトの名無しさん
2008/06/04(水) 21:22:02セマフォを複数のスレッドが同時にアクセス可と言う考え方でいいのでしょうか?
0300デフォルトの名無しさん
2008/06/04(水) 22:06:23listenの引数みたいなというか
0301デフォルトの名無しさん
2008/06/04(水) 22:14:35係数1のセマフォならいっしょじゃねーか
嘘教えるな
0302デフォルトの名無しさん
2008/06/04(水) 22:17:22ミューテックスは、同時にひとつのスレッドしかアクセスできない。
1人用のイスみたいなもの。 早いもの勝ちで1人だけが獲得できる。
残念ながら座れなかった人は、イスが空くまで待つ。
イスが空いたら、待ってましたとばかりに奪い合って、勝った人1人だけがイスに座れる。
負けた人は、またイスが空くまで待つ。
セマフォは、同時にアクセスできるスレッドの数を好きに指定できる。
3人まで座れるソファーとか、そういうの。
4人目が来たら、誰かがどくまで待つ。
1にすれば、ミューテックスとほぼ同じ。
0303デフォルトの名無しさん
2008/06/04(水) 22:25:50だからそのものズバリだろw
教科書でミューテックス=二進セマフォという表記も使われる。
0304デフォルトの名無しさん
2008/06/04(水) 22:50:39スレッドごとの排他制御にMutex、複数の資源管理にセマフォ、単一の資源管理ならどっちでもいい。
0305298
2008/06/04(水) 22:53:48>>302さんの説明分かりやすかったです。ありがとうございました。
ググッても、どこも排他的とかいまいち理解しづらいですよね。。
0306デフォルトの名無しさん
2008/06/04(水) 23:25:220307デフォルトの名無しさん
2008/06/08(日) 12:27:33車輪の再発明はしたくないのでlinuxのsocketライブラリを探しています
CommonC++(commoncpp)というのを見つけたのですが
http://www.sunsite.ualberta.ca/Documentation/Gnu/CommonC++-1.0.2/html/index.html
ソースコードを見てると使いやすそうなんですが、他にもオマイラお勧めの、良いライブラリとか
あったら教えてホスイのですが
boostにもsocketのライブラリがあるっぽいんだけど・・・・こっちの方が有名なのかな?
0308デフォルトの名無しさん
2008/06/08(日) 12:56:460309デフォルトの名無しさん
2008/06/08(日) 14:23:140310デフォルトの名無しさん
2008/06/08(日) 14:28:50一度くらいは自分で実装するべきだ。その上で便利なライブラリを探すんだ。
車輪の再発明はしたくないって便利な言い訳だね。
0311デフォルトの名無しさん
2008/06/08(日) 14:41:01いちいちカーネルやコンパイラから自分で書き起こしたりはしないだろ
0312デフォルトの名無しさん
2008/06/08(日) 21:49:25VS2005とgcc-4.1.2-33に、boost-1_35をスコーンとインスコして
asioをやりまくっているんだが
VS2005は、無問題、gccでコンパイルする場合
いちいちコンパイル毎、変数を設定するのがマンドクサイので
.bash_profileに
CPLUS_INCLUDE_PATH=/usr/local/include/boost-1_35; export CPLUS_INCLUDE_PATH
LD_LIBRARY_PATH=/usr/local/lib; export LD_LIBRARY_PATH
追加設定して
$ g++ -pthread -lboost_system-gcc41-mt sample.cpp
こんな感じでコンパイルしてて、今んとこ無問題なんだが、どうよモマイラ、
他にいい方法があったら聞いてやるが
0313デフォルトの名無しさん
2008/06/08(日) 22:12:110314デフォルトの名無しさん
2008/06/08(日) 23:02:18聞いてくれなくてもいいが
0315デフォルトの名無しさん
2008/06/08(日) 23:13:360316デフォルトの名無しさん
2008/06/09(月) 00:07:43boost::asioも非同期ライブラリ持ってるんじゃないの?
0317デフォルトの名無しさん
2008/06/09(月) 10:02:280318デフォルトの名無しさん
2008/06/09(月) 23:12:11asioのことを言ったw>>315
0319デフォルトの名無しさん
2008/06/10(火) 21:12:450320デフォルトの名無しさん
2008/06/10(火) 21:32:020321デフォルトの名無しさん
2008/06/11(水) 03:25:33これがネットワークプログラ
0322デフォルトの名無しさん
2008/06/11(水) 12:27:03小人さんは間違いが多いのが欠点だ。
0323デフォルトの名無しさん
2008/06/13(金) 22:24:38近い将来、サーバー側、クライアント側で行う動作を基底クラスで実装して、それぞれのクラスを派生させようと思うが、サーバー側とクライアント側で
何が共通手順なのか、今はまだよく分からないので、とりあえず前に進めるためおこなっていおる
どうよこんな感じで
class Socket {
int fd1, fd2;
struct sockaddr_in saddr;
struct sockaddr_in caddr;
int len;
public:
Socket() : fd1(0), fd2(0), len(0) {} // コンストラクタ
~Socket(){} // デスクトラクタ
void MakeSocket(); // ソケット生成
void InitSocket( sockaddr_in saddr) ; // ソケット初期化
void NameOfTheSocket( sockaddr_in saddr );// ソケットに名前を代入
void BindSocket( sockaddr_in saddr ); // ネームバインド
void ListenSock( int fd1 ); // リッスン
void AcceptSocket(); // アスペクト
void CloseSocket(); // ソケットクローズ
};
0324デフォルトの名無しさん
2008/06/13(金) 22:24:59void Socket::MakeSocket()
{
if ((fd1 = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket");
exit(1);
}
}
void Socket::InitSocket( sockaddr_in saddr )
{
memset((char *)&saddr, 0, sizeof(saddr));
}
void Socket::NameOfTheSocket( sockaddr_in saddr )
{
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = INADDR_ANY;
saddr.sin_port = htons(PORT);
}
void Socket::BindSocket( sockaddr_in saddr )
{
if (bind(fd1, (struct sockaddr *)&saddr, sizeof(saddr)) < 0){
perror("bind");
exit(1);
}
}
void Socket::ListenSock( int fd1 )
{
if ( listen(fd1, 1) < 0) {
perror("listen");
exit(1);
}
}
0325デフォルトの名無しさん
2008/06/14(土) 06:51:370326デフォルトの名無しさん
2008/06/14(土) 07:58:40sockaddrはラップして、アドレスのクラスを作ってしまう。簡単にアドレスを設定できるようにするといい。
あと、言葉遣い直せ
0327デフォルトの名無しさん
2008/06/14(土) 08:00:05ソケットクラスの構成をみれば〜?
0328デフォルトの名無しさん
2008/06/14(土) 08:27:18君はまずその変な日本語を直さないとな
他人の言葉遣いを指摘してる場合じゃないぞ
0329デフォルトの名無しさん
2008/06/14(土) 09:27:20こんな感じで、完成形に徐々に近づきつつあると思うが、どうよ
class Socket {
struct sockaddr_in saddr;
struct sockaddr_in caddr;
public:
Socket(){} // コンストラクタ
~Socket(){} // デスクトラクタ
void SetAddresSocket( sockaddr_in saddr, unsigned short sock_family, unsigned short sock_port, int sock_addr ); // sockaddrラッパークラス
int DescriptSocket(); // ソケットを作り、成功したらソケットディスクリプタを返す
};
0330デフォルトの名無しさん
2008/06/14(土) 09:27:56{
saddr.sin_family = sock_family;
saddr.sin_addr.s_addr = sock_port;
saddr.sin_port = htons( sock_addr );
}
int Socket::DescriptSocket()
{
int fd1, fd2;
size_t len;
if ((fd1 = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket");
exit(1);
}
memset((char *)&saddr, 0, sizeof(saddr)); // 初期化
// バインド
if (bind(fd1, (struct sockaddr *)&saddr, sizeof(saddr)) < 0){
perror("bind");
exit(1);
}
if ( listen(fd1, 1) < 0) {
perror("listen");
exit(1);
}
len = sizeof(caddr);
if ((fd2 = accept(fd1, (struct sockaddr *)&caddr, &len)) < 0) {
perror("accept");
exit(1);
}
close(fd1);
return fd2;
}
0331デフォルトの名無しさん
2008/06/14(土) 09:34:50accept()関数の第三引数の
accept(fd1, (struct sockaddr *)&caddr, &len))
lenだが、VC8ならintでも無問題なのだけど、g++はsize_tじゃないと嫌だと
怒ったりとかと少し戸惑う、>>330でした
0332デフォルトの名無しさん
2008/06/14(土) 09:54:59size_tとしてしまうのは誤り。
socklen_tとint(やsize_t)が同じサイズか判定をどこかに入れておくと安全。
// 偽なら負の添え字になりコンパイルエラー
#define STATIC_ASSERT(cond) extern int static_assert_array[ (cond) ? 1 : -1 ];
STATIC_ASSERT(sizeof(int) == sizeof(socklen_t))
0333デフォルトの名無しさん
2008/06/14(土) 10:05:46Thx
物知りですね、勉強になります
gccの場合、accept()関数の第三引数は、int型でコンパイルに成功してたんだけど、g++でコンパイルした際にエラーが出たんで
なんでかなと思ってた、コンパイラに依存しないようにアサーションマクロを書いておくと、メモメモ
0334デフォルトの名無しさん
2008/06/14(土) 14:25:52selectでウインドウハンドルとそのウインドウのプロシージャを設定するけど
最初はウインドウAでメッセージ受けてたけど
次はウインドウBでメッセージ受けるように変更
とかいうことはできますか?
本当はウインドウハンドル指定しなくてよければ通信メッセージ受けるところだけ独立させたいんだけど
0335デフォルトの名無しさん
2008/06/14(土) 14:32:58WSAEventSelectを使えばウインドウハンドルはいらない。
0336デフォルトの名無しさん
2008/06/14(土) 14:35:32お〜 ウインドウハンドルいらない版もありましたか
ありがとうございまつ
0337デフォルトの名無しさん
2008/06/14(土) 16:12:06gethostbynameではwinsockが確保したメモリが返されてきますが
これはどうすると解放できるのでしょうか?
0338デフォルトの名無しさん
2008/06/14(土) 16:17:39gethostbynameでググルと一番上に解説が出てくるし
0339デフォルトの名無しさん
2008/06/14(土) 20:59:48>>327
が書いてたんで、rubyのソケットのライブラリを見てたら、やっぱ個別に
sockの関数と1対1に対応するメソッドを持ってるよね
>>326は
1対1に対応するメソッドを作ると、恩恵は受けにくいと言うし
ネットワークプログラミングとは直接関係ないけど、どっちがいいんだろうな?
この問題にはいつも悩まされる
永遠の命題なのか・・・・orz
0340デフォルトの名無しさん
2008/06/14(土) 21:10:21たとえば、自分向けのライブラリを作るなら、いきなりconnectで繋がって、closeで閉じるライブラリを作り置きしておくと、今後ずっと楽になる。
0341デフォルトの名無しさん
2008/06/14(土) 21:19:02わかりやすい説明、ありがとう
たしかに、それは言えるのだけど、ついつい、かまえてって言うか、型にはめようとして
再利用性だとか、拡張性だとか、考えてしまいクラスの設計には、いつも苦労するんだよね、俺の場合
もう少し気楽に考えた方がいいかもね
0342デフォルトの名無しさん
2008/06/14(土) 21:26:20共通の機能は基本クラスに、専用の機能は派生クラスに分散。一つのクラスで機能を欲張らないのが設計のコツ。
0343デフォルトの名無しさん
2008/06/14(土) 21:27:55C/C++で書いてるんなら、いつでも下に降りられるから、ある意味
どうでもいい気がする。
rubyみたいな奴だと、標準で抽象度の高いAPIしか用意されてないと
そこより下に降りたければCでextension書くしかないって話になる。
だからそういう設計になってるんだと思うよ。
0344デフォルトの名無しさん
2008/06/14(土) 21:34:17皆さん、いい話ありがとう
0345デフォルトの名無しさん
2008/06/14(土) 23:34:33思いますが、その後すぐにその問題が解決したら、相手側には届くのでしょうか?
0346デフォルトの名無しさん
2008/06/14(土) 23:36:06いつか届く。
0347デフォルトの名無しさん
2008/06/15(日) 04:36:590348デフォルトの名無しさん
2008/06/15(日) 06:09:21”こんにちわ” ”こんばんわ”
を相手が送信したときに
2つのメッセージに対して
FD_READが2回発生するときと
1回しか発生しないときがあります
2回発生するときは
”こんにちわ” と ”こんばんわ” を別々に取得できて問題ないのですが
1回しか発生しないときは
”こんにちわこんばんわ”という1つの文字になってしまいます
送信相手が1回送信するごとにFD_READが1回発生するように設定することはできますか?
できないとして1送信ごとに何らかの記号をつけて識別したりするのでしょうか?
0349デフォルトの名無しさん
2008/06/15(日) 06:29:10あと、どーでもいいけど「こんにちは」と「こんばんは」だと思う。
0350デフォルトの名無しさん
2008/06/15(日) 10:57:00SCTP。
おまいら使ってる?
0351デフォルトの名無しさん
2008/06/15(日) 14:04:34そもそも
「こ」「ん」「に」「ち」「わ」と5回に分かれてFD_READが来ることだってありえるぞ。
TCPとはそういうもんだ。区別したけりゃストリームに自前で区切情報載せろ
0352デフォルトの名無しさん
2008/06/15(日) 15:09:49ありなとうございまつ
Sendの末尾に区切り文字入れれば
1回で複数受信してもOKじゃね?
とか思ったけど1送信あたりでも分離することあるのですかorz
しかしそうなると
「こんに」「こんばんわ」「ちわ」という受信すらありえるような
それともTCPは受信順番も考慮するからそれはないと思っていいんでしょうか?
0353デフォルトの名無しさん
2008/06/15(日) 15:32:35必ずしも送った順に相手に届くとは限らない
この辺はUDPとTCPの違いを調べれば分かる
0354デフォルトの名無しさん
2008/06/15(日) 15:58:37TCPは順番は変わらないよ!。
0355デフォルトの名無しさん
2008/06/16(月) 11:35:18thread1(){ send("ABCDE"); }
thread2(){ send("abcde"); }
の2つのスレッドが同時にsendをコールした場合、
相手側でrecvした時に、
"ABCDE"と、"abcde"が混ざることってありますか?
例えば、"AaBbCcDdEe"みたいに。
シングルスレッドな場合だと、
send単位で送ったデータはそのまま出て来ますよね。
0356デフォルトの名無しさん
2008/06/16(月) 11:50:150357デフォルトの名無しさん
2008/06/16(月) 11:52:11どこから持って来てるんでしょうか?
(同じ情報を自分のプログラムから取得するにはどうすればいいでしょうか?)
2. TDImonか同等のプログラムのソースコードはどこかにないでしょうか?
0358デフォルトの名無しさん
2008/06/16(月) 11:53:480359デフォルトの名無しさん
2008/06/16(月) 11:59:56>"ABabcdeCDE"
これもありうる?
カーネルの中のソケット毎の送信バッファってのは、1つだよね。
複数のスレッドがsendをコールすると、その送信バッファに、
送信データが詰め込まれて行くんだと思うんだけど、
それがsend単位に区切られて詰められない可能性もあるってこと?
こういう動きって、OS依存?
send実行中に、スレッドがコンテキストスイッチしたらこうなるってこと?
2このスレッドが、同時に100Mバイトとかのデータをsendしたら、
そうなりそうな気がしないわけじゃないけど。
0360デフォルトの名無しさん
2008/06/16(月) 12:04:110361デフォルトの名無しさん
2008/06/16(月) 12:09:290362デフォルトの名無しさん
2008/06/16(月) 12:50:47確かにおっしゃる通りですね。
ってことは、やっぱりそうなる事もありうるってことですか。
0363デフォルトの名無しさん
2008/06/16(月) 19:19:51実装依存だろうし、起きるかどうか考えるだけ無駄
0364デフォルトの名無しさん
2008/06/16(月) 21:45:500365デフォルトの名無しさん
2008/06/16(月) 21:51:180366デフォルトの名無しさん
2008/06/16(月) 22:11:13どういった理由からですか?保障されているんですか?
0367デフォルトの名無しさん
2008/06/16(月) 23:13:06スレッド関係なしに。
だから、逐次処理で
send( "ABCDE" );
send( "abcde" );
とかやっても、相手側で
abcdeABCDEと受信することも普通にある。
0368デフォルトの名無しさん
2008/06/16(月) 23:19:200369デフォルトの名無しさん
2008/06/16(月) 23:22:45え??
0370デフォルトの名無しさん
2008/06/16(月) 23:30:040371デフォルトの名無しさん
2008/06/16(月) 23:37:42まぁ、どの実装でも、自前でコントロールすべしって結論になると思う
0372デフォルトの名無しさん
2008/06/16(月) 23:39:360373デフォルトの名無しさん
2008/06/16(月) 23:47:19システムフリーズするだけだな。
0374デフォルトの名無しさん
2008/06/17(火) 01:51:31順番がかわるとか複製される可能性があるのはUDPじゃないの?
おれなんか間違ってること言ってる?
手元の参考書にそう書いてあるんだけど?
0375デフォルトの名無しさん
2008/06/17(火) 01:56:01バーカ >>374
0376デフォルトの名無しさん
2008/06/17(火) 02:01:15スレ監視し続けてたんだね
お疲れ様
釣れて良かったね
おめでとう
0377デフォルトの名無しさん
2008/06/17(火) 02:46:29普通に起こるだろ。
シグナルだって入るし、場合によっちゃスレッドだってスイッチする。
0378デフォルトの名無しさん
2008/06/17(火) 04:08:33I/Oだったら普通にキューにぶっこんでコンテキストスイッチしないかな?
0379デフォルトの名無しさん
2008/06/17(火) 04:28:02connectのみ
WSAWaitForMultipleEventsでタイムアウトを判断して
send、recvはsetsockoptを使って指定、
これで大丈夫でしょうか?
0380デフォルトの名無しさん
2008/06/17(火) 08:52:260381デフォルトの名無しさん
2008/06/17(火) 09:58:450382355
2008/06/17(火) 10:05:16シングルスレッドの場合でしょ、それは絶対にあり得ないと思うんだけど。
最近のカーネルは、カーネルプリエンプションだから、カーネル内部の処理
実行中にコンテキストスイッチすることもあるかも知れないけど、
ロジックの実行順序(逐次処理)が入れ替わることはないと思います。
>>373
それとはまた別の話ではないでしょうか。
sendを呼んだひとはブロックされるでしょうが、他のプロセスは
普通にシステムコールを実行することも、ユーザーランドのロジックも
実行できると思います。
>>374
私もそういう認識です。
TCPで1つのスレッドが送信した場合であれば、sendした順に相手側では
recv出来ると思ってます。(何回recvすれば良いかは判らんけど。)
途中でパケロスしたり、物理的に線が切れたりした場合は、受信側に届いた
部分まで(これも、相手がsendした順)が受信出来る。
なにか間違ってます? >> all
0383デフォルトの名無しさん
2008/06/17(火) 16:49:350384デフォルトの名無しさん
2008/06/17(火) 17:04:560385デフォルトの名無しさん
2008/06/17(火) 17:14:260386デフォルトの名無しさん
2008/06/17(火) 17:23:550387デフォルトの名無しさん
2008/06/17(火) 17:54:230388デフォルトの名無しさん
2008/06/17(火) 18:07:41自作の俺プロトコルアプリが低速回線環境でどういった影響を受けるのか調べたいのですが。
環境はWindowsです(98orXP)
0389デフォルトの名無しさん
2008/06/17(火) 19:19:430390デフォルトの名無しさん
2008/06/17(火) 19:50:44TCPでそれがあったら大変だろ
UDPでは十分ありうるだろうが
UDPは順序がかわるどころか
複製されたりもするらしいからな
しかしUDPって順序も保障されてないとなると
1パケットあたりの情報をどうやって認識するんだろうか
区切り文字やらパケットサイズ送っても
順序がかわったりしたらアウトだよな?
0391デフォルトの名無しさん
2008/06/17(火) 20:41:210392デフォルトの名無しさん
2008/06/17(火) 21:56:192つ以上のパケットをもってきて、その関連をどうこういうと面倒だけど。
0393デフォルトの名無しさん
2008/06/18(水) 09:28:59例えば、
(1)udp_send("ABCD");
(2)udp_send("abcd");
とした場合、(1)で作成されたUDPパケットが相手HOSTに到達
するルートと、(2)で作成されたUDPパケットが相手HOSTに到達
するルートが同じだとは限らないですよね。
たまたま、(2)のUDPパケットが相手HOSTに到達するルートの方が
速い回線だったりした場合、受信側のHOSTでは、(2)(1)の順に
UDPパケットを受信する事もあり得ます。
UDPパケット毎の順序は不定ですが、複数のUDPパケットが混ざる
事はありません。(シングルスレッドの場合)
で、複製されるってのはどういう意味?
0394デフォルトの名無しさん
2008/06/18(水) 17:14:46とかが2回以上あったかのように
複数回届くことかと思われ
で、実際そういうことがある
パケットにインデックスとかつけて
2回目以降のやつは棄てればいいので問題ない
0395デフォルトの名無しさん
2008/06/18(水) 17:22:56それって UDP側じゃなくて MAC側の仕様じゃないの?
結果は同じだけど・・・
細かすぎるか?w
0396デフォルトの名無しさん
2008/06/18(水) 17:48:55重複するってのはなぜ?
誰がパケットを複製するの?
マルチキャストであればルータがパケットを複製するってのは
判るんですが。
0397デフォルトの名無しさん
2008/06/18(水) 17:59:51勝手に複製されてしまうこともあるって事ですか。
man ping より
重複パケットと障害パケット
ping ユーティリティは重複パケットと障害パケットを報告します。重複パケット
はユニキャストアドレスに対しては起こるはずのないものですが、リンク層での
不適切な再送信によって引き起こされるようです。重複は様々な状況で起こる可
能性があります。低いレベルの重複の存在は必ずしも警告にならないかもしれま
せんが、よい兆候ではありません。ブロードキャストもしくはマルチキャストア
ドレスに ping する時には、重複が起こることが期待されます。実際に重複する
のではなく、異ったホストから同じ要求に対して応答が行われからです。
障害を受けたパケットは明らかに重大な警告です。多くの場合、ping パケットの
経路のどこか (ネットワーク内かホスト内) のハードウェアの故障が考えられま
す。
0398デフォルトの名無しさん
2008/06/18(水) 18:03:13ないってことですね。
ただ、TCPだと、勝手に捨ててくれるけど、UDPだとそのまま
複数回受信しますということね。
と、なっとくしました。
考え方が間違ってたら、指摘してもらえると嬉しいです。
0399デフォルトの名無しさん
2008/06/20(金) 09:04:55不満を言う余裕はあるくせに
戦争する暇もある
0400デフォルトの名無しさん
2008/06/20(金) 21:50:000401デフォルトの名無しさん
2008/06/21(土) 18:36:220402デフォルトの名無しさん
2008/06/21(土) 19:43:200403デフォルトの名無しさん
2008/06/22(日) 03:08:020404デフォルトの名無しさん
2008/06/23(月) 01:42:100405デフォルトの名無しさん
2008/06/23(月) 01:55:060406デフォルトの名無しさん
2008/06/23(月) 22:27:500407デフォルトの名無しさん
2008/06/23(月) 22:43:10動かすことは可能でしょうか?
コンパイルは通ったのですが、実行するとうまく動きません。
http://www.geekpage.jp/programming/linux-network/tcp-2.php
どこか修正する点があるのでしょうか?
0408デフォルトの名無しさん
2008/06/23(月) 23:02:12間のルータがマルチキャストルータで、かつルータの先のルータが
別ネットワークからのマルチキャストに応答し、かつ、別ネットワークから
のUPnPのTCP接続に正しく応答するなら可能なんじゃね?
0409デフォルトの名無しさん
2008/06/23(月) 23:45:55ありがと
ちょっと作ってみる
0410デフォルトの名無しさん
2008/06/24(火) 10:03:12同じLAN内で動かなかったのなら何が問題があると思われ
0411デフォルトの名無しさん
2008/06/24(火) 12:08:13単に「うまく動かない」では状況がわからない
何かエラーメッセージが出るとか、こういう動作を期待したのに実際はこうだったとか、もっと詳しく
0412デフォルトの名無しさん
2008/06/24(火) 14:11:03うちの環境だと動いたよ。
firewallがブロックしてんじゃねーの?
0413デフォルトの名無しさん
2008/06/29(日) 00:12:03アプリケーションがネットワークにアクセスしようとしたときに
とりあえずブロックしてから確認ダイアログ出すけど、
アプリケーション開始したときに確認ダイアログ出せない?
ひたすらリトライするしかない?
Visual Studio 2008
言語はC#かC++でplz
0414デフォルトの名無しさん
2008/06/29(日) 00:18:320415デフォルトの名無しさん
2008/06/29(日) 02:08:520416デフォルトの名無しさん
2008/06/29(日) 02:19:380417デフォルトの名無しさん
2008/06/29(日) 02:51:47馬鹿か
0418デフォルトの名無しさん
2008/06/29(日) 11:16:14num = recv(dst, buf, buf_size, 0);
if(numrcv == 0 || numrcv == -1){
status = close(dst);
break;
}
printf("received: %s\n", buf);
}
ネット上から拾ったプログラムです。
簡易tcpサーバーとしてAccept後、文字列受信をしているんだが、なぜ
受信→if判定でbreak→出力
という形なのか教えてください。
自分の中では
受信→出力→if判定でbreak
が普通だと思うのだが。
0419デフォルトの名無しさん
2008/06/29(日) 11:46:07Windowsなら、socket使わなければWSAGetLastErrorでとれる値は変わらないだろうけど、
UNIXだったらerrnoが変わっちゃうかも知れない。
(errno == EINTRだったらやり直すとか)
それに、毎回受信したデータを処理してしまうにしても、0はともかく-1は困らない?
numrcv = recv(s, buf, len, 0);
memcpy(dst, buf, numrcv);
みたいなのとか。
出力するにしても、どれだけ出力すればいいのか分かるの?
bufが全部'\0'で初期化されてるなら、文字列として出力する分には平気だと思うけど。
0420デフォルトの名無しさん
2008/06/29(日) 12:01:11>受信→出力→if判定でbreak
その場合、受信に失敗してたら、なにが出力されるんだ?
0421418
2008/06/29(日) 12:03:36言われてみればエラーチェックと考えられますね。
ありがとうございました。
0422418
2008/06/29(日) 12:08:06エラー処理ということをわすれてました。
bufferに何もない状態でif判定すると
そこで判定で真となりbreakで抜けてしまうのでは、
と勘違いしてました。
0423デフォルトの名無しさん
2008/06/29(日) 14:46:39購入したいと思います、お勧めの商品があったら教えて欲しいのですが。
0424デフォルトの名無しさん
2008/06/29(日) 14:48:060425デフォルトの名無しさん
2008/06/29(日) 15:50:40行った場合、別関数内で生成したソケット等はリターンしてきた時に
スコープ外れることにより消えてしまうんでしょうか?
0426デフォルトの名無しさん
2008/06/29(日) 16:28:39生のSOCKET/int型にはそういう機能はない。
0427デフォルトの名無しさん
2008/06/29(日) 16:28:410428デフォルトの名無しさん
2008/06/29(日) 16:29:010429デフォルトの名無しさん
2008/06/29(日) 21:02:130430デフォルトの名無しさん
2008/06/30(月) 12:16:49まずはこれを読みましょう。
0431デフォルトの名無しさん
2008/06/30(月) 19:57:17たしか、明示的にクローズしないと自動的にはガーベージコレクトしてくれなかったはず。
0432デフォルトの名無しさん
2008/07/01(火) 00:14:19おまえは馬鹿か
0433デフォルトの名無しさん
2008/07/01(火) 21:47:58どこが違うのか指摘してもらえませんか?
#include <stdio.h>
void swap(int *nx,int *ny,int *nz)
{ int temp = *nx; *nx = *ny; *ny = *nz; *nz = temp; }
void sort3(int *n1,int *n2,int *n3)
{ if (*n1 > *n2 && *n2> *n3) swap(n1, n2, n3);
else if (*n2 > *n1 && *n1> *n3) swap(n2, n1, n3);
else if (*n1 > *n3 && *n3> *n2) swap(n1, n3, n2);
else if (*n2 > *n3 && *n3> *n1) swap(n2, n3, n1);
else if (*n3 > *n2 && *n2> *n1) swap(n3, n2, n1);
else if(*n3 > *n1 && *n1> *n2) swap(n3, n1, n2); }
int main(void) { int na, nb, nc;
puts("3つの整数を入力してください。");
printf("整数A"); scanf("%d", &na); printf("整数B"); scanf("%d", &nb); printf("整数C"); scanf("%d", &nc);
sort3(&na, &nb, &nc);
puts("これらの降順に並べました。");
printf("整数Cは%dです。\n ", nc); printf("整数Bは%dです。\n ", nb); printf("整数Aは%dです。\n ", na);
return(0); }
0434デフォルトの名無しさん
2008/07/01(火) 21:51:50お断りだ
0435デフォルトの名無しさん
2008/07/01(火) 21:54:513回の比較で並べ替えできるよ!
0436433
2008/07/01(火) 21:56:51その3回の比較とはどんな計算をすればいいんでしょうか?
0437デフォルトの名無しさん
2008/07/01(火) 22:05:20氏ねや
0438デフォルトの名無しさん
2008/07/01(火) 22:18:37httpで通報しました
0439デフォルトの名無しさん
2008/07/01(火) 22:21:48この時、2なら2時間後に返事を返してもらうように作っておく。
0440デフォルトの名無しさん
2008/07/01(火) 22:25:14すると、数値が一つ帰ってくる。この数値から自分が何番目か予測する。
ネットゲームの作り方でつか?
0441デフォルトの名無しさん
2008/07/01(火) 23:33:420442デフォルトの名無しさん
2008/07/02(水) 08:29:27ロジテックが手に入り安いし関連製品が同じドライバーだから便利
>>398 UDPについて
最近上司からもUDPの早いからUDPにしろという
変なUDP=早いという間違った神話があるんだが・・・・
TV電話とかボイチャみたいな再送信されて遅延が発生するぐらいなら
捨ててくれよっていうアプリなら有効なんだが
ここでよく質問にくるゲーム系だとUDPは考えものだぞ
少なくとも再送信の実装するよりも、届かなくても動くように
実装した方がよいよ。
ただ、UDPだと1バイトのデーターでも即座に送られるのが魅力か
0443デフォルトの名無しさん
2008/07/02(水) 08:58:200444デフォルトの名無しさん
2008/07/02(水) 10:16:48#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
int main() {
int a, b, c;
a = 10;
b = 7;
c = 12;
std::vector<int> array;
array.push_back(a);
array.push_back(b);
array.push_back(c);
std::sort(array.begin(), array.end(), std::greater<int>());
printf("大きい順に");
for(std::vector<int>::iterator it = array.begin(); it < array.end(); it++) {
printf("%d,", *it);
}
printf("です。\n");
return 0;
}
0445デフォルトの名無しさん
2008/07/02(水) 19:18:41そだね、一時期そうしてた
ただ、この手のデーターは大量に送ることが多いから
ルーター吹っ飛ばしてからはプロトコル見直すようにした
最近、NAT越えは厳しくなっていて
UDP HOLE PUNCHINGとかもやったけど、セキュリティソフト
で邪魔される事多いし、サーバーソケット作るだけで警告出るし
特に安易にルーターに無線ルーター付けられるとUPnPも使えん
やはり素直にリレーサーバー方式が一番
0446デフォルトの名無しさん
2008/07/03(木) 00:36:04アプリケーション層レベルでメールをバケツリレーさせているのですが、
セキュリティのために暗号化しようかと思っています。
公開鍵暗号を利用しようかと考えているのですが、
メジャーなオープンソースソフトウェアは何がありますか?
アーキテクチャ、OSに依存性がないほうが望ましいです。
アドバイス頂けると助かります。
0447デフォルトの名無しさん
2008/07/03(木) 00:47:240448デフォルトの名無しさん
2008/07/03(木) 00:54:320449デフォルトの名無しさん
2008/07/03(木) 06:40:420450デフォルトの名無しさん
2008/07/03(木) 09:32:10AES
とりあえずAESといっとけば皆が納得する
どんなに強固でも素人にわかる肩書きが無いと屑
0451デフォルトの名無しさん
2008/07/03(木) 13:37:17見たい価値のあるデータには、強固な暗号が要る。
価値の無いものは、乱数でXORしただけでも誰も見ないし、目の端に止まっても
何かの暗号だろうと思い、誰も解析しない。
>>447が、大正解。
0452デフォルトの名無しさん
2008/07/03(木) 14:22:570453デフォルトの名無しさん
2008/07/03(木) 15:48:30アフォか、最初から丸見えだったら見る価値ねーだろ。
0454デフォルトの名無しさん
2008/07/03(木) 16:03:19スカートの中身と比較されてもね〜(もれスカートならめくりたいし
簡単な暗号がいかに解析しずらいか身をもって体験する?
乱数でさくっと簡単暗号を作るから、解析して見るかい?
最近の解析ソフトはまず使えないぞ。(昔のはしらん)
0455デフォルトの名無しさん
2008/07/03(木) 22:13:480456デフォルトの名無しさん
2008/07/04(金) 00:25:37でもギャルゲやエロゲの絵を抜く為にスクランブル済みデータの解析とかする人と同じじゃないのかな?
0457デフォルトの名無しさん
2008/07/04(金) 16:05:30データのバイト数を計算したいのですが、どのようにすればよいのかわかりません。
わかる方いましたら、教えてください。よろしくお願いします。
前パートで既出でしたらすみません。
0458デフォルトの名無しさん
2008/07/04(金) 16:09:21大抵はヘッダいじったBMPでしかないのが現実
0459デフォルトの名無しさん
2008/07/04(金) 16:44:54ここにも、通信における暗号の意味がわかったいない人がいるとは…
何のためにこのスレにいるのか?
0460デフォルトの名無しさん
2008/07/04(金) 16:56:210461デフォルトの名無しさん
2008/07/05(土) 14:13:35機械翻訳: http://support.microsoft.com/kb/318911/ja
ここに書いてある
SocketOptionName.MulticastInterface
の使い方って間違ってね?
IP渡すんじゃないのか。
ためしにインデックス値渡してみたけどSocketException出る。
0462デフォルトの名無しさん
2008/07/06(日) 19:43:15ルーターにポートマッピングして、ローカルのIPアドレスで鯖を立てました
外部から接続はできるのですが、LAN内部の別のクライアントからだと接続できません
これは仕様でしょうか・・・
0463デフォルトの名無しさん
2008/07/06(日) 20:33:54ウチのルータはグローバルIP:ポートを内部から叩きにいっても、
ちゃんとリダイレクトしてくれるよ
0464462
2008/07/06(日) 20:56:10ありがとうございます。
ルータの設定でなんとかできないかもう少し考えてみます
0465デフォルトの名無しさん
2008/07/06(日) 23:38:14その手の注意事項くらい書いてないか?
0466462
2008/07/06(日) 23:43:27ルータのパスは父親が掌握しております・・・
これ以上は将来独立してからじゃないと無理そうなんで諦めます
0467デフォルトの名無しさん
2008/07/07(月) 00:15:07内側からあたかも外側からアクセスした様にしてくれるかどうかを調べろ
マニュアルも大抵メーカのウェブサイトに置いてある
0468462
2008/07/07(月) 01:11:18オンラインマニュアル読んでみましたが
出来るとも出来ないとも書いてないようです
ただUPnPの設定の項で
MSNメッセンジャーを例に説明してるのですが
「LAN 上のPC 間のチャット(ビデオ・音声)はできません。」
とあるので、出来ない気がしてきました・・・
0469デフォルトの名無しさん
2008/07/07(月) 01:30:080470デフォルトの名無しさん
2008/07/07(月) 01:42:080471デフォルトの名無しさん
2008/07/07(月) 01:58:42まあIP書いてもいけるけどさ
0472デフォルトの名無しさん
2008/07/07(月) 06:01:41UPnP関係ないからな。
>>462冒頭でも書いてるし、勘違いしているかもしれないので一応。
0473デフォルトの名無しさん
2008/07/07(月) 07:39:43hosts書くしかないね。
0474デフォルトの名無しさん
2008/07/07(月) 10:32:23winsockでプライベートアドレスを取得できる関数ありませんか?
よろしくお願いします
0475474
2008/07/07(月) 10:51:260476デフォルトの名無しさん
2008/07/07(月) 16:41:580477462
2008/07/07(月) 17:50:31そのループバック機能ってのがないのが問題なんですね、
>>469−471,473
hostsで解決できるかやってみます
どうもありがとうございました
0478デフォルトの名無しさん
2008/07/07(月) 20:14:29ローカルIPは取得できました。WAN側から見るグローバルIP取得したいです。よろしくおねがいします。
VC + winsock2 使ってます。
0479デフォルトの名無しさん
2008/07/07(月) 20:19:36それは無理だと思うんだが
RFC の何番だっけ、NAT って >識者
0480デフォルトの名無しさん
2008/07/07(月) 20:29:450481デフォルトの名無しさん
2008/07/07(月) 21:05:530482デフォルトの名無しさん
2008/07/08(火) 05:15:52残念ながら汎用的は方法は無い。
NATしてるルータにwebアクセスして情報取得するとか、
NATしてるルータにSNMPできいてみるとか。
80番で外に出れるなら、外部でサービスしている適当なcgiでREMOTE_ADDRを見るとか。
0483デフォルトの名無しさん
2008/07/08(火) 07:45:32そこの住所は管理人やフロントに問い合わせるか
外からきた郵便物に書いてある住所を見るしかない
問い合わせ方法は住んでいる場所によって違うし
0484デフォルトの名無しさん
2008/07/08(火) 09:33:03一旦外に出ない限り分からないわけだ
確かに似てる
0485478
2008/07/08(火) 10:56:35考えたのですが、たとえば、サーバーのグローバルIPが[ 220.222.15.xx ]でポート1200にアクセスがあると
[192.168.0.13]に転送するとルータに設定。
クライアントのグローバルIPが[ 220.222.15.xx ](サーバと同じIP)でポート1201だと
[192.168.0.14]に転送するとルータに設定。
この場合、転送はうまくいくでしょうか?グローバルIPが同じでもポートが違う場合、他のPC
にデータを転送するのでうまく通信できると考えたのですが。。
アドバイスお願いします
0486デフォルトの名無しさん
2008/07/08(火) 10:59:30まあできないルータなんてほとんど無いだろうが。
0487デフォルトの名無しさん
2008/07/08(火) 11:12:590488デフォルトの名無しさん
2008/07/08(火) 11:31:490489デフォルトの名無しさん
2008/07/08(火) 17:07:28ルータに割り当てられているグローバルIPを使って、
クライアントPCでbindすると失敗する。
ということは、bindはルータから割り当てられたローカルIPでやると思うのだけど、
ポート番号が80とかじゃ、他のクライアントと重複するんだけど、重複しても大丈夫?
それと、ルータを使わないYahooBBとかのモデム直のパソコンだと、グローバルIPでbindできるの?
0490デフォルトの名無しさん
2008/07/08(火) 17:12:52重複とは何が重複?
モデム直はグローバルアドレスが直接PCに設定されるでしょ。
0491デフォルトの名無しさん
2008/07/08(火) 17:19:14だからルータの中にある2台のパソコンが、
同一のポート番号でbindしたら、LAN内では、ローカルIPが異なるから大丈夫だけど、
ルータの外から、グローバルIPで来た同じポート番号宛ての情報(connect)は、どうなるのかなって。
2台が同時にacceptしてしまいそうじゃん
0492デフォルトの名無しさん
2008/07/08(火) 17:26:49ルーターから同一のアドレス、ポートに来たものを2ヶ所にフォワードできないから
そういう心配は要らないと思うのだけど。
0493デフォルトの名無しさん
2008/07/08(火) 22:03:54じゃ、どっちに送るの?
0494デフォルトの名無しさん
2008/07/08(火) 22:31:23ルータで逆NATとか、DMZとかで設定したほうに届く。
その設定がなければ、そもそも届かない。
0495デフォルトの名無しさん
2008/07/08(火) 23:19:380496デフォルトの名無しさん
2008/07/08(火) 23:45:13>じゃ、どっちに送るの?
これが答え、人間様でもわからんのに・・・
語弊があるが、こんな時に識別するための役割がポート
httpサーバーには80番、FTPサーバーには23番
同一ドメイン(グローバルIP)にアクセスしても所定のサーバーに
届いて処理を行うようになっている
ただ、>>494にもあるように同一ポートでも届く先を換えるやり方は
もちろんあるけど
0497496
2008/07/08(火) 23:51:38ちょっと小一時間,説教されてくるOrz
0498デフォルトの名無しさん
2008/07/09(水) 03:10:22アンタがルータで設定した方のPCに送る
0499デフォルトの名無しさん
2008/07/09(水) 07:55:28ケースの質問してたでしょ。hosts書くほかない、で立ち消えになってるけど。
Globalのアドレスをlocalに割り当てとけばよいという意味だとおもうけど。
192.168.0.13 my.domain.com
と言う風に。これWebサーバは 192.168.0.13 Ftpサーバは 192.9.168.10 というような
場合はどうするの?
0500デフォルトの名無しさん
2008/07/09(水) 09:08:03192.168.0.10 ftp.my.domain.com
とか
192.168.0.13 my.domain.com
だけで13にftpのproxy立てるとか色々あるんじゃない?
0501デフォルトの名無しさん
2008/07/09(水) 09:28:52わかりました。
外部に公開しているサイトの中で、ドメインにきっちりサービス名を付加しておけばよいのですね。
0502デフォルトの名無しさん
2008/07/09(水) 09:43:52整合性も要らん
0503デフォルトの名無しさん
2008/07/09(水) 09:53:38こういう問題が意識されるのは、外部に公開しているhtmlファイルを
内部ネットワークから参照したいからではないのですか。
<a href="http://my.domain.com/...../xxx.html"> ... </a>
と混在して、
<a href="ftp://my.domain.com/.../yyy.csv"> .. </a>
のようなアンカが打ってある場合とか。
0504デフォルトの名無しさん
2008/07/09(水) 10:02:59そのケースだと、どちらにしても無理だと思うんだが。
0505デフォルトの名無しさん
2008/07/09(水) 10:22:43ですから、>>500 にならい、外部に公開しているHtmlファイルのドメインにサービス名をつけて
<a href="http://www.my.domain.com/...../xxx.html> ... </a>
<a href="ftp://ftp.my.domain.com/.../yyy.csv"> .. </a>
のようにすべて書き換え、内部ネットワークのすべてのPCの/etc/hostsに
192.168.0.13 www.my.domain.com
192.168.0.10 ftp.my.domain.com
を付け加える。
0506デフォルトの名無しさん
2008/07/09(水) 10:38:21俺はこれが使えないルーターは買ったことないからわからんが。
ずっとYAMAHAだったしなー
0507デフォルトの名無しさん
2008/07/09(水) 10:39:260508デフォルトの名無しさん
2008/07/09(水) 10:55:140509デフォルトの名無しさん
2008/07/09(水) 10:59:25色々小細工しなくても外部のproxy経由で見ればブラウザの設定をするだけで問題なかったんだっけ
0510デフォルトの名無しさん
2008/07/09(水) 11:13:37マイクロ綜合研究所だと、トラフィックルーターって名打ってる機種だけかな。
あ、最近ソフトのバージョンアップすればできるようになったのかもしれない。
0511デフォルトの名無しさん
2008/07/09(水) 13:02:190512デフォルトの名無しさん
2008/07/11(金) 17:58:11こんなノウハウ系の話題は歓迎だが
0513デフォルトの名無しさん
2008/07/11(金) 18:12:32公開サーバーを内部でデバッグするためならhotsで十分だし
たとえば、管理サーバーを内外でアクセスするなら
グローバルアドレス調べてサーバーと一致すれば内部と認識して
設定ファイルにかかれたローカルIPでアクセスするとか?
0514デフォルトの名無しさん
2008/07/12(土) 06:50:02頻繁に通信の同期ズレが発生します。
リプレイデータ等を見る限り、キー情報等の情報は完全に同期がとれているのですが・・・
双方のデータの初期化不良の可能性が高いのですがなかなか原因がつかめずにいます。
そこで3Dデータ計算で頻繁に用いられる浮動小数点型等はPCや状況によって
演算結果が変わる可能性があるという風にどこかで聞いた事がある事を思い出しました。
実際そのような事が本当にあるのでしょうか?
0515デフォルトの名無しさん
2008/07/12(土) 08:57:59ちゃんと受信したデータが正しいか確認してるか?
0516デフォルトの名無しさん
2008/07/12(土) 11:56:570517デフォルトの名無しさん
2008/07/13(日) 09:28:12昔のPentiumは浮動小数点の割り算を間違えるというバグがあってな…
…は関係ないけどな。CPUアーキテクチャが違うと誤差が出る可能性もあるが、
intel同士ならまず演算結果は同じになると思われ。
他の原因じゃね? ↓でも読んどけ。
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=49&vew=432
0518デフォルトの名無しさん
2008/07/13(日) 09:39:15中間結果をダンプして比較すれば原因をが解るんじゃないか
0519デフォルトの名無しさん
2008/07/13(日) 09:43:19浮動小数点演算にはCPUやライブラリ固有の誤差があるが、毎回結果が違うというようなものではない。CPUやライブラリが同一であれば同じ入力には同じ出力が得られる。
誤差の大きさはCPUのデータシートに明記してある。
0520デフォルトの名無しさん
2008/07/13(日) 11:02:560521デフォルトの名無しさん
2008/07/13(日) 11:50:230522デフォルトの名無しさん
2008/07/13(日) 11:57:300523デフォルトの名無しさん
2008/07/13(日) 22:12:10きちんと処理してる? 基本だけど...
浮動小数点数ならフォーマットの違いも
0524デフォルトの名無しさん
2008/07/13(日) 23:34:17>きちんと処理してる? 基本だけど...
してる
>浮動小数点数ならフォーマットの違いも
そっちはしてない
あるいは、そもそも実数を送らない
0525デフォルトの名無しさん
2008/07/13(日) 23:39:580526デフォルトの名無しさん
2008/07/14(月) 01:25:21同期ズレってあるけど
タイミングがズレる? 座標がズレる?
送信する前の座標を取る段階でズレてない?
キーを取った瞬間の座標とかクォータニオンそのまま
送ってるなら多分ずれるわな
キーがズレしないのならばおそらく、このスレとは関係ない
0527デフォルトの名無しさん
2008/07/14(月) 01:34:48キーデーター送って相手側でオブジェクト再現しようと
うまく再現されないんだ。それでキーデーターが同じで
それを元に計算してるのに計算結果が違うのは?って事だろ?
クォータニオンは使ってる?
そもそもキー取得→送信→再現って同期とるの
難しいけどどうやって取ってるの?
ちゃんとジッタバッファ使って同期取ってる?
0528デフォルトの名無しさん
2008/07/14(月) 09:15:300529デフォルトの名無しさん
2008/07/14(月) 15:00:01だから、同じ計算でもずっとレジスタだけで計算するか
途中で時々メモリに書いて 64bit に丸めながら計算す
るかで結果の値が違うことがある。
0530デフォルトの名無しさん
2008/07/15(火) 01:19:22入力した時刻とか送ってる?
送るデータをもしキーボードのキーと時刻のデータだけだったら、
逆になぜ同期が取れるのかが俺には理解できない。
ちょっと相手を押したりダメージを与えて倒しただけでも
思いっきり同期がずれるでしょ。
ある程度はキャラクターの位置データとかも送らないと行けないと思うけど。
0531デフォルトの名無しさん
2008/07/15(火) 10:05:53入力したデータが両者まったく同一であれば結果もまったく同じになる
0532デフォルトの名無しさん
2008/07/15(火) 13:43:29そのとおり仕様による
スレ違いだから誤解されるの承知で書くけど(現役でもないし)
例えば車ゲーみたいに絶えず動いているオブジェクトにおいて
キー入力の再現がmmSecでも変われば車の動きに誤差が出るしょ?
また、PC相手だとフレーム数も違うから、そのままキーを反映できないし
当然 V-SYNCのタイミングで更新掛けたり
同期バッファ(ジッタバッファ)で調整するわけだけど
>>514はそこまでやってるのかな?って
ちょっと調べたらDirectPlayは遅延を最小に抑える機能があるみたいだけど
あくまでも最小だし
そもそも私が質問を歪曲している可能性あるけど
まあ 本人居ないみたいだしスレ違いだけど
0533デフォルトの名無しさん
2008/07/15(火) 14:13:500534デフォルトの名無しさん
2008/07/15(火) 22:27:17非ブロックにしたかったらWIN32でメッセージ駆動にしなくちゃ
いけないものなの?メッセージ処理とネットワーク処理を
分離したいんだけど。
0535デフォルトの名無しさん
2008/07/15(火) 22:27:18キーだけだと誤差が出ると思うけど。
ダイレクトプレイは UDP だからこっちの取りこぼしかも知れないし。
0536デフォルトの名無しさん
2008/07/15(火) 22:34:53俺はつい最近、ネットワーク周りをダイレクトプレイから WinSock に書き換えたんだけど、
イベントオブジェクトとマルチスレッドでメッセージからは完全に切り離せる。
ただ、実装してみてわかったけど、結局メッセージングの処理に近いようなコードを
自分で書くことになった。正直プログラムとしての複雑さはあんまり変わらないような気がするから、
メッセージングでも良かったかなと思ってる。
資料は「猫でも〜」と「Winsock2 プログラミング」っていう本。
これ以外もいろいろと見たけど、結局は「猫でも〜」を読んで感じをつかんで、
「Winsock2〜」 の方を読んで仕様を作って組むって事になった。
Winsock2 は多分今売ってる日本語の本ではベストだと思う。
0537デフォルトの名無しさん
2008/07/16(水) 03:17:40亀レスだけど
プロトコルヘッダーを書き換える方法もある(関連付け)
事前にインストール必要だけどね
SKYPEタイプとかでやっている方法
0538デフォルトの名無しさん
2008/07/17(木) 01:00:33猫でもシリーズは鵜呑みにしない方が良いよ
コーティングの一例として理解するなら良いけど
たまに酷いこと書いてるから
0539デフォルトの名無しさん
2008/07/17(木) 03:06:45それを検出する事は可能ですか?
0540デフォルトの名無しさん
2008/07/17(木) 12:25:42検出する必要はないだろう
0541デフォルトの名無しさん
2008/07/17(木) 16:41:25竜のような敵へのダメージの通信方法なのですが、
我流でやってるもので、どうもイレギュラーなやり方でやってそうでちょっと心配に。
現在は、竜の同期をとりたいので、ホストが竜の動きをすべて受け持って計算、
クライアントは、竜にダメージを与えた場合、ホストに与えたダメージを通信してやって
ホストが、竜のHPを算出するみたいな感じで。
ホスト側の送信
ホストキャラの位置、HP、行動
竜の位置、HP、行動
クライアント側の送信
クライアントキャラの位置、HP、行動、竜に与えたダメージ
ほんと我流なので、ここはおかしいとか、こうしたほうが、同期がとりやすいとか
ありましたらご指摘ください。
0542デフォルトの名無しさん
2008/07/17(木) 17:03:08仲間内だけで遊ぶゲームだったらそれでもOKだと思う。
0543デフォルトの名無しさん
2008/07/17(木) 18:19:39同期できるのか?
0544デフォルトの名無しさん
2008/07/17(木) 20:20:30イベント方式もあるけどそれだと説明してるところがホントにすくない
めんどくさいけど同期型を通信相手ごとにスレッドでまわすのを作ってるよ
0545デフォルトの名無しさん
2008/07/17(木) 20:30:15それだと、クライアント改造されたり
パケットいじられたりしてすごいダメージ申告されたらおしまいだよな?
キャラクタの位置も自己申告?
ワープチートとかできそうじゃね?
CS型はLANとか高速な環境だけ想定した実装は楽だけど
それ以外の遅いノードが入っても大丈夫にするとか
データに欺瞞工作するやつをどうするのかとか考えると結構面倒だよな
操作と乱数表だけ同期するほうが楽だと思うけどなんで自己申告制?
あとボス以外の同期はまったく考えてない?
モンハンみたいにボス以外の同期を最初からあきらめてるゴミゲーは消えてほしい
シリーズ重ねてるのにいまだに直ってないとか信じられない
0546デフォルトの名無しさん
2008/07/17(木) 22:36:39クライアントが改造されない(信頼が置ける)場合には、
541 のスタイルは実は意外と良い選択。当たり判定とか厳密に取れるし、
遅れも出ないし。
0547デフォルトの名無しさん
2008/07/18(金) 02:29:080548デフォルトの名無しさん
2008/07/18(金) 03:14:30RMTが成立するような廃人御用達MOなら、いろいろ改造対策の必要があるが、
単にオンプレイ楽しみたいだけなら、やる意味ない
0549デフォルトの名無しさん
2008/07/18(金) 03:56:580550514
2008/07/18(金) 08:43:17チート対策等は、次のステップとして、
いまの課題はいかに、同期をとるかを考えていまして。
0551デフォルトの名無しさん
2008/07/18(金) 13:12:070552デフォルトの名無しさん
2008/07/18(金) 16:25:39ゲームやりすぎて死ぬとか、ほんと人生楽しんでるよなー
0553デフォルトの名無しさん
2008/07/18(金) 18:01:58その仕様だとプレイヤーとか敵が増えるに比例して
通信量も増えるから出来ることが限られる
どのくらいのパケット圧縮やら遅延をするのかにもよるが
データそのものを自己申告制にするのはできるだけやめるべき
LAN内限定とか言うんであれば話は別だが
0554デフォルトの名無しさん
2008/07/18(金) 19:45:33どうしてもアクション性が落ちて、気持ちよくないゲームになってしまう。
本当にこういう話は、ケースバイケース。
>>553
実際、ネットワークゲームでパケット圧縮って効果あるの?
0555デフォルトの名無しさん
2008/07/18(金) 19:48:10サーバーからクライアントに送るデータの方は結構効果あるよ。
逆は殆ど無い。気休め程度。
0556デフォルトの名無しさん
2008/07/19(土) 21:36:22PCのネットワーク帯域に影響を与えている可能性のあるフィルタを列挙したいのです。
0557デフォルトの名無しさん
2008/07/20(日) 00:58:42ネットワークの範囲外だけどな
0558デフォルトの名無しさん
2008/07/20(日) 01:17:44OSをインストールした直後よりも性能が落ちてるか明白なのか?だったら一個ずつソフトを止めてみればいいじゃん。
0559514
2008/07/20(日) 18:30:06現在、ホストキャラの座標XYZのfloatで12バイト、行動に2バイトで14バイト
ホストボスの位置も同じく14バイト
でホストは28バイトの送信
クライアントは座標XYZ、行動2バイトで14バイト
ボスに、ダメージいくらあたえたかの2バイトで16バイトの送信です。
自己申告制に変わる方法としてよいのがあれば教えてください。
0560541
2008/07/20(日) 18:30:56541です。
0561デフォルトの名無しさん
2008/07/20(日) 20:17:30ネトゲ作ったこと無いから適当なんだけど・・・・
ホストでボスキャラと全キャラ位置やダメージを計算して、クライアントにブロードキャストさせたほうが委員でない?
クライアントはホストから落ちてくる情報を補間して表示する。
攻撃コマンドはホストに送ると同時にモーションを開始、ホストからダメージ情報を受け取るとか
0562デフォルトの名無しさん
2008/07/20(日) 21:32:10ゲスト側はキー操作のトリガー条件だけホストに送って、ホスト側で全プレイヤーの位置情報とモーション、衝突判定をする。
FPS系のゲームで個別処理しているのはとりあえず見たこと無い。
ただ多人数でやる場合ホストが落ちたあとに継続させる必要があるといろいろ面倒かもしれないけど。
0563デフォルトの名無しさん
2008/07/20(日) 23:55:41遅い攻撃はサーバーで
速い攻撃はクライアントで
っていうのをどこかで見たな。
MMO なんか戦闘自体が単調でつまらないのは、
全部サーバで処理してるからだろうな。
0564デフォルトの名無しさん
2008/07/21(月) 00:00:58格闘ゲームくらいなら何とかなりそうだが、
東方花映塚にオブジェクト数が増えると、同期とれんだろ
0565デフォルトの名無しさん
2008/07/21(月) 00:02:37東方花映塚ならボタンとおじゃまぷよさえ同期できりゃいい
0566デフォルトの名無しさん
2008/07/21(月) 19:55:02格ゲーでもEMU方面でそんなの有るしね。
リアルタイム性が求められる物は、
完全同期よりもラグをいかに誤魔化すかの方がいいのかもしれない。
0567デフォルトの名無しさん
2008/07/22(火) 17:10:460568デフォルトの名無しさん
2008/07/23(水) 21:17:02ここに書かれている WEBサーバ経由で間接的に告知 についてなのですが、
サーバ起動時に自分のグローバルIPアドレスを調べて、ホームページに出力し、
クライアントがそのホームページを開くと、自動的にサーバのアドレスに飛ぶ
ようにするってことですか?
0569デフォルトの名無しさん
2008/07/23(水) 21:27:02板違い
0570デフォルトの名無しさん
2008/07/23(水) 22:30:26するってことですか?って聞かれても・・・
最近このスレ自由だけど さすがに相談という
形をとろうな
0571デフォルトの名無しさん
2008/07/24(木) 00:26:35猫でもわかるネットワークプログラミングって、スレッドを使った、サーバ、クライアントのサンプルプログラムとかってありますか?。
0572デフォルトの名無しさん
2008/07/24(木) 00:34:47目次みたらスレッドを使ってるのはなさそうだった
0573デフォルトの名無しさん
2008/07/24(木) 01:26:45そのホームページへのアクセスはどうやってするの?
もし、DDNS とか使ってるんだったら、クライアントはそっちから IP を引けばいい。
ホームページにIPを出力する技術があるんだったら、
ホームページの方から MMO のサーバの IP を拾わせればいい。
DDNS みたいなことをやって、ネームサーバに登録したいって事か?
全くやりたいことが見えない。
0574デフォルトの名無しさん
2008/07/24(木) 07:32:52すいません、プログラミングではありませんね。
>>573
なるほど、意味がわかりました。
ありがとうございます。
0575デフォルトの名無しさん
2008/07/24(木) 19:53:38ウインドウメッセージをつかった非同期のやつがメイン
イベントのはまったく紹介されてない
ウインドウメッセージつかわない同期型を最初に紹介してるので
それを自前でスレッド型にかえることになるかな
8人くらいまでで遊べるネットゲームを作りたくて
P2P型のネットワークを想定して作り出したんだけど
最初にホスト役をやる奴にゲスト1が接続にいくのはいいんだが
ゲスト2がホストに接続したときゲスト1とゲスト2をどう接続するか迷う
ホストからいま誰がつないでるのかきいてリストを送ってもらって
それを見て参加中のメンバー全員につないでく方法とってるんだけど
もっとエレガントな方法があるんだろうか
DirectPlayとかそこらへんキニシナイでつかってたけど
いざ自分が実装するとけっこうめんどいもんでつね
0576デフォルトの名無しさん
2008/07/24(木) 21:52:14ホストがデーター交換する形では?
0577デフォルトの名無しさん
2008/07/24(木) 21:53:590578デフォルトの名無しさん
2008/07/25(金) 09:36:370579デフォルトの名無しさん
2008/07/25(金) 16:56:07Linux(RedHat Enterprise ES R3)のUDPソケットを利用してプログラムを
作ってるんですが、高トラヒック下の場合に、"sendto()"は成功しているが、
同サーバで動作させているtcpdump等のパケットパケットモニタ上では、
該当送信データが無い (対向装置側でtcpdump等で見張っていても、届いていない)
といった状況が発生しており、困っています。
この場合、ドコを調査すれば原因の究明が出来るでしょうか?
0580デフォルトの名無しさん
2008/07/25(金) 17:07:34いろいろな原因が考えられると思うのですが、どういった順序、
どんなツールで調べるものなのでしょうか?
すいませんがよろしくおねがいします。
0581デフォルトの名無しさん
2008/07/25(金) 17:16:43そもそもUDPは信頼性が保証されないプロトコル
バッファが一杯だとか適当な理由で黙って捨てられることもある
届かなくても大丈夫なようにプログラムを作るべし
0582デフォルトの名無しさん
2008/07/25(金) 17:30:19・サーバ上で netstat -an を実行して問題のポートが LISTEN になってるか調べる
・サーバ上で telnet localhost port で接続できるか調べる
・クライアントから telnet serveraddr port で接続できるか調べる
・クライアントがどの関数で失敗してるか調べる
・失敗した関数のエラーコードを調べる
・Windowsファイアウォールとかインターネットセキュリティ的なものをすべて切ってみる
0583デフォルトの名無しさん
2008/07/25(金) 18:00:09丁寧にありがとうございます。
試してみます。
0584デフォルトの名無しさん
2008/07/25(金) 21:05:380585デフォルトの名無しさん
2008/07/25(金) 21:06:570586デフォルトの名無しさん
2008/07/25(金) 21:25:210587デフォルトの名無しさん
2008/07/26(土) 21:04:090588デフォルトの名無しさん
2008/07/30(水) 08:37:00現在winsockのTCPブロックしながらデータ転送を行ってるのですが
1回の転送が4バイト、光回線同士で1秒間に10回程度の送受信できているのですが
速度はこんなものしかでないのでしょうか?
0589デフォルトの名無しさん
2008/07/30(水) 08:42:420590デフォルトの名無しさん
2008/07/30(水) 09:02:00UDPはデータが宛先に届いたかどうかをUDPは関知しないため、TCPと異なりデータの到着を保障しません。
そのため、UDPを使った通信を行うプログラムを書く場合には、パケットがネットワークの途中で消えてしまうことも想定しなくてはなりません。このような制約がUDPにはあるため、確実にデータを届けたいアプリケーションではTCPを使うのが一般的です。
このように書くとUDPは使いにくいだけに思えますが、利点もあります。
複数の相手に同時にデータを送信できる(ブロードキャスト、マルチキャスト)
TCPよりもリアルタイム性が高い
http://www.geekpage.jp/programming/ruby-network/udp.php
0591デフォルトの名無しさん
2008/07/30(水) 09:15:48入力されたキー情報をやりとりしてるだけなので一回の転送量は大きくならないのですが
格闘ゲームでキー情報をやりとりするって状態がそもそも間違ってるのでしょうか?
0592デフォルトの名無しさん
2008/07/30(水) 09:43:44それで足りているんだったら4でいい
0593デフォルトの名無しさん
2008/07/31(木) 11:18:14Win32のソケットと、
別々に書かないといけないんですか?
それとも、なんかライブラリ導入したら、ソース共有できたりします?
0594デフォルトの名無しさん
2008/07/31(木) 11:19:310595593
2008/07/31(木) 11:24:20boostですか、ちょっと尻ごみ。C++ Builderにboostが添付されるまで待つかな。
0596デフォルトの名無しさん
2008/07/31(木) 12:22:44Asioって 「Header only」だから、ダウンロードして、ヘッダファイルをインクルードするだけで使えるはず。
http://www.boost.org/doc/libs/1_35_0
0597593
2008/07/31(木) 12:35:090598デフォルトの名無しさん
2008/07/31(木) 16:47:02sendで100byte投げたら
recvで50byteしか飛んでこないとかありますか?
recvのバッファサイズは100です
0599デフォルトの名無しさん
2008/07/31(木) 16:50:19もういっかいrecvしたら残りが飛んでくると思う
それでも足りなかったらもういっかいrecv
というか全部来るまでrecv繰り返せ
0600デフォルトの名無しさん
2008/07/31(木) 17:18:11でもVCだとインストールに超時間掛かるよね
0601デフォルトの名無しさん
2008/07/31(木) 17:28:10時代というかコンパイラが追い付いてない。
0602デフォルトの名無しさん
2008/08/02(土) 00:24:33普通にアル ↑のほうでも論議されていたが
100がまるごとくることもあるし
25:25:25:25でくることもあるし
50:50でくることもあるし
30:20:10:40でくることもある
だから、データ送信の区切りとなる目安みたいなのを搭載する必然性が生まれる
普通はデータの頭にあと何バイトで終わるか情報をつける
もしくはデータの終端に終端文字をつける
あるいは両方を使う
0603デフォルトの名無しさん
2008/08/02(土) 00:26:46あれって、相手にパケットを送信して、それを相手が受信して、
受信しましたメッセージを返してきて、それを受け取るまでにかかった時間という認識でOK?
0604デフォルトの名無しさん
2008/08/02(土) 00:33:30実装なんて適当なんだよ
0605デフォルトの名無しさん
2008/08/02(土) 01:42:17で?
0606デフォルトの名無しさん
2008/08/02(土) 01:57:32まさかpingを知らないとも思えないが
日本語の方が若干不自由なのかもしれない。
0607デフォルトの名無しさん
2008/08/02(土) 02:19:370608デフォルトの名無しさん
2008/08/02(土) 02:55:33OK
0609デフォルトの名無しさん
2008/08/02(土) 07:46:21pingっていっても ICMP ECHOとは限らないんじゃない?
IRCみたいにPINGとPONGというプロトコルが定義されてるかもしれないし
0610デフォルトの名無しさん
2008/08/02(土) 07:57:52は、つまり俗に言う「ping値」とは、pingコマンドを実行して表示される値のことですけど。
0611デフォルトの名無しさん
2008/08/02(土) 10:31:53ゲーム自体が用意しているping機能(自動的に相手とのレイテンシを表示してそれをping値として画面に表示してくれる)と、
C:\WINDOWS\system32\ping.exe の両方の意味がある、ってことだろ。
>>603はどっちを言っているのかわからない
>>604が言ってるのは前者
>>606-607は後者しか知らない
どちらにせよ答えは>>608で正解
0612デフォルトの名無しさん
2008/08/02(土) 10:46:230613デフォルトの名無しさん
2008/08/02(土) 10:53:37それにpingなんて単語を使うのかよ。
0614デフォルトの名無しさん
2008/08/02(土) 11:06:35使うんだよ。それが。
0615デフォルトの名無しさん
2008/08/02(土) 13:33:280616デフォルトの名無しさん
2008/08/02(土) 14:39:16ラウンドトリップタイム(RTT)って言えよ
0617デフォルトの名無しさん
2008/08/02(土) 14:51:18ネトゲ業界に言ってくれ
http://images.google.com/images?um=1&hl=ja&lr=lang_ja&inlang=ja&q=%22ping%E5%80%A4%22
0618デフォルトの名無しさん
2008/08/02(土) 14:59:23http://www.google.com/search?hl=ja&inlang=ja&q=ping%E5%80%A4&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
RTTなんて技術者しか使わねーんだろうな
0619デフォルトの名無しさん
2008/08/03(日) 01:52:29正しくない意味でも普及させてしまった物勝ちってか
0620デフォルトの名無しさん
2008/08/03(日) 02:01:53ハッカーなんていい例だよね。
0621デフォルトの名無しさん
2008/08/03(日) 04:43:450622デフォルトの名無しさん
2008/08/03(日) 11:42:520623デフォルトの名無しさん
2008/08/03(日) 12:30:54\ __ /
_ (m) _ピコーン
|ミ|
/ `´ \
('A`) ならicmpで通信すればいいのか…
ノヽノヽ
くく
0624デフォルトの名無しさん
2008/08/03(日) 13:57:190625デフォルトの名無しさん
2008/08/03(日) 14:19:54ゲームするために使ってポートつついて UDP echo でええんちゃう?
ポートあかなきゃ、ゲームすら出来ないって話なのでは?
0626デフォルトの名無しさん
2008/08/03(日) 14:21:39そうだよ。ネトゲなんて勝手にWell-knownじゃないポート開くのが一般的なんだから、使うポートあけるのは当然。
0627デフォルトの名無しさん
2008/08/03(日) 21:00:48データ受信時で喪失する場合があるとのことですが、
それはまるっきりデータが届かないのでしょうか?それともデータの一部分だけ届くとかってことでしょうか?
例えば
sendでABCDEFと一回で転送して、受信の方でABCとかCDEとかだけ届く場合がある
それとも届くときはABCDEF全部届く、届かないときは1つも届かないとかでしょうか?
0628デフォルトの名無しさん
2008/08/03(日) 21:07:090629デフォルトの名無しさん
2008/08/03(日) 21:10:02ABCDEFって何度も転送して、6バイトデータを受信できた場合に
それの中身がABCDEFじゃない場合はあるのでしょうか?
0630デフォルトの名無しさん
2008/08/03(日) 21:17:57チェックサムが合ってなければ捨てるからデータが化けてる確率はかなり低い
普通は無視して大丈夫だと思われ
0631デフォルトの名無しさん
2008/08/03(日) 21:23:520632デフォルトの名無しさん
2008/08/03(日) 21:51:05まー、大抵はレイヤ1でそれなりのチェックがかかってるからそんなに
問題ないけどネ
0633デフォルトの名無しさん
2008/08/03(日) 23:05:480634デフォルトの名無しさん
2008/08/03(日) 23:47:280635デフォルトの名無しさん
2008/08/04(月) 01:42:52これは正しいが
>一度に送ったバイト数などなんでもあり
UDPはパケット単位でしか扱われない
下位レイヤで切られて一部消失したら全部なかったことになる
0636デフォルトの名無しさん
2008/08/04(月) 01:49:140637デフォルトの名無しさん
2008/08/04(月) 01:54:101Mの受信確率が99%あるとしたら、100M全部成功するのは100回に一回か
とかそんな風に解釈したが
0638デフォルトの名無しさん
2008/08/04(月) 01:57:580639デフォルトの名無しさん
2008/08/04(月) 02:13:460640デフォルトの名無しさん
2008/08/04(月) 02:17:29パケット単位って128バイトってことでしょうか?
それ未満のデータなら届くか届かないかのどちらかになるってこと?
0641デフォルトの名無しさん
2008/08/04(月) 02:18:11空気読め
0642デフォルトの名無しさん
2008/08/04(月) 02:19:280643デフォルトの名無しさん
2008/08/04(月) 02:26:09もう3ヶ月romります 失敬(-3-)ノシ
0644デフォルトの名無しさん
2008/08/04(月) 02:39:190645デフォルトの名無しさん
2008/08/05(火) 19:07:52数値を送信する方法載ってないので、itoaとかatoi使って
数値を文字列に変換して送信して受信側で数値に戻すとかめんどことやってるんだけど
一般的に数値を送るにはどういう手法をとればよいでしょうか?
0646デフォルトの名無しさん
2008/08/05(火) 19:11:38バイナリのままやるなら、これもファイルと同じようにエンディアンに気をつけて。
0647デフォルトの名無しさん
2008/08/05(火) 21:49:26まあ自分で作ったアプリ同士なら何でもありなんだけど。
0648デフォルトの名無しさん
2008/08/06(水) 13:23:350649デフォルトの名無しさん
2008/08/06(水) 15:47:55bigendianってsparc位しか生き残ってないんじゃなかろうか?(MIPSも組み込みベースじゃLittleばっかりだし)
0650デフォルトの名無しさん
2008/08/06(水) 16:31:49いわゆるTCP/IPはbig endianで合意が取れてるってだけ。
0651デフォルトの名無しさん
2008/08/07(木) 00:27:59わけわからん主張する人ってすっかり居なくなったな
0652デフォルトの名無しさん
2008/08/07(木) 00:34:480653デフォルトの名無しさん
2008/08/07(木) 00:56:110654デフォルトの名無しさん
2008/08/07(木) 02:29:400655デフォルトの名無しさん
2008/08/07(木) 05:14:290656デフォルトの名無しさん
2008/08/07(木) 06:32:130657デフォルトの名無しさん
2008/08/07(木) 10:12:15PowerPCが基本ビッグエンディアンだから、いまどきのゲーム機はぜんぶ
ビッグだと思われる。
0658デフォルトの名無しさん
2008/08/07(木) 10:14:03PSPはリトルエンディアンww
0659デフォルトの名無しさん
2008/08/07(木) 11:53:46recvfromで受信すれば、第5〜6引数に返ってくる
0660デフォルトの名無しさん
2008/08/07(木) 11:54:28recvfromの説明を良く読めば解るよ
0661デフォルトの名無しさん
2008/08/07(木) 22:44:29ありがとうございます
0662デフォルトの名無しさん
2008/08/08(金) 23:24:54UDPは届かないこと前提だけど今時は素直に届く確立高いから
全部破棄で最初からとかって非効率な実装でも良いよ
もちろんケースバイケースね
0663デフォルトの名無しさん
2008/08/08(金) 23:31:16早いというのは偏った迷信だから気をつけて
0664デフォルトの名無しさん
2008/08/09(土) 09:02:07日本語で頼む
0665デフォルトの名無しさん
2008/08/09(土) 10:12:59少し前 上司からTCPよりUDPの方が早いからUDP使えと言われた
最近 UDPの質問増えてるけど
TCPとUDPの向き不向き考えて選択してるのかな?っと
UDPのデータが保証されないって欠点ではなくて
利点なんだけど
0666デフォルトの名無しさん
2008/08/09(土) 12:15:13君、このスレ向いてないよ。消えてね。
0667デフォルトの名無しさん
2008/08/09(土) 12:19:300668デフォルトの名無しさん
2008/08/09(土) 14:15:16少なくとも巷の参考書は基本的にTCPだし
UDPを知らなくてもTCP(/IP)は聞いたことがあるってのが普通だろうし
0669デフォルトの名無しさん
2008/08/09(土) 14:17:420670デフォルトの名無しさん
2008/08/09(土) 14:38:43おおざっぱに言うと
1. 信頼性が必要な、大量のデータを流す場合、TCPの方が速い
2. 小さなパケットで反応速度を求める場合、UDPの方が速い
3. 再送してる余裕がなくてデータの破棄が許される場合、UDPの方が速い
0671デフォルトの名無しさん
2008/08/09(土) 14:46:544.をやる奴はバカ。
0672デフォルトの名無しさん
2008/08/09(土) 14:58:100673デフォルトの名無しさん
2008/08/09(土) 15:08:28ある意味TCP実装するだけの資源がないところでしか使われてないのは現実だろ?
下手なものつかまされると、イーサネットフレームレベルからブートストラップ
するんだが、それは別の話だろ?
0674デフォルトの名無しさん
2008/08/09(土) 15:10:240675デフォルトの名無しさん
2008/08/09(土) 22:08:090676デフォルトの名無しさん
2008/08/09(土) 22:31:13マジで馬鹿だなお前
0677デフォルトの名無しさん
2008/08/11(月) 02:19:40>向き不向きを知らずにUDPを選ぶ奴はいないんじゃない?
基本そうだけど最近 夏休みのせいか
>>669のようなのが多い
>>675
音声はUDPの方が向いてる。TCPで再送されると
遅延した音声がたまってく
別にホールパンチング用にUDP使ってるわけではない
0678デフォルトの名無しさん
2008/08/11(月) 02:27:56向き不向きを知らずにUDPを選んでる人なんて居ないのに
>それと上にもあるけどUDPの方がTCPより
>早いというのは偏った迷信だから気をつけて
みたいなこと言い出す奴がいるから
>TCPのが速いの?
みたいなレスが付く
0679デフォルトの名無しさん
2008/08/11(月) 04:12:310680デフォルトの名無しさん
2008/08/11(月) 11:39:020681デフォルトの名無しさん
2008/08/12(火) 21:40:43高速回線なら50ms程度の遅れで済む
まぁ3〜4フレ遅れるからローカルで動いていたゲームと同じ感触ってわけにはいかないが、
もともとそういう遅れのあるゲームとして実装しておけば(ローカルプレイの時もわざと遅延させる)
たいして気にならない
そもそも、本当に「UDPにしなきゃスピードが足りなくてどうしてもだめだ!」ってなってから手を出すべきで
最初は安定性が高いTCP/IPで組んでみるべきだと思うよ
0682デフォルトの名無しさん
2008/08/12(火) 21:58:100683デフォルトの名無しさん
2008/08/13(水) 12:27:56たしかにそういうのが出てきてるから困る
ADSLで満足してるわけだが
0684デフォルトの名無しさん
2008/08/13(水) 16:23:18アクションゲームをネット対戦したいという段階で、光以外の回線を使っているのが悪いと思う
0685デフォルトの名無しさん
2008/08/13(水) 18:22:06せめてそういうゲームは光回線以外では遊ぶなと明記してほしい
0686デフォルトの名無しさん
2008/08/13(水) 18:28:34いや、あくまで個人制作での話ですよ
結局「遅れてないように見せかける」のはできても、実際に遅らせないようにするのは不可能なわけで
通信タイム差が0.5秒もあるような環境でまともな通信対戦格ゲーができるわけもなく・・・
レースゲームとかならぎりぎりまでがんばるかもしれないけど
0687デフォルトの名無しさん
2008/08/13(水) 18:53:430688デフォルトの名無しさん
2008/08/14(木) 01:15:480689デフォルトの名無しさん
2008/08/14(木) 03:00:31バンド幅で困ることってある?
どんなゲーム作ったら困るのか例があったら教えてほしいわ
操作同期系しか作ったことないんでバンド幅で困ることはないな
0690デフォルトの名無しさん
2008/08/14(木) 14:06:30>>681は初心者用の話だよな・・・
いつのまにはネットワークゲーム論になってるな
とりあえず初心者はTCPの方が良いだろ
環境に左右されるUDPだと繋がらない時の問題把握が難しい
まあ ゲームだと繋がらなくてもムリの一言ですむけど
0691デフォルトの名無しさん
2008/08/15(金) 00:17:50接続している2つのクライアントに、まったく同じデータを流し続けるサーバープログラムを組みました。
クライアントには受信したデータを出力する機能をつけているのですが、
ごくごくまれに、データに「抜け」が発生するようなのです。
どれくらいまれかというと、
サーバーは::sendで8バイトのデータを、毎秒60回2つのクライアントに流し続けて一時間。
それで送ったはずの8バイトが1個抜けてしまうか、抜けないか程度です。
winsockのTCP/IPで通信を行っているのですが、このようなことは、この程度の頻度であることなのでしょうか?
正確さをきすならば、TCP/IP通信であってもデータのCRCチェックなどを行うべきなのでしょうか?
0692デフォルトの名無しさん
2008/08/15(金) 00:25:370693デフォルトの名無しさん
2008/08/15(金) 00:29:11TCP/IPにそんなことがあってたまるか。回線を疑えよ。
0694デフォルトの名無しさん
2008/08/15(金) 00:38:540695デフォルトの名無しさん
2008/08/15(金) 01:07:31戻り値を確認しる
0696デフォルトの名無しさん
2008/08/15(金) 02:17:41本当にごくごく稀にそういうウンコ回線なプロバイダがないわけではないが
よほどひどいのでない限りはエラーで切断されるのが普通
>>695じゃないが普通に処理がブロックされるタイプのも作ってみて
同じ症状がでるか確認してみるといいかもな
0697デフォルトの名無しさん
2008/08/15(金) 07:51:162つのクライアント間での差異なのかもわからん
0698デフォルトの名無しさん
2008/08/15(金) 08:05:49他にも書いてる人がいるけど、send, recvの戻り値チェック
再現する最小限のソースを晒せば、おそらくすぐ解決するよ
0699デフォルトの名無しさん
2008/08/15(金) 08:07:58例えばマルチスレッドでうんこな組み方してたらどんなことが起きてもおかしくない
0700デフォルトの名無しさん
2008/08/15(金) 08:39:30ありがとうございます。
やっぱりTCP/IPの信頼性>>>>越えられない壁>>>私のプログラム
ですよね。
アドバイスに従っていろいろやってみます。
char buffer[8];
for(int i = 0; i < 2; ++i)
{
::send(ryaku); // ノンブロッキングモード
}
なので、同じデータを送っているのは確実です。
受け取る側はrecvのブロッキングモードなので、これもまぁ漏れはないかと。
>>695が一番怪しそうなので、チェックをかけてみます。
何分再現が少ないので、報告は遅くなるかと思います。
0701デフォルトの名無しさん
2008/08/15(金) 09:44:17オワットル
0702デフォルトの名無しさん
2008/08/15(金) 10:06:360703デフォルトの名無しさん
2008/08/15(金) 10:09:10それでsendのバッファがあふれるなんて、ありえるかなぁ・・?
0704デフォルトの名無しさん
2008/08/15(金) 11:28:21ループバックでやってもあふれるときはあふれる。
バイト数が問題ではない。
0705デフォルトの名無しさん
2008/08/15(金) 11:31:37メモリが確保できたかどうか調べるのとは訳が違う。
0706デフォルトの名無しさん
2008/08/15(金) 11:33:22そうなんだ。俺も結構送信に関しては油断してたかも
sendバッファが64KBだっけ?デフォだと。確保されるはずだから、大丈夫だろうって感じで
0707デフォルトの名無しさん
2008/08/15(金) 11:35:48send バッファがどれぐらい開いてるかわかるの?
0708デフォルトの名無しさん
2008/08/15(金) 11:42:0564KBの送信バッファをあふれたということは、64KB分遅延が発生してるってことじゃん?
ファイル送信系のツール作る時は当然簡単にあふれるから、sendの返り値を気にして作ってたけど
細かいデータをちびっとだけ同期するような、なんつーんだ?同期サーバー?ではあふれないと決め打ちしてた(油断)わーと
>>703の計算でいうと、64KBの遅延=136秒の遅延だろ?
10秒データが届かないとタイムアウトクローズするように作ってたから、そんな遅延が発生するほどのバッファあふれは気にしたことなかったなー
何にしろ700のバグが治るといいな
0709デフォルトの名無しさん
2008/08/15(金) 11:49:08sendの戻り値見てない理由は?
0710デフォルトの名無しさん
2008/08/15(金) 11:53:19まず、64kb 決め打ちじゃない。
それに、OS側のTCP/IP レイヤの処理が追いついていない可能性とかは無視?
とにかくそういう不確定な要素が多い物なのに、
なぜ、do while をつけるのを嫌がるのかが俺には理解できない。
そこまで条件判断を入れないことにこだわる理由がわからない。
0711デフォルトの名無しさん
2008/08/15(金) 11:57:30いや、別にsendの帰り値をしっかり見るべきなのは100%正しいって
そんな責めるように言うなよ
今ぐぐってみたが、TCP/IPの送信バッファのデフォルトサイズは32KBだそうだ
俺の認識だと、送信バッファがあふれる=送信できてないデータが32KBたまってる=相手に32KB届いていない
って認識なんだけど、これってあってる?
32KBの遅延=68秒の遅延で、1分程度相手にデータがまったく届いていない(相手はrecvでデータが受け取れてない)って認識なんだけど
0712デフォルトの名無しさん
2008/08/15(金) 11:59:39どのタイミングでデータがクリアされるか標準的な仕様ってあったっけ?
0713デフォルトの名無しさん
2008/08/15(金) 12:00:39ああ、送信バッファっててっきり「ちゃんと相手に送れたら、その送れた分クリアされる」と思い込んでたけど
もしかしたら不定期にいっきに消してたりするかもしれないのか!?
0714デフォルトの名無しさん
2008/08/15(金) 12:03:54俺が言いたいのは、つまりそういう詳しい仕様とかが良くわからないもの、
デバイスドライバがおかしいかも知れない、ネットワークカードがおかしいかも知れないし、
OSがらみかもしれない、ルータがおかしいかも知れない、中継サーバが原因かも知れない、
というような物は、こうだからこう、と決めつけるのは危険だってこと。
メモリが確保できない、ファイルの保存で書き込みに失敗した、なんて状況だったらOSがガタガタだろうけど、
データが遅れないなんて事は頻繁にあることだから。
0715デフォルトの名無しさん
2008/08/15(金) 12:44:54なるほどねー。
いいアドバイスありがとう
0716デフォルトの名無しさん
2008/08/15(金) 15:42:27のsizeより多くのfdがEPOLL_CTL_ADDされたら、アウト?
0717デフォルトの名無しさん
2008/08/16(土) 01:22:38しったか知識で推測しようとするから、混乱するんだと思うよ。
TCP/IPの送信バッファデフォルトサイズとか、実装依存の
ことまで持ち出してきてしまってるし。
スロースタートとか、ウィンドウスケールとか、それに応じて
送信バッファを広げる可能性もあるし、組み込みなんかだと
8KB固定とかもあるし、そんな議論は無意味なのだよ。
0718デフォルトの名無しさん
2008/08/16(土) 07:05:08>実装依存
本来はそうなんだが、それを言っちゃうと、極端な奴だと
「じゃぁ、CPUのエンディアンをチェックする部分からソースを書くのか」
とか、そういう話になりかねない。
実装依存であっていい部分も多少はあるんだけど、
そのさじ加減としてでも send での戻り値をチェックするのは常識、
っていう話なんだよな。
この辺りの加減は経験積むしかないし。
0719デフォルトの名無しさん
2008/08/16(土) 12:56:27UDPとTCPのソケットハンドルを混在して
selectに渡しても大丈夫でしょうか?
0720デフォルトの名無しさん
2008/08/16(土) 13:34:24大丈夫だったら、いいね〜。
0721デフォルトの名無しさん
2008/08/16(土) 14:24:45RTOS系は自分でポートするスタックならOKとなるように実装する
Windowsはしらん
その他は 実装依存
0722デフォルトの名無しさん
2008/08/16(土) 21:22:01sendの戻り値をチェックするのが常識、という部分は誰も否定していないでしょ。
そんなん当たり前。
なのに、送信バッファのサイズがどうたらとか言い出すから、混乱するって
言ってるのであって。
どうでもいいけど、CPUのエンディアンはどっちでもいいように設定可能に
するのが常識だよね。ネットワーク関連のプログラムは。
0723デフォルトの名無しさん
2008/08/16(土) 21:25:160724デフォルトの名無しさん
2008/08/16(土) 22:06:440725デフォルトの名無しさん
2008/08/16(土) 22:54:080726デフォルトの名無しさん
2008/08/16(土) 22:55:410727デフォルトの名無しさん
2008/08/16(土) 23:01:11USBも採用している業界のデファクトスタンダード。
ネットワークバイトオーダーを決めた奴は素人。
0728デフォルトの名無しさん
2008/08/16(土) 23:05:380729デフォルトの名無しさん
2008/08/16(土) 23:26:170730デフォルトの名無しさん
2008/08/16(土) 23:30:15ビックインディアンはコンピュータからみたら
10進数をコンピュータで扱うぐらい非論理的。
少し考えたら馬鹿でも判る事。
マックもインテルに変えた今、ビッグインディアン信奉者は完全に消滅した。
0731デフォルトの名無しさん
2008/08/16(土) 23:36:000732デフォルトの名無しさん
2008/08/16(土) 23:37:51それは制御の仕組みだろ。
データの流し方とは分けたほうが話しがスムーズそうだけど
0733デフォルトの名無しさん
2008/08/16(土) 23:43:52PC 向けでしかプログラムしか組んだことないみたいね。
0734デフォルトの名無しさん
2008/08/16(土) 23:44:120735デフォルトの名無しさん
2008/08/17(日) 01:25:400736デフォルトの名無しさん
2008/08/17(日) 02:04:39リトルエンディアンか
ARMのAMBAみたいなバイト不変エンディアンが自然だと感じる。
IBMのCoreConnectとPowerPCなんか
最上位ビットがb0で始まって、(32ビット系なら)最下位ビットがb31
なんだぞ。
今は、1個のチップでも内部バス幅の種類は8〜512ビット程度の範囲で
たくさん使われてたりするから
ビッグエンディアンが入り込むとこんな顔になりがち→(#^ω^)
0737デフォルトの名無しさん
2008/08/17(日) 02:28:19ハード屋「いや、ビッグエンディアンは勘弁^^;」
なに、このかみ合わない議論。
しったかハード屋は遠慮してほしいと思うのだが、どうなのだろう。
0738デフォルトの名無しさん
2008/08/17(日) 02:33:550739デフォルトの名無しさん
2008/08/17(日) 02:37:25エンディアンはあるかもね・・・・
0740デフォルトの名無しさん
2008/08/17(日) 11:16:37> 最上位ビットがb0で始まって、(32ビット系なら)最下位ビットがb31
> なんだぞ。
修行がたらん!!! こんなもん頭抱え込んでるようじゃwW
0741デフォルトの名無しさん
2008/08/17(日) 13:04:290742デフォルトの名無しさん
2008/08/17(日) 14:52:410743デフォルトの名無しさん
2008/08/17(日) 18:25:05いや、別に相談者をびびらせてはないだろ。
0744デフォルトの名無しさん
2008/08/17(日) 18:48:50残念ながら動かない(笑
0745デフォルトの名無しさん
2008/08/17(日) 18:55:03(これからくるであろう)相談者って意味で俺はとったが・・
しったかだの、バカだの、オワットルだのレスは委縮させるだけだと思うがねー・・
0746デフォルトの名無しさん
2008/08/17(日) 19:07:420747デフォルトの名無しさん
2008/08/17(日) 19:22:480748デフォルトの名無しさん
2008/08/17(日) 19:30:490749デフォルトの名無しさん
2008/08/17(日) 20:29:12ただし、初心者向けとかそういう言葉が入ってないのも事実だな
つーかソケット自体が素(ry
0750デフォルトの名無しさん
2008/08/17(日) 21:27:34知ったかは勘弁。
0751デフォルトの名無しさん
2008/08/17(日) 22:00:42それを指摘されたらまた一歩前進するだけのこと。
知ったかだと貶す方が勘弁。
0752デフォルトの名無しさん
2008/08/17(日) 22:03:020753デフォルトの名無しさん
2008/08/17(日) 22:06:510754デフォルトの名無しさん
2008/08/17(日) 22:09:500755デフォルトの名無しさん
2008/08/17(日) 22:51:24お前もいい加減にしろw
0756デフォルトの名無しさん
2008/08/17(日) 23:22:26むしろ穏当なほうだろ。
0757デフォルトの名無しさん
2008/08/17(日) 23:29:100758デフォルトの名無しさん
2008/08/18(月) 00:00:11なんだこいつ
チョーむかつくんだけど
0759デフォルトの名無しさん
2008/08/18(月) 00:09:380760デフォルトの名無しさん
2008/08/18(月) 01:11:48質問内容も把握してないしったかだからな
問題ありすぎだろ
0761デフォルトの名無しさん
2008/08/18(月) 08:33:570762デフォルトの名無しさん
2008/08/18(月) 08:58:00717てめえいい加減にしろ
0763デフォルトの名無しさん
2008/08/18(月) 09:07:210764デフォルトの名無しさん
2008/08/18(月) 14:47:000765デフォルトの名無しさん
2008/08/18(月) 18:53:11初めての気がする
もともとネットワーク相談室って膨大な範囲だしね
ベテランが新しい案件で初心者として質問する事もあるだろうし
ピンポイントで質問してくるだけ まだマシなんじゃない?
ネットワークゲームってどうやって作るんですか等が無いだけ
0766デフォルトの名無しさん
2008/08/18(月) 21:54:37気に入らないんなら自分で掲示板作れば?
これがゆとりかね
0767デフォルトの名無しさん
2008/08/18(月) 21:58:010768デフォルトの名無しさん
2008/08/18(月) 21:59:08しったかだの初心者くんなだの、誰でも来ていいという2chのルール無視すんなよ
他人馬鹿にして悦に浸りたいなら、誰も来ないローカル掲示板でも作ればいいのにな
0769デフォルトの名無しさん
2008/08/18(月) 22:14:190770デフォルトの名無しさん
2008/08/18(月) 22:23:02ここ技術板だから、夏はあまり関係ないはずなんだけどな
0771デフォルトの名無しさん
2008/08/18(月) 22:33:21わざわざ「嫌になった」と書き込むアホはあまり見ないけど
0772デフォルトの名無しさん
2008/08/18(月) 22:39:06かなり必要だ。煽られて前後不覚になるほど怒ってしまうような
馬鹿は来るな。
0773デフォルトの名無しさん
2008/08/18(月) 22:52:580774デフォルトの名無しさん
2008/08/18(月) 23:41:540775デフォルトの名無しさん
2008/08/18(月) 23:57:500776デフォルトの名無しさん
2008/08/19(火) 00:33:04RDPのプロトコルの仕組みを学びたいんですが参考になる日本のページってありますでしょうか?!
0777デフォルトの名無しさん
2008/08/19(火) 06:52:370778デフォルトの名無しさん
2008/08/19(火) 10:39:28実際の動作は、相手からの ACK (遅延 ACK) を待ってからパケットを
投げてしまいます。Linux で他 OS のように Nagle を無効にするには
TCP_NODELAY だけでは足りないのでしょうか?
0779デフォルトの名無しさん
2008/08/19(火) 12:21:50リモートデスクトッププロトコル
windowsを遠隔ログイン・操作するための専用プロトコル
SSL経由でできるらしい
0780デフォルトの名無しさん
2008/08/19(火) 21:17:401.Nagleアルゴリズムは、送信側が複数の小さいデータを1つにまとめて
送信する機能。
2.遅延ACKは受信側が、複数のパケットにたいしてまとめて応答するた
めの機能。
3.TCPって、通常はACKを待たずに相手の受信ウィンドウがあいてりゃパケット
を投げる。
整理して考えてみよう。
ヒント:輻輳制御
0781デフォルトの名無しさん
2008/08/20(水) 07:12:44ファイルを共有できるソフトウェアを開発しております。
また、ファイルを共有する機能だけでなく、リモートでマシンのデバイスを制御できます。
実現できれば、世界中のPC上のファイルが共有され、いつでも好きなデータを入手でき、
世界中どこからでも、端末を問わず自宅PCへアクセスし、コントロールする事が出来るようになります。
たとえば、携帯電話に自宅PCのコントロール用アプリケーションをインストールし、リモートコントロール
できるようになります。
0782デフォルトの名無しさん
2008/08/20(水) 07:22:29ワッフルワッフル
0783778
2008/08/20(水) 10:38:36遅延 ACK と Nagle の関係は理解しています。
が、通常、Nagle を無効にすれば、ACK を待たずにデータ送信するはずですが、
Linux の場合、TCP_NODELAY を有効にしても、ACK を待ち合わせるような動作
をするので。
あと、3. は、単純にそうとは言えませんよね。
通常 TCP は Nagle を実装しているので、MSS 未満のデータなら、その前の
データに対する ACK が返ってくるのを待ち合わせてから送信します。
MSS 1460 byte のコネクションで、アプリケーションが 10byte ずつデータ
を書き込めば、最初の 10byte は 10byte が 1 パケットで出ていきますが、
その次は、先行する 10byte に対する ACK が来るまで TCP が送信を待ち合わせ
ますよね。
TCP_NODELAY を有効にすれば、相手からの ACK に関係なく、10byte ずつ
データを投げ続けてくれるのですが、Linux の場合、2 〜 3 パケット程
投げた所で、先行するデータに対する ACK が来るのを待ち合わせる動作を
しているのです。その間に、アプリケーションからのデータ送信要求が
TCP の送信バッファに溜まるので、先行するデータに対する ACK を受け取った
後は、MSS サイズでまとめてデータ送信することになります。
もちろん、アプリケーションは、小さいサイズでデータを書き込まないのが
鉄則ですけど、TCP_NODELAY で回避できない理由を知りたいのです。
0784デフォルトの名無しさん
2008/08/20(水) 22:24:140785719
2008/08/21(木) 01:38:22ありがとうございました。
0786デフォルトの名無しさん
2008/08/21(木) 12:31:45windowsでもTCP_NODELAY且つバッファー長を0にしても遅延はあるね。
TCPはそういう用途じゃないから、UDPを使えば即時に送信される。
0787デフォルトの名無しさん
2008/08/22(金) 15:10:31スロースタートの制御じゃないの?
その辺のカーネルパラメータいじってみて振舞いの違いを見てみるとか。
>>1のFAQも目を通しておいた方が良い。要は
・TCPではwrite()したものを強制的に送信させる方法は(一般的には)ない
・送信を遅延する理由はいろいろある。Nagleはあくまでその一つ、というだけ
・他の典型的な理由はウィンドウ制御
ってことらしい(スロースタートもウィンドウサイズを制御する)。
あと
> 通常、Nagle を無効にすれば、ACK を待たずにデータ送信するはずですが、
この説明は間違ってない?
0789デフォルトの名無しさん
2008/08/22(金) 20:56:35http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/lame-list.html
の19番をよーく読んでみよう
0790デフォルトの名無しさん
2008/08/24(日) 13:24:07>>789
の19番は今の話に関係ないと思うが・・・
0791デフォルトの名無しさん
2008/08/24(日) 13:25:39服装制御がどう影響してくるのかわからん。
教えてくれ
0792デフォルトの名無しさん
2008/08/24(日) 14:05:37TCP で PUSH フラグ立てても ACK が PUSH したセグメントに
同期するわけではないことを言ってるのではあるまいか?
今はしらんが, 昔の Winsock は,
「PUSH したセグメントのACK を期待するような振る舞いをしていた」
記憶がある
0793デフォルトの名無しさん
2008/08/24(日) 15:13:58勉強で簡単なクライアントプログラムを作りました。
ところが、hp-uxとmac os xで動きが違って困っています。
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <string.h>
static int open_connect(char *host);
int main(){
FILE *out;
int socketfd, nbyte = 0;
char buf[5000];
socketfd = open_connect("menu.2ch.net");
out = fdopen(socketfd, "r+");
if(out == NULL){
perror("fdopen(3)");
exit(EXIT_FAILURE);
}
fprintf(out, "GET /bbsmenu.html HTTP/1.0¥r¥n");
fprintf(out, "Host: menu.2ch.net¥r¥n");
fprintf(out, "User-Agent: Monazilla/1.00¥r¥n");
fprintf(out, "Connection: close¥r¥n");
fprintf(out, "¥r¥n");
0794デフォルトの名無しさん
2008/08/24(日) 15:15:08if((nbyte = fread(buf, sizeof(char), 5000, out)) == EOF){
perror("fread");
exit(EXIT_FAILURE);
}
fclose(out);
printf("client got: %s¥n", buf);
exit(EXIT_SUCCESS);
}
static int open_connect(char *host){
struct addrinfo hints, *res, *ai;
int socketfd;
int err;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
if((err = getaddrinfo(host, "http", &hints, &res)) != 0){
fprintf(stderr, "getaddinfo(3):%s¥n", gai_strerror(err));
exit(EXIT_FAILURE);
}
0795デフォルトの名無しさん
2008/08/24(日) 15:16:26for(ai = res; ai; ai = ai->ai_next){
socketfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if(socketfd < 0){
continue;
}
if(connect(socketfd, res->ai_addr, res->ai_addrlen) < 0){
close(socketfd);
continue;
}
freeaddrinfo(res);
return socketfd;
}
fprintf(stderr, "socket/connetct failed¥n");
freeaddrinfo(res);
exit(EXIT_FAILURE);
}
0796デフォルトの名無しさん
2008/08/24(日) 15:18:030797デフォルトの名無しさん
2008/08/24(日) 15:20:030798デフォルトの名無しさん
2008/08/24(日) 15:22:27hp-uxでは、
client got: tes official service names and aliases with
# the port number and protocol the services use. #
# Some of the services represented below are not supported on HP-UX.
# They are provided solely as a reference.#
# The form for each entry is.
# <official service name> <port number/protocol name> <aliases>
#
# See the services(4) manual page for more information.
# Note: The entries cannot be preceded by a blank space.
#
tcpmux 1/tcp # TCP port multiplexer (RFC 1078)
echo 7/tcp # Echo
echo 7/udp #
discard 9/tcp sink null # Discard
discard 9/udp sink null #
systat 11/tcp users # Active Users
daytime 13/tcp # Daytime
daytime 13/udp #
/*長いので略*/
どのへんをなおすと、同じように動いてくれるのでしょうか?
ネットワークバイトオーダーの問題ではないと思います。
getaddrinfoの実装の違いでしょうか?
0799デフォルトの名無しさん
2008/08/24(日) 15:27:19>どこからつっこめばいいんだこれ・・・
ぜんぶつっこんでください、アッー
0800デフォルトの名無しさん
2008/08/24(日) 15:30:09一番突っ込みたいのはfdopenやめれってことだが
0801デフォルトの名無しさん
2008/08/24(日) 16:16:26おお、凄い。
read,write使ったら出来ました。
ありがとうございます。
いやぁ、ふつうのLinuxプログラミングという本にfdopen使っていたので、そのまま使ってしまいました。
でも、なんでmacやFreeBSDだと問題なく動いて、hp-uxだと動かなかったんですかね?
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <string.h>
#include <stdio.h>
#define MESSAGE "GET /bbsmenu.html HTTP/1.0¥r¥nHost: menu.2ch.net¥r¥nUser-Agent: Monazilla/1.00¥r¥nConnection: close¥r¥n¥r¥n"
static int open_connect(char *host);
int main(){
int socketfd, nbyte = 0;
char buf[5000];
socketfd = open_connect("menu.2ch.net");
if((nbyte = write(socketfd, MESSAGE, strlen(MESSAGE))) == -1){
perror("write");
exit(EXIT_FAILURE);
}
if((nbyte = read(socketfd, buf, sizeof(buf))) == -1){
perror("read");
exit(EXIT_FAILURE);
}
0802デフォルトの名無しさん
2008/08/24(日) 16:17:150803デフォルトの名無しさん
2008/08/24(日) 17:03:30>またsendの戻り値無視か
すいません。
nbyte = write(socketfd, MESSAGE, strlen(MESSAGE)
のnbyteがstrlen(MESSAGE)と等しければ良いんですよね?
0804デフォルトの名無しさん
2008/08/24(日) 17:16:00writeとreadの他に
専用のsendとrecvがあるのか...
どっちを使った方が良いのかな?
当然、sendとrecvですよね...
でも、どうして自分の持っている本(新the unix super text下, Linuxプログラミング改訂第二版, ふつうのlinuxプログラミング)
では使ってないんだろう...
一般的ではないのかな?
0805デフォルトの名無しさん
2008/08/24(日) 17:17:07いやちがう。すべて送られるとは限らないのがソケットらしさ。
0806デフォルトの名無しさん
2008/08/24(日) 19:11:44だから普通は全部送り切れるまでループさせるんだよ。
0807デフォルトの名無しさん
2008/08/24(日) 19:17:07Unix 系の OS は write/read は flags 決めうちで send/recv を呼ぶ.
特に, flags 指定する必要がない場合, write/read で無問題
0808デフォルトの名無しさん
2008/08/24(日) 22:41:57すいません。
いろいろアドバイスいただいたのですが、良くわかりませんでした。
ループさせるとか...具体的なコードが無いと...
とりあえず、今日初めてネットワークプログラミングという物をして
返事が返ってきたので、今日はコレで満足です。
ビッグカメラのポイントが1万円分有るので、こんど、
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTIを買ってこようと思います。
有り難うございました。
0809デフォルトの名無しさん
2008/08/24(日) 23:26:540810デフォルトの名無しさん
2008/08/25(月) 17:05:39void
recv(socket s, vector<char>& buf) {
int rsize = 0;
do {
int size = recv(s, &buf[rsize], buf.size() - rsize);
if (size <= 0) {
// エラー返すなり例外投げるなり。
// ==0 の時は別処理かも。マニュアル参照。
}
rsize += size;
} whlie (buf.size() != rsize);
}
0811デフォルトの名無しさん
2008/08/25(月) 21:29:200812デフォルトの名無しさん
2008/08/26(火) 00:22:47acceptやselectやpollがEINTRを返してきだして笑った
0813デフォルトの名無しさん
2008/08/26(火) 02:02:20fdopen は何がまずいの?
テキスト指向をお手軽に済ませたいときは便利だと思うけど。
まあ、バッファリングとかテキストモードとかは気にしなきゃいけないけどさ。
0814デフォルトの名無しさん
2008/08/26(火) 05:08:08オープン系ならreadもrecvも大差ないがOS依存といえる
(Winsockとかだとどうなるか知らん)
glibcだと読み込みにmmapを使うバージョンがあるからさらに厄介
もともと、ファイルストリームと片方向ストリーム用の機能だから過信は禁物
readとwriteの間にキャッシュの同期処理が入るなど見た目より複雑になる
何となく問題が起きそうな事書いているが
動作を理解してない初心者にとって逆に意図した動作になる事が多い
でも、実害が起きたら勉強になるから、その時に理解すればいいと思う
0815デフォルトの名無しさん
2008/08/26(火) 17:12:45ですが回線の遅い環境を考慮し、UDPで行うべきだと指摘されたことがあります。
やりとりするデータはキーデータのため、ストリームとして扱えるTCPは非常に親和性が高かったです。
UDPでやるとしても同じ形式のままで行うつもりのため、自力で「再送処理」や「データの並び替え」を行う必要があります。
そうなるとTCPの再開発に近いものがあり、なんだか無駄に思えます。
そもそもそこまでやって、速度の向上は見込めるのでしょうか?
TCPの「確認応答」を待たずに送り続けられるだけ速いのでしょうか?
0816デフォルトの名無しさん
2008/08/26(火) 17:24:24UDPはパケット届かなくても良いやって感覚だからね。
>>815自身が設計上、TCPが良いと判断するなら、TCPを使うべき。
もしプレイヤーの内、誰かが回線ケーブルを引っこ抜いた時にゲーム全体がストップするようなら、
それは設計の問題。
0817デフォルトの名無しさん
2008/08/26(火) 17:34:04お返事ありがとうございます。
サーバーが時間管理をしているため、誰かがケーブル引っこ抜いても「そのプレイヤーだけ無視して」進めます。
なのでそういう意味での心配はありません。(全員に被害が出るのは、サーバーが動いてるPCが動作不良になったときくらいです)
TCPの仕組みを「3 Minutes Networking」というHPで勉強したところ、
TCPであっても相手のバッファをオーバーしない範囲では、確認応答を待たずにガンガン送信を行うように理解しました。
となると、「バッファの限界値に達しない」「送信ミスが起きない」という前提ならば、TCPはUDPと同等の速さと考えてよいのでしょうか?
「そんな前提ありえねー」というのはありますが、ストリーミング的に使いたい以上「送信ミスが起きた」らUDPでも再送処理が必須になり、スピードは生かせません。
UDPがTCPより優れるためには、やはり「途中でパケットが紛失しても、無視して進める」タイプ限定なのでしょうかね?
0818デフォルトの名無しさん
2008/08/26(火) 17:56:40それを切断して何事もなかったかのように継続できるんだろ?
むりしてUDPに最適化する必要ないと思うけどね
ぶっちゃけ気分の問題くらいの変化しかないと思う
サーバーの回線が太いなら
データロスト時の再送信とか
多重送信されたときの破棄とか
受信順の考慮とかがめんどくさいなら
無理してやる必要ない 低速で低能なノードお断りでいいんじゃねーの?
0819デフォルトの名無しさん
2008/08/26(火) 18:03:07一応アクションゲームなので、技術的に可能ならばなるべく速いものをリリースしたいなと思ったのですが
ストリーミング的な使い方をする限りはほっとんど差はでないようですね。
さすがに今からUDPに最適化したシステムに作り替えるのはつらいですし、TCPでいってみます。
どうもありがとうございました。
このスレにはたびたびお世話になっています。いつもありがとうございます。<ALL
0820デフォルトの名無しさん
2008/08/26(火) 19:32:55実際思うんだけど、そんなに低速低能なノードでネットゲーできるのかねぇ?
UDP TCP 以前の問題のような気がする。
0821デフォルトの名無しさん
2008/08/26(火) 19:45:36古いカウンターストライクは電話回線対応(動作CPUもMHz世代)だったぜ?
0822デフォルトの名無しさん
2008/08/26(火) 21:22:06pcap_next_ex使ってこれをキャプチャーしてるんだ。
しかしどうやっても(pcap_next_ex以外を全てコメントアウトしても)
秒間50個くらいまでしかキャプチャーできなくて、
結局どんどん残りがバッファに溜まって相手の動きが遅延再生されてしまう。
高速化についてお知恵を貸して頂けませんか。
0823デフォルトの名無しさん
2008/08/26(火) 21:55:120824デフォルトの名無しさん
2008/08/26(火) 23:15:40現在の自分の向いている方向、座標、HP、アニメーション番号、アニメーション再生フレーム数。
まぁ32バイトもあれば「自分の情報」は送れそうだ。
問題は「弾を発射した」情報。
これを相手が受信ミスすると、弾が発射されてないことになってしまう。
一瞬で着弾するから、受信ミスで当たらなかったとしても「あれ?まぁ当たらなかったのか」で攻撃側が納得しちゃうのかな?
くらう側の自己申告式だよね?ヒット処理って。
チートで無敵モードとか簡単に作れそうだな・・・。
0825デフォルトの名無しさん
2008/08/26(火) 23:17:240826デフォルトの名無しさん
2008/08/26(火) 23:23:18あと過去ログどこ見ればその話題が乗ってるの?
825のレスに何の意味があるの?
0827デフォルトの名無しさん
2008/08/26(火) 23:30:300828デフォルトの名無しさん
2008/08/26(火) 23:32:010829デフォルトの名無しさん
2008/08/26(火) 23:39:290830デフォルトの名無しさん
2008/08/26(火) 23:40:310831デフォルトの名無しさん
2008/08/26(火) 23:42:22何度目か数えてる奴いる?
0832デフォルトの名無しさん
2008/08/26(火) 23:43:08減らせないから困っていたんだ・・・
なんとか頑張ってみるよ
0833デフォルトの名無しさん
2008/08/26(火) 23:43:16むしろ、クライアントはサーバ機にキー入力情報を送るだけで良い希ガス。
弾の発射や当たり判定はサーバ側でやるといいんじゃね。
0834デフォルトの名無しさん
2008/08/26(火) 23:43:42質問がループしたって違う人が参加してれば何かかわるかもしれんし
何度だろうと全然かまわんだろう
0835デフォルトの名無しさん
2008/08/26(火) 23:50:16キー入力だと、少なくともサーバー→クライアントへは正確性が保障される必要があるでしょ
そうなると再送処理や並べ替え処理が必要になり、なんのためにUDP使ってるのって話になる
0836デフォルトの名無しさん
2008/08/26(火) 23:53:39もちろん毎スレUDPの話題自体はちょびちょびあったが
0837デフォルトの名無しさん
2008/08/27(水) 01:07:03>キー入力だと、少なくともサーバー→クライアントへは正確性が保障される必要があるでしょ
なんで?
ユーザからのキー入力をすべてサーバ側で解決する。
通信方式をTCPにするかUDPにするかは要件次第。
クライアントには結果を送りつけて表示させる。
ここの実装はコマ落ちしてもいいならUDP。
ネットゲームの種類がわからないから一概には言えないけど、これで問題あるの?
0838デフォルトの名無しさん
2008/08/27(水) 02:02:28getsockopt( fd, SOL_SOCKET, SO_SNDBUF, &i, sizeof( i ) );
printf( "SO_SNDBUF == 0x%x\n", i );
で、常に0x0が帰ってくるんだけど、何か間違ってる?
0839デフォルトの名無しさん
2008/08/27(水) 08:36:120840デフォルトの名無しさん
2008/08/27(水) 09:08:52ああ、833はクラ>サバだけキー入力で済まそうって言ってるのか
読み違えた。すまん
でも結局サバからクラへは、UDPで「状況」を逐一送る必要があるのかー・・・
・抜けの間の補完処理(ワープとか起きにくいように)
・キャラ以外の「状態」を持つオブジェクトの変化についても逐一送るのか?
ってのが気になるな。
FPSでドラム缶を撃って吹っ飛ばすことができるが「ドラム缶が吹っ飛ばされた」というデータをクラが受信ミスった場合、ドラム缶の状態が矛盾しちゃうよね?
だからといって逐一ドラム缶(たくさんあるだろうし、窓ガラスとか、机とかたくさんあるよね)の状態をサバがクラに送信するのは変だし
0841デフォルトの名無しさん
2008/08/27(水) 10:03:59あさっての方向に飛んでいくようなオンラインゲームでは、
移動ベクトルの予測である程度動かしてるから、パケットが
こなかったら予測地点の方向に移動し続ける。
パケットが届いて位置が間違っていたらまき戻ったり修正が入る。
プレイヤーは気にせずそのオブジェクトの移動予測地点を
狙って撃てば実際は違っていても当たり判定が通る可能性がある。
0842デフォルトの名無しさん
2008/08/27(水) 11:20:28ドラム缶が吹っ飛ぶとき「こういう速度で、こっち方向に吹っ飛んだ」という情報が1度だけくるのか(これを受信しそこねると矛盾がひどい)
ドラム缶が吹っ飛んでいく過程で「今こういう速度で、こっち方向に飛んでいる」という情報が何度もくるのか(いちいち全オブジェクト、何度も飛ばしてたら情報多すぎない?)
841が例にあげたゲームだと、後者っぽいねー
うまく
・変化しているオブジェクトだけ情報を送る
・UDPの1パケの容量制限(MTU)にひっかからないように、たくさんのオブジェクトが変化している場合は、かわりばんこに一部のオブジェクトの情報だけ飛ばすなどして負荷分散
してるかな。
キー情報を送りあうTCPネトゲしか作ったことがない身としては、すげーと思うわ
0843デフォルトの名無しさん
2008/08/27(水) 11:46:05pcap_setbuffを使うとお手軽に遅延は無くなる。
でもロストは増える。
0844デフォルトの名無しさん
2008/08/27(水) 12:59:05ごめん、色々勘違いしてた
mintocopyでWinpcapマニュアル内を探してみて
0845デフォルトの名無しさん
2008/08/27(水) 15:43:26移動予測でデータ間引いてるわけだから量は多くないはず。
オブジェクトの衝突判定のような優先度の高い情報だけは
ハンドシェイクでやってるんじゃないかと。
多分2PCで観察するとドラム缶の軌跡なんかは
かなりいい加減に見えるんじゃないかな。
0846デフォルトの名無しさん
2008/08/27(水) 15:55:55なるほどねー。
こんな感じかな。
弾とかがビュンビュン飛び交うゲームだと、下記でいう「アクティブなオブジェクト」が多くなりすぎてきついかも?
あと、キー情報と違ってサーバーにゲームの進行(当たり判定など)をまかせるので、サーバー重そうだね。
その代りクライアントが「ビュアーに徹する」ことができれば、サーバープログラムだけ更新すればゲームバランスとか調整できていいかも?
■毎フレーム飛ばす
キャラの位置情報、アニメーション情報、HPなど
■ドラム缶など、重要度の低いもの(非アクティブなオブジェクト)
仮にドラム缶が120個フィールド上にあるとする。
1フレームに1つのドラム缶の「位置、動き」情報を送る。
通信状況が悪くても、最悪でも2秒に1回「そのドラム缶の状態を更新する」チャンスがある。
■すっとばされたドラム缶など(アクティブなオブジェクト)
アクティブな状態(動いている状態)のドラム缶は120個未満であろう。
120フレに一回よりは短い頻度で、状態更新情報を送ってやる。
本当にたくさんのドラム缶が一斉に吹っ飛んだ場合などは、うまく動的に更新頻度を減らし、UDPパケの送信上限にひっかからないようにする
0847デフォルトの名無しさん
2008/08/27(水) 16:47:41操作同期するだけならまったく問題ないんだが
FPSだと 途中から参加 できるんだよな
あれの同期ってどうやってんだろう
めんどくさそう
0848デフォルトの名無しさん
2008/08/27(水) 16:57:00操作同期ってのが「キー入力情報を送りあう」という意味なら、それじゃUDPの強みがないねって話になったでしょ
0849デフォルトの名無しさん
2008/08/27(水) 17:01:56キャラの情報にしたって、クライアントが別のクライアントの情報を受け取るのは毎フレームである必要はないよな。
参考になるなー。
0850デフォルトの名無しさん
2008/08/28(木) 09:01:38何度もこの話題を繰り返してるという、自称スレ古参さんとかがもっと意見を出してくれるのを期待してたんだが
ほんとに>>846こんなつくりであってるのかね?
0851デフォルトの名無しさん
2008/08/28(木) 11:07:54試せば判るだろ
あーいらつく
0852デフォルトの名無しさん
2008/08/28(木) 12:31:36デバイスドライバの実装をどこに書けばいいのかわかりません。
「実際のデバイスへのアクセスはここに書け」みたいなところ見当たらないし。
知っている方いませんか。
0853デフォルトの名無しさん
2008/08/28(木) 13:48:19試せば判るだろ
あーいらつく
0854デフォルトの名無しさん
2008/08/28(木) 14:24:420855デフォルトの名無しさん
2008/08/29(金) 01:29:200856デフォルトの名無しさん
2008/08/29(金) 22:44:470857デフォルトの名無しさん
2008/08/29(金) 22:51:04膨らまない原因に気づかないのか?
0858デフォルトの名無しさん
2008/08/29(金) 22:52:470859デフォルトの名無しさん
2008/09/01(月) 02:44:33普段は一瞬で connect が終わるシステムで、あるとき
connect がいつまでたっても(50分以上)返ってこないことがありました。
Linux の場合、長くても4分程度でエラーが返ってくると思ってたんですが、
connect が50分も返ってこない状況って何が考えられるでしょうか
0860デフォルトの名無しさん
2008/09/01(月) 06:53:13例えばLANケーブルが抜けたり、PPPが切れたり
0861デフォルトの名無しさん
2008/09/01(月) 08:53:020862デフォルトの名無しさん
2008/09/01(月) 09:20:310863デフォルトの名無しさん
2008/09/01(月) 10:30:18LANケーブルが抜けたときは 4分程度で ETIMEDOUT が返ってきました
>>861
あったりします
connect 側では SYN を送って ACKSYN が返ってこないのを監視していると
思ってましたが、状況は中継装置で変わるもんでしょうか
>>862
タイムアウトが遅すぎるのを問題視してます
数分で返ってこない場合があるのなら自前でタイムアウト処理する必要があるので
0864デフォルトの名無しさん
2008/09/01(月) 19:58:26cat /proc/sys/net/ipv4/tcp_keepalive_intvl
cat /proc/sys/net/ipv4/tcp_syn_retries
cat /proc/sys/net/ipv4/tcp_retries1
cat /proc/sys/net/ipv4/tcp_retries2
0865デフォルトの名無しさん
2008/09/01(月) 22:10:07サーバ・クライアントとも以下の値ですた
tcp_keepalive_time 7200
tcp_keepalive_intvl 75
tcp_syn_retries 5
tcp_retries1 3
tcp_retries2 15
socket 生成時、SO_KEEPALIVE は有効にしてません
connect が返る前の段階では establish になってないので keepalive は
関係ないと思ってたんですが違うんでしょうか
syn_retries が 5 なので大体長くて4分程度でタイムアウトになることを見込んでました
connect(2) によると syn_cookies で応答が遅くなる場合があるって書いてありましたが、
理屈がよくわかってないのと、当該時刻にサーバーで syn flood を検出した形跡はありません。
0866デフォルトの名無しさん
2008/09/01(月) 22:27:43* packet capture
0867デフォルトの名無しさん
2008/09/01(月) 22:56:57通常, 4分程度でタイムアウトになるのは ARP が帰ってこない場合
NAT box が syn/ack 返せば話が変わる
0868デフォルトの名無しさん
2008/09/01(月) 23:09:42connectが成功してるのに成功してないと勘違いしてるだけじゃねーの。
TCPの再送タイムアウトなんて数分なんだから。
いったんconnectが成功し、パケットのやりとりが皆無ならTCPの
接続は無限にタイムアウトしない。
0869デフォルトの名無しさん
2008/09/01(月) 23:25:45>>866
2年以上連続稼動してきたシステムで一度だけ発生した現象であり
今のところ症状が再現してないので、その方法だと追求は難しそうです。
>>867
なるほど、しかし SYN/ACK 返ってきても connect が返らないケースって
あるんでしょうか?申し遅れましたが linux のカーネルは 2.4.31-0vl1.8smp です。
>>868
少なくとも connect の次の行にあるログ出力の形跡が残ってないことは確かで、
ログの機能はその前後行き続けていることから connect が返っていないと断定しています。
おっしゃるとおり、一度 ESTABLISHされた接続は keep_alive とか設定しなければ
勝手にタイムアウトすることはないですよね
0870デフォルトの名無しさん
2008/09/02(火) 00:41:27ログ出力がバグっている可能性も忘れないように。
ログは、絶対出力される!と、断定できるならいいが。
絶対というのは、プログラム上他のスレッドが同時に
ログ出力しても論理的に大丈夫なはず、と言い切れるか
どうかということね。
0871デフォルトの名無しさん
2008/09/02(火) 08:16:54その部分は非常に高い確率で信用しています
論理的にはログ出力は mutex で排他処理してますし、
それが2年以上問題なく動き続けてきた実績があるので
0872デフォルトの名無しさん
2008/09/02(火) 09:10:230873デフォルトの名無しさん
2008/09/02(火) 10:21:21その時のエラー番号は?
0874デフォルトの名無しさん
2008/09/02(火) 10:52:4850分経っても返ってきてないんです
運用上の問題があって kill されてしまってます
0875デフォルトの名無しさん
2008/09/02(火) 11:17:18connectに渡してる相手側のIPアドレスやポート番号は絶対に間違ってない。
tcp_syn_retries 5
connect(2)から戻らない、50分後にプロセスをkill
カーネルバグってんじゃない?
0876デフォルトの名無しさん
2008/09/02(火) 11:26:46ありがとうございます。
やはりおかしいですね。カーネルソースを追って確認してみます。
0877デフォルトの名無しさん
2008/09/02(火) 11:35:48connectをコールするとSYNフラグがついたIPパケットが送信される。
SYN/ACKフラグのついたIPパケットが受信出来なければ、最大5回まで
リトライ。リトライオーバーでタイムアウトしエラーリターン。
SYNパケットがドライバや、途中の回線状態(含むHW)でロストしたとしても、
上記処理は正常にエラーリターンしそう。
戻りのSYN/ACKパケットがドライバや、途中の回線状態(含むHW)でロストしたとしても、
やっぱり上記処理は正常にエラーリターンしそう。
最後のACKパケットがドライバや、途中の回線状態(含むHW)でロストしたとしても、
相手側が困るだけで、自分のコールしているconnect(2)からはリターンしそう。
smpカーネル使ってるみたいなので、connect(2)そのもののロジックよりも、
smp周りのデッドロックを想定した方が良いかも。
0878デフォルトの名無しさん
2008/09/02(火) 11:43:31netstat で見るとどうなってるよ, コネクションの状態?
# つか, 現象起きないのか?
0879デフォルトの名無しさん
2008/09/02(火) 11:49:262年稼動してきて1度きり、再現してません
0880デフォルトの名無しさん
2008/09/02(火) 20:33:01smp のデッドロックですか
kill する際、統括スレッドがシグナルを受け取ってから各スレッドに対して
pthread_cancel を実行するんですが、connect のところで詰まっていたスレッドは
正常にキャンセルできています。pthread_cancel(3) によると connect は
キャンセルポイントになっているようなのでこれ自体は正常な挙動だと思うのですが、
デッドロックがあったとして、cancel point となるもんでしょうか。
0881デフォルトの名無しさん
2008/09/02(火) 22:25:360883デフォルトの名無しさん
2008/09/04(木) 01:03:43クライアントからの入力を全部読み込んでから結果を返却するのはどうすればいいですか?
while ((inputLine = in.readLine()) != null) {
※inはBufferedReader
これだと全部読み込んだ後フリーズします。
クライアントでcloseすれば抜けますが、それだとoutまでcloseしちゃうんで。。。
0884デフォルトの名無しさん
2008/09/04(木) 01:39:13256 バイトごとにぶった切って最初の 1 バイトにブロックサイズ、
残りの 0〜255 バイトでデータ部、0 バイトのデータ部が来たら
終了とか。EOF にならなくても終わりを検知できる方法を考えれ。
0885デフォルトの名無しさん
2008/09/04(木) 06:37:390886デフォルトの名無しさん
2008/09/04(木) 06:58:36切断つうか EOF 検知できないんじゃないの? 大昔にピア無応答時の緊急
処置でしか使った事ねぇけど。
0887デフォルトの名無しさん
2008/09/04(木) 07:24:11相手はrecvが0を返す事で判る
0888883
2008/09/04(木) 23:47:38とりあえずそうしてあります。
ちょっと納得いかないところもありますが。。。
>>885〜887
ハーフクローズなんて初めて聞いたのでしらべました。
終了時のルールがあるんですね。
これがベストなんでしょうが、
JAVA-VB(Winsockコントロール)間でどう実装するのか分かりませんでした。
とりあえず何が問題なのか分かった気がするので、もうちょっと調べてみます。
ありがとうございました。
0889デフォルトの名無しさん
2008/09/05(金) 00:14:18なぜほとんどの通信ソフトがプロトコル作ってるのか考えろ
0890883
2008/09/05(金) 00:23:11Socket#shutdownOutput
これで試したらうまくいきました!
でもクライアントはVB6なんです。。。orz
0891デフォルトの名無しさん
2008/09/05(金) 00:29:230892デフォルトの名無しさん
2008/09/05(金) 00:32:490893デフォルトの名無しさん
2008/09/05(金) 00:49:19そもそもプロトコルの意味を理解していないのかもね
0894883
2008/09/05(金) 01:06:58無視じゃなくてリロードしてなかったんですよ。
出来ればアプリ層にプロトコル実装したくなくて、
readLineをオーバーライドして対応させようかと思ったけど、
それもパフォーマンスの面で不安だったりして。。。
>>892
いや、自分にとっては有益です。
少なくともフリーズしてる理由が分かりました。
無駄に思われる必要はないと思いますよ。
>>893
ヤバイぐらいわからないから勉強してるんですよ。
あんまいじめないでください。
0895デフォルトの名無しさん
2008/09/05(金) 01:10:54怒られてるのに上から目線
0896デフォルトの名無しさん
2008/09/05(金) 01:12:180897デフォルトの名無しさん
2008/09/05(金) 04:23:070898デフォルトの名無しさん
2008/09/05(金) 04:37:55話したまえ
0899デフォルトの名無しさん
2008/09/05(金) 04:46:520900デフォルトの名無しさん
2008/09/05(金) 04:55:07まずは意見を聞こうか
話せ
0901デフォルトの名無しさん
2008/09/05(金) 05:05:390902デフォルトの名無しさん
2008/09/05(金) 05:06:59君の意見を出してもらおう
0903デフォルトの名無しさん
2008/09/05(金) 05:15:222ch は初めてか? 力抜けよ。
0904デフォルトの名無しさん
2008/09/05(金) 05:18:17よく考えてから書き込みしろよ
0905デフォルトの名無しさん
2008/09/05(金) 21:06:45そのまま社会に出て迷惑かけないでねw
0906デフォルトの名無しさん
2008/09/06(土) 12:37:35プログラム上からネットワーク上のファイルを読むことは可能でしょうか。
fopen使ってのファイル読み込みは失敗したので(使い方が違う?)。
0907デフォルトの名無しさん
2008/09/06(土) 12:40:54C言語でも使って直にアドレス書いてるのでは?どう書いてる?
0908906
2008/09/06(土) 13:03:11fopen("192.168.0.1\\test\\aa.txt" ,. "r");←共有されているフォルダ。
今は環境がないので試せません。
もしかすると↓にしないといけなかったのかもと今思いました。
fopen("\\\\192.168.0.01\\test\\aa.txt" , "r" );
アクセス権限とかも問題なのかも??
0909デフォルトの名無しさん
2008/09/06(土) 13:44:170910デフォルトの名無しさん
2008/09/08(月) 10:36:27>もしかすると↓にしないといけなかったのかもと今思いました。
>fopen("\\\\192.168.0.01\\test\\aa.txt" , "r" );
是。
>アクセス権限とかも問題なのかも??
是。
0911デフォルトの名無しさん
2008/09/08(月) 11:38:220912デフォルトの名無しさん
2008/09/08(月) 11:39:050913デフォルトの名無しさん
2008/09/08(月) 12:00:23ネットワーク系のプログラムぐぐった時に出てくるのがC言語だし
0914デフォルトの名無しさん
2008/09/09(火) 13:39:370915デフォルトの名無しさん
2008/09/09(火) 13:45:28なつかしすww
現役で使ってる会社あるんだろうなーw
0916デフォルトの名無しさん
2008/09/11(木) 23:46:48linuxでは、recv関数の第四引数のflagに
0を指定することが多いと思いますが、
0を指定したときと、フラグ(MSG_WAITALL)を
指定した時とで、なにが違うんでしょうか?
ていうか0の指定ってのは何を意味するんでしょうか?
0を指定した場合、指定サイズまで取得できないけれど
MSG_WAITALLを指定したら指定サイズまで取れたって事があったので、
manとか調べたんですが載ってなかったので
ご存知の方は教えてください
0917デフォルトの名無しさん
2008/09/12(金) 00:18:23recvの動作を指定できる
ググればそれなりに出てくるけどな
0918デフォルトの名無しさん
2008/09/12(金) 01:23:45間違いなくmanに載ってるので調べなおせ
0919916
2008/09/12(金) 05:42:34flagが受信オプションなのは判ってるんですが
0を指定したらどうなるのかって事が知りたかったんです
>>918
「0」「ゼロ」で検索したけれどそれっぽいのは無かったです
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/recv.2.html
「recv() コールの flags 引き数には、以下の値を 1つ以上、
ビット単位の OR (論理和) を取ったものを指定する: 」
とは書いてあったんですが
これは0を指定した場合の事ではないですよね?
0920デフォルトの名無しさん
2008/09/12(金) 07:25:050921デフォルトの名無しさん
2008/09/13(土) 08:17:40http://schiphol.2ch.net/test/read.cgi/575/1010948472/l50
0922デフォルトの名無しさん
2008/09/14(日) 01:00:00ヒント1:10進数で1,2,4,8を2進数にしてみると?
ヒント2:ビットと判定
0923デフォルトの名無しさん
2008/09/14(日) 14:51:010924変な質問
2008/09/16(火) 16:26:53#if !defined(WIN32) && !defined(_WIN64)
#include <pshpack4.h>
#endif
// (略
#if !defined(WIN32) && !defined(_WIN64)
#include <poppack.h>
#endif
となっていて、WIN32が未定義でwinsock2.hを読み込むと、最初のpshpack4.hは
読み込まれますが、途中のOle2.hでWIN32が定義されてしまい、最後のpoppack.hが
読み込まれません。
ということは、winsock2.hを読み込む前にWIN32が定義されてなければならない
という認識でよいのでしょうか?
0925924
2008/09/16(火) 16:36:460926デフォルトの名無しさん
2008/09/27(土) 10:04:20を取得する方法を教えてください。
ipconfigを実行するとIO_CTL_TCP_QUERYINFORMATION_EXが
投げられているのがTDImonで確認できたのですが、
具体的な引数の指定等を教えてください。
0927デフォルトの名無しさん
2008/09/27(土) 18:40:160928デフォルトの名無しさん
2008/09/27(土) 23:50:27VBまたはC#希望ですがなければ他の言語でも構いません
�@httpリクエストのヘッダ、メッセージを送信する前に確認して
保存したり、リファラやクッキーなど訂正箇所があれば書換えたりしたいです
�Ahttpからhttpsのページへリダイレクトするときに自動でリダイレクトするか
ヘッダ、メッセージを確認してからリダイレクトするかオプションがあれば嬉しいです
httpレスポンスはヘッダ、メッセージともに確認保存するサンプルは山のようにあるのですが
httpリクエストヘッダ、メッセージを確認、訂正、保存するサンプルは見当たりません
自分がどのようなリクエストを送信しているのか確認しながら勉強したいです
どなたか詳しい方お願いいたします
0929デフォルトの名無しさん
2008/09/27(土) 23:55:210930デフォルトの名無しさん
2008/09/28(日) 00:20:350931デフォルトの名無しさん
2008/09/28(日) 00:47:59ただの文字列処理
0932デフォルトの名無しさん
2008/09/28(日) 01:13:53ヒントありがとうございます
tcpdump調べてみました
当方OSがWindowsなのでWinDumpというツールがWindows環境でTCPDumpできるようです
参考になりましたありがとうございます
0933デフォルトの名無しさん
2008/09/28(日) 01:31:590934デフォルトの名無しさん
2008/09/28(日) 01:33:470935デフォルトの名無しさん
2008/09/28(日) 01:43:41あれって出てきた文字列をコピ&ペーストできるんですか?
0936デフォルトの名無しさん
2008/09/28(日) 10:50:260937デフォルトの名無しさん
2008/09/28(日) 12:00:11できない
何で解答にできないこと答えてるの
0938デフォルトの名無しさん
2008/09/28(日) 14:05:050939デフォルトの名無しさん
2008/09/28(日) 14:40:16くだらん解答しか出来ないなら消えろカス
0940デフォルトの名無しさん
2008/09/28(日) 14:49:27お前は素直に愚かさを恥じろ
0941デフォルトの名無しさん
2008/09/28(日) 14:53:59httpリクエストを確認(保存、加工)しながら送信できるサンプルコード教えてください
お願いします><
0942934
2008/09/28(日) 14:59:39表示して必要に応じて選択→右クリック→Copyとすればいい。
0943934
2008/09/28(日) 15:00:300944デフォルトの名無しさん
2008/09/28(日) 15:06:50後出しジャンケンのようで申し訳ないですが
プロクシでは駄目なんです
一応httpリクエスト書き換えツール持ってるんですけど
諸事情で自分にあったツール作成を目指すことになりました
どなたかhttpリクエストを確認、保存、加工、送信(その後レスポンス受信)
サンプルコードお願いします
ちょっと難しすぎて困ってます><
0945デフォルトの名無しさん
2008/09/28(日) 15:09:58こんな奴につきあってたら時間の無駄になる
0946デフォルトの名無しさん
2008/09/28(日) 15:12:190947デフォルトの名無しさん
2008/09/28(日) 15:12:570948デフォルトの名無しさん
2008/09/28(日) 15:13:02自分の送信しようとしているhttpリクエストのヘッダ及びメッセージを確認、加工、保存、送信したいです
できればショートカットキーを使ってマクロ組めるようにしたいです
ちょっと難しいですか?
どなたか詳しい方サンプルコードお願いします
0949デフォルトの名無しさん
2008/09/28(日) 15:14:51海外ツールなのですが探したところ公開していませんでした
>>947
こらっ
偽者出現
>>947は私じゃないです
0950デフォルトの名無しさん
2008/09/28(日) 15:15:130951デフォルトの名無しさん
2008/09/28(日) 15:16:160952httpリクエストヘッダ確認
2008/09/28(日) 15:16:39また夜に来ます
よろしくお願いします
0953httpリクエスト確認
2008/09/28(日) 15:17:47そうです
ソースまるごとください^^;
それでは行ってきます
0954デフォルトの名無しさん
2008/09/28(日) 15:18:230955デフォルトの名無しさん
2008/09/28(日) 15:19:11ソケットに関するスレだろ
こんなんことくらいで何???
あなたこそ消えたほうがいいよ
0956デフォルトの名無しさん
2008/09/28(日) 15:20:080957デフォルトの名無しさん
2008/09/28(日) 15:21:18そんな事よりちゃんと答えてやれよ
0958デフォルトの名無しさん
2008/09/28(日) 15:21:460959デフォルトの名無しさん
2008/09/28(日) 15:27:58wwww
0960デフォルトの名無しさん
2008/09/28(日) 15:31:020961デフォルトの名無しさん
2008/09/28(日) 16:33:39>>960
完全にこちらの要件を満たしてるものを希望します
それ以外はいりません
確認、加工、保存、送信です
たったこれだけです
やれる人だけ返事ください><
0962デフォルトの名無しさん
2008/09/28(日) 16:44:390963デフォルトの名無しさん
2008/09/28(日) 17:02:17つtelnet
0964デフォルトの名無しさん
2008/09/28(日) 17:45:15金だすならやるよ?
最低500万からだけど
0965httpリクエスト確認
2008/09/28(日) 19:25:57また偽者出没!
>>961は私じゃないです
>>963
以前テラネットというツール試してみたんだけど
IPで接続する仕様なのかな
接続したいサーバは分散型なのでIPでの接続は拒否されました
>>964
私の言ったとおりの物であれば2年前ならキャッシュで購入してたな
今は貧乏どん底
明日にでも首くくろうかって状態^^;
今も某大手本屋さんで見てきたんだけど
リクエストの確認自体殆ど情報が無い
なぜかレスポンスヘッダの参考画面はどの本にも
もういいよってくらい載せてあるのにね
ましてや変更や多重起動で
クライアント�@で通信
クライアント�Aで続き
クライアント�Bで完了
これを自動でやるほうほうなんて全く無い
唯一クライアントヘッダの参考画面を掲載していた
ハッキング全なんとかって本は2冊とも既に所有しているけど
肝心なところができない
しかもソースはC言語orz
どなたか
クライアントヘッダメッセージを確認、加工、保存のサンプルお願いします
サーバのことばかりでクライアントのことは詳しい解説ってないですね
以前、他スレでメチャクチャでかい口叩いて人のこと糞ボロに言う人は
サーバを理解してない奴はカスみたいなこと言ってたけど
サーバを理解してクライアントの操作は簡単ならなぜサンプルがないんだ?
サーバ作っただけでエライのか?
0966httpリクエスト確認
2008/09/28(日) 19:30:26その通りです
ノーガキはいりません
解答できる方だけ解答よろしく
0967デフォルトの名無しさん
2008/09/28(日) 19:33:01テラネットなんてしらねぇよ
telnetでもつかえって言ってんだよクズ
0968デフォルトの名無しさん
2008/09/28(日) 19:46:10だからお前みたいな役にも立たないアドバイスには
期待もしてないので解答者やめろ
答えるなカス
0969デフォルトの名無しさん
2008/09/28(日) 19:47:04出来もしないのにしゃしゃり出てくるのは病気か?
病院池
0970デフォルトの名無しさん
2008/09/28(日) 19:54:01簡単に言うと、デバッグ用の確認の機能は開発初期段階に手早く作って破棄されるものだから、
わざわざサンプルとして公開する人も少ないだろうにjk
0971デフォルトの名無しさん
2008/09/28(日) 20:13:22自分が不思議なのは「完璧」「パーフェクト」「完全」「超」
とんでもない良本のようなタイトルがいっぱいあるのに
リクエストヘッダ、メッセージの確認サンプルは金床さんの本以外にない
完全とか完璧とかという言葉使わないで欲しいよ
全然完璧じゃないのに
「この1冊ですべてわかる」ってどの本にも書いてある
それなのにレスポンスヘッダの参考画面は掲載していても
リクエストヘッダの確認方法さえも書いていない
日本の解説者は嘘つきばかりで見てて情けない
嘘つくくらいなら本だすな
出す以上はタイトルどおりに全てを羅網してほしいもんだ
とにかく嘘つき解説本ばかり
「クライアントは簡単!」って書いてある本もあった
んじゃリクエストヘッダの確認や加工くらい書けよ
嘘つきのビッグマウスばかりだ
できないなら解説者やめろ
メールだしても返事来たのは2人だけ
1人はヘンテコなメールよこすな
もう1人は古旗先生だ
古旗先生以外はみんな嘘つき
0972デフォルトの名無しさん
2008/09/28(日) 20:26:13サーバ作る人から見れば良本なのだろうけど
目的があってクライアントツール作りたい人間からすれば
何の役にも立たないウンコ本値段だけは高いが全然役に立たない
サーバの解説すれば売れるだろうからって計算だけで作成された
中身の無いうすっぺらい内容ばかり
クライアント、リクエストヘッダの確認は
解説本を読む以前の問題なのか?
その割にはどこのスレやどこの言語サイトで聞いても誰も答えれない
サーバ作ってる連中がアホみたいな能書きたれて終わり
リクエストヘッダ確認加工のサンプルお願いします
0973デフォルトの名無しさん
2008/09/28(日) 20:35:370974デフォルトの名無しさん
2008/09/28(日) 20:40:250975デフォルトの名無しさん
2008/09/28(日) 20:41:31それが出来ればこんなところで解答者を求めたりしません><
役にも立たないアドバイスはいりません
解答者やめろカス
0976デフォルトの名無しさん
2008/09/28(日) 20:43:12そのサンプルお願いします
みんなそこまでは言うんですけど
湯ばかりでサンプルないんですよ
>>973
あなたと違って書けないから相談してるんだよ
んであんたは書けるの???
また口先だけなら解答やめてください
はっきし言ってじゃまです
0977デフォルトの名無しさん
2008/09/28(日) 20:43:50役に立つ回答する人はほとんどいないんですね。
期待して損しました。
二度ときません。
0978デフォルトの名無しさん
2008/09/28(日) 20:44:19自分の考え方がわかっているような偽者さん出現してるwww
0979デフォルトの名無しさん
2008/09/28(日) 20:45:130980デフォルトの名無しさん
2008/09/28(日) 20:46:290981デフォルトの名無しさん
2008/09/28(日) 20:48:440982デフォルトの名無しさん
2008/09/28(日) 20:48:570983デフォルトの名無しさん
2008/09/28(日) 20:48:58その解説本なんだけど
はじめの1歩がわかんない
どーやったらリクエストヘッダを確認できるのか?
全くわかんないので工夫のしようもないってのが現状
あなたリクエストヘッダの確認できますか?
理屈ではなくサンプルください
0984デフォルトの名無しさん
2008/09/28(日) 20:50:40まずできてるとこまでのソースを晒してくれ
0985デフォルトの名無しさん
2008/09/28(日) 20:50:49くだらなくはないですよ
日本にプログラムの解説本が何千冊とあるでしょうが
リクエストヘッダの確認は解説されていません
0986デフォルトの名無しさん
2008/09/28(日) 20:51:17なにやりたいのか正直わかんないけど
0987デフォルトの名無しさん
2008/09/28(日) 20:51:22その手にはのりませんよ
あなた解答しなくていいです
0988デフォルトの名無しさん
2008/09/28(日) 20:51:44取得した後はネットワークプログラミングとは関係ないだろ。送信以外。
0989デフォルトの名無しさん
2008/09/28(日) 20:52:030990デフォルトの名無しさん
2008/09/28(日) 20:53:06理屈はいいです
「こうすればできる」とか屁理屈の解答はいりませんのでよろしく
0991デフォルトの名無しさん
2008/09/28(日) 20:54:22えっ
>>988さまはヘッダ確認できるんですか
是非サンプルおねがいします
解説本に騙され続けてフラフラですー
0992デフォルトの名無しさん
2008/09/28(日) 20:57:47いくら探してもみあたりません
よろしくお願いします
0993デフォルトの名無しさん
2008/09/28(日) 20:57:49マトモな人はいないの?
0994デフォルトの名無しさん
2008/09/28(日) 20:58:20自分の送信するリクエストを取得する方なんか法知らなんからヘッダ確認なんてできん
取得さえできればあとは多分できるけど
0995デフォルトの名無しさん
2008/09/28(日) 20:58:570996デフォルトの名無しさん
2008/09/28(日) 21:00:470997デフォルトの名無しさん
2008/09/28(日) 21:01:230998デフォルトの名無しさん
2008/09/28(日) 21:01:590999デフォルトの名無しさん
2008/09/28(日) 21:02:13ウザいです
1000デフォルトの名無しさん
2008/09/28(日) 21:02:22>>995
なにそれ
リクエストヘッダは確認できないんですか?
自分がどのようなリファラやクッキー、その他を送信しているのか確認して
訂正したり保存したりしたいです
取得ってわかんないです
どこから取得するの?
Windows???
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。