- 1 名前:ftp-data mailto:sage [2007/08/07(火) 01:47:35 ]
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port19 pc10.2ch.net/test/read.cgi/tech/1159692799/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 792 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:08:22 ]
- > CServerSock SvSock[2];
> SvSock.m_Sock[cnt++] = socket; // B及びCのソケットを割り当て 普通、コンパイルエラーになるだろ。 (そもそも、private なメンバ変数 m_Sock にアクセスできないし...。) C++ じゃない、俺の知らない言語かも知れんが。
- 793 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:09:06 ]
- あれ?
それってひょっとして、デバッガでブレークして確認したとかいわないよな?
- 794 名前:788 mailto:sage [2008/01/31(木) 22:12:51 ]
- >>789 >>790
そうですよね。 基本的にBが送信A処理、Cが送信A処理の順番だときっちりBのスレッド、Cのスレッドで処理が行われるので・・・。 >>792 すいません。publicメンバです。書き忘れました。 >>793 ブレークとm_Sockの番号等で確認しましたが・・・。
- 795 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:18:33 ]
- ネタだろこいつら
かまってほしいだけだよ
- 796 名前:788 mailto:sage [2008/01/31(木) 22:59:26 ]
- >>795
残念ながらネタではないんですよ。 とりあえず、同一ポートでacceptした個々のSocketで送受信は問題なさそうなので、他でアホなことしてないかもう一度見直してみます。 すみません&ありがとうございました。
- 797 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:16:34 ]
- AcceptFuncのwhileでSvSock.m_Sock[cnt++] = socketのようにせず、
CServerSockのコンストラクタでsocketを受け取るようにしてみては? Socketの受け渡しが面倒だけど、オレはそうやって処理してる。
- 798 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:31:49 ]
- >>794
> すいません。publicメンバです。書き忘れました。 public でも、 > SvSock.m_Sock[cnt++] = socket; // B及びCのソケットを割り当て は通らんだろ。(SvSock[cnt++].m_Sock = socket; ならわかるが。) ネタじゃないなら、情報細切れに出さずに、ソースをそのまま載せるなり、 どっかにアップしろよ。
- 799 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 10:56:19 ]
- なにをもってごっちゃと判断してるの?
- 800 名前:781 mailto:sage [2008/02/01(金) 10:59:33 ]
- >>782,785
なるほど、大変参考になりました。 ついでに、もう一つ質問・・ クライアント側で TIME-WAIT を発生させないようにする為、サーバー側は待ちうけ用の listen ソケットを用意し、クライアント側から切断する時はサーバーに切断用の制御電文 を送信し、必ずサーバー側から Close を発行するのは大丈夫でしょうか?
- 801 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:12:48 ]
- 待ちうけ用のlistenソケットを用意って、すでにあるacceptしてるやつとは別に?なんのために?
- 802 名前:781 mailto:801 [2008/02/01(金) 12:37:36 ]
- えーと、listen で待つソケットと accept したソケットが同一の場合の実装もあると考えて、そうではないという意味で書きました。
- 803 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:53:21 ]
- そんなのあるのか?
- 804 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:23:08 ]
- 今、UPnPを使いポートマッピングを行うプログラムを組んでいるんですが、
はじめはポートマッピングに成功するんですが、突然成功しなくなります。 それについて、どういった理由が挙げられるでしょうか。 どなたかご教授下さい。
- 805 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:32:20 ]
- >>791
>SvSock.m_Sock[cnt++] = socket; // B及びCのソケットを割り当て cntはローカル変数なんだし、acceptされるたびに'SvSock.m_Sock[1]' になるのでは?
- 806 名前:デフォルトの名無しさん mailto:age [2008/02/01(金) 18:57:24 ]
- あげ
- 807 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:08:31 ]
- ローカルだけど、while(1)でその関数抜けないならずっと生きてるんじゃないの。
- 808 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:18:41 ]
- Winsockでhtmlファイルを1024パイトずつ取得し、
calloc等により動的に記憶域を確保 そこに全て入れてからURLを抽出する、 という方法を考えているんですが、 何か、良い方法はありますか?
- 809 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:21:17 ]
- 良い方法、というのは、たとえば、Perlでも使っとけ、みたいな話?
- 810 名前:デフォルトの名無しさん mailto:age [2008/02/01(金) 19:22:22 ]
- >>807
確かによく見たらbreak処理が無いな。 え。無限ループって事は配列オーバーしないかい? あと、Acceptfunc()が呼ばれるタイミングもいまいちわかんないね。FD_ACCEPT直下?
- 811 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:27:03 ]
- それもスレッドから呼ばれるんじゃないの?知らないけど。
Main,Accept, 送受信スレッド連中、みたいな。
- 812 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:36:32 ]
- >>809
効率の良い方法、です。
- 813 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:37:58 ]
- マルチスレッド使ったことなす;・ω・)
ポートマッピングに詳しい人。 >>804をたのみます。
- 814 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:16:33 ]
- >>800
サーバからCloseを発行して、クライアント側ではrecvで0が返ったことを 確認してcloseすればクライアントはTIME_WAITには入らないから大丈夫。 ただし正常系はそれでいいが、例えばサーバが無応答になった場合など、 クライアントから切断せざるをえない場合も発生するよ。 切断用の電文は、>>801のいうように切断したい接続上でやりとりすれば いいと俺も思う。バイナリを大量に転送中で中断が難しいような場合だと、 転送用の接続と、コマンド用の接続を分けるというのも確かにやるけど(FTPみたいに)。
- 815 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:36:51 ]
- >>804
理由はあまりに多すぎて、いちいちあげる気にならない。 パケットログか、ソースをアップしてくれ。
- 816 名前:デフォルトの名無しさん mailto:age [2008/02/01(金) 21:54:53 ]
- >>815
プログラムはほぼ www.bosuke.mine.nu/neta/upnp.shtml を参考にしました。ってか、ここのサンプルでもあけられないです。 処理ではWANIPを取得する際に失敗するようです。 ちなみに、二重ルータなんですが、ルータのIPは192.168.xxx.1ではなかったです。 '1'の部分が百いくつだったはず…ここでミスってるんですかね? ソースはサンプルプログラムのinvoke関数です。 XMLとかわかんないんであまりうまく調べられて無いような感じです。
- 817 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:19:14 ]
- >>816
>'1'の部分が百いくつだったはず…ここでミスってるんですかね? UPnPは、IPアドレス情報も含めてプロトコル上でやり取りして、自動設定してくれる。 だから、ここは関係ない(はず)。
- 818 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:22:00 ]
- >>816
とりあえずinvoke関数の中のどこでエラーが返ってるかログしこむなりして、 調べれ。
- 819 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:22:05 ]
- 二重ルータ?
- 820 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:36:01 ]
- >>817
なるほど >>819 モデム(ルータ機能付き)>ルータ>★自分&他複数PC ________________>ルータ>複数PC こんな感じです。 とりあえず、環境と離れるんで invoke関数の調査は週明けにでもやります。
- 821 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:39:37 ]
- UPnPはエラーならエラーコードがわかるはず
- 822 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:49:50 ]
- >>820
ルータ(1)>ルータ(2)>設定を実行するPC という環境であるとして、設定したいルータが「ルータ(1)」ならそもそも できない可能性がある。UPnPはマルチキャストを使ってるのだが、 ルータ(2)がマルチキャストルータでないと、PCで発行した マルチキャストパケットは、ルータ(2)を超えられない。 で、個人用の安価なルータがマルチキャストルータということは まずない。 ルータ(2)がマルチキャストルータで、マルチキャストパケットが ルータ(1)まで届いたとしても、同一ネットワークからじゃないと UPnPのSOAPリクエストにたいして応答を返さないようなルータっ ていうのは存在する。 でも、「出来るときと、出来ないときがある。」って書いてあるから、 ちがうのかもだが。
- 823 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:52:52 ]
- あーそれからルータをこえてマルチキャストパケットを届けたいなら、
IGMPメッセージを発行する必要がある。これはUDPソケットに対して、 IGMP_JOINなどをAPI経由で発行する。 やってるかもしれんが。
- 824 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:53:50 ]
- マルチキャストはルータ発見時しか使わないから、
そこをたとえば手動で設定すれば良いんじゃないかな。 ルータ1と2で同じポートを開けないとイケナイのがアレだけど。
- 825 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:03:41 ]
- >>824
おまえアタマイイナ
- 826 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:05:02 ]
- でもなーんか、UPnP使う意味がない気がしてきたな。。。w
- 827 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:09:02 ]
- 余談だが、これ気をつけろよ。
「Flashを悪用してUPnP経由でルータの設定を変更する攻撃は、これまでに報告 されたルータ攻撃方法に比べて何百倍も危険性が高いとSymantec。」 www.itmedia.co.jp/news/articles/0801/22/news075.html
- 828 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:09:07 ]
- recvで1024ずつ一つのhtmlファイルを取得する場合
htmlファイル合計バイト分の記憶域を確保するためにはどうすればいいですかね?
- 829 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:20:50 ]
- 最初に1024バイトのバッファを用意してそこに書いていって、足りなくなったら
reallocすればいいやん。
- 830 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:48:07 ]
- C++なもので
- 831 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:57:16 ]
- >>827
それは 1 UPnPでルーターに穴をあける。 2 ルーターのWEB/IFをWAN側からアクセスする。 って事でいいのか?
- 832 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:08:07 ]
- >>830
resizeとかreserveとか
- 833 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:11:19 ]
- >>831
DNSサーバアドレス書き換えて、フィッシングサイトにとばすとかもできるんじゃね。
- 834 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:20:23 ]
- >>833
残念ながら、UPnPにはDNSサーバーを設定するという機能はないのだよ。
- 835 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:43:42 ]
- >>831ができれば書き換えられるんじゃね。
- 836 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:54:58 ]
- char *buf;
buf = (char *)calloc(1024,sizeof(char)); で記憶域を確保して、 確保した領域の大きさを変更する場合をどのように判断したらよいですかね?
- 837 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:01:21 ]
- >>836
ネットワークのスレじゃなくて、プログラミング初心者のとこで聞いてこいよ。
- 838 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:01:38 ]
- 日本語でお願いします。
- 839 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:05:36 ]
- >>836
recvの返り値で読み込んだバイト数が分かるから、whileやforでカウントすれば?
- 840 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:42:55 ]
- まぁreallocとか時間かかるから、ある程度大きいバイト数を1ブロックとして、
ブロックごとで領域を確保していった方がいいと思う。いちいちrecvの返り値分だけreallocしていくよりはね。 HTMLファイルだけが対象ならアレだけど・・・。
- 841 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 10:39:49 ]
- ブロックごとに領域を確保していくっていうのがよくわかりません。
- 842 名前:デフォルトの名無しさん mailto:age [2008/02/03(日) 12:02:17 ]
- age
- 843 名前:デフォルトの名無しさん mailto:age [2008/02/03(日) 12:10:08 ]
- ガジェットの作り方?
www.nifty.com/labs/gadget/
- 844 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 12:42:26 ]
- ブロックごとで領域を確保していく
コードで示して下さるとありがたいのですが、 駄目ですかね?
- 845 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:00:48 ]
- Un*xのsendfileやWindowsのTransmitFileって効果が大きいですか?
boost::asio使おうと思ったんだけどsocketの完全なラッパーなのでsendfileが使えなくてどうしようかなと
- 846 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:04:55 ]
- 使われる環境で全然違うから、評価環境つくって測定しなきゃ意味ねー。
- 847 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:04:06 ]
- Webダウンローダーの仕組みってどうなってるんですか?
htmlやjpg等の拡張子判別とか、html内のリンク抽出とか 重複I/O等使っているんでしょうか?
- 848 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:39:51 ]
- 一行目と二行目の違いに愕然とした
- 849 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:25:39 ]
- もしかして wget の中身を知りたいの?
- 850 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:09:30 ]
- ちまちま数バイトずつ確保していくよりも、
ドーンと確保して足りなくなったらまたドーンと確保するって事だろ。 コードを示してもらうほどでもない。あと、スレチになりつつある。
- 851 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:19:01 ]
- >>844
ブロックごとでなくても良いから、一回自分で考えて作ってみたら どうだろう?
- 852 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:15:39 ]
- >>851 に一票
正解を探し回るより、とりあえず動くものを作る方がいろいろ理解できるよ。 そもそも、最近のマシンだと、ちまちまメモリー確保してもそれなりに動くし。
- 853 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:35:23 ]
- てかメモリ確保くらいならサンプルコード腐るほど落ちてる。
- 854 名前:デフォルトの名無しさん [2008/02/04(月) 21:44:58 ]
- こんにちは。
winsockでネットゲームを作っているのですが、 サーバーを介さないで4人のクライアント同士で通信し合いたい(peer to peer)場合、 各々が相手3人のクライアントのソケットを持ってる必要があるのですが、 どうやってクライアント側のソケットを取得するのでしょうか? (ホストのは取得出来ます)
- 855 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:14:19 ]
- TCP?UDP?
- 856 名前:デフォルトの名無しさん [2008/02/04(月) 22:27:53 ]
- TCPです。
単純に4人共がlistenして全員が相手3人にconectし合えばいいのかな と思ったりしましたが、もっと良い方法はありますか?
- 857 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:32:49 ]
- 普通のご家庭にはルータがあってNATの向こうにPCがあるもんだが
その環境だと互いにtcpでつなぐのはしんどいぞ どういうのを想定?
- 858 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:48:37 ]
- >>856
別にそれでいいんじゃない? >>857 ネットゲーム作ろうかと言う奴なんだから、バーチャルサーバとか ぐらいは知ってるんじゃないかな。
- 859 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:56:10 ]
- バーチャルサーバ?
- 860 名前:854 [2008/02/04(月) 23:15:42 ]
- マッチングサーバーを作ってそこで4人組み合わせて後はpeer to peerでと考えています。
接続時に指定するポート番号っていうのはホスト側のアプリケーション識別番号で クライアント側は自動的に空いてるポートが使用される。。。 という考え方で合っていますか? 4人共がlistenして全員が相手3人にconectし合う場合、 4人共がポート2000の同一番号でlistenしてても問題ないでしょうか?
- 861 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:22:38 ]
- グダグダ考えずに一台をサーバにすればいいじゃないか
- 862 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:05:32 ]
- >>860
問題ない。 て言うか、まずは二台でお互いにコネクション張って実験してみな。
- 863 名前:854 [2008/02/05(火) 00:15:44 ]
- >>861
その通りなのですが、何故かそういう仕様になっているのです。 何のメリットがあるのか全くもって分かりません(泣 >>862 はい、やってみます。ありがとうございます。
- 864 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:21:25 ]
- 1時間で仕様が決まったのかwww
- 865 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:29:37 ]
- 仕様を作った馬鹿に質問するなり文句言えばいいのに
- 866 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:23:39 ]
- ハイブリッドP2Pって事か。
NAT越えが出来なくて泣いちゃいそうだな。 かくいう俺も出来ないわけだが。
- 867 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:34:15 ]
- >>863
リアルタイム系のゲームなら、いちいちサーバーを介してデータの やり取りなんかしてられないので、P2P は別におかしくない。 まあ、それなら TCP と言うのがちょっと疑問だが。
- 868 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 03:07:14 ]
- P2Pだと同期制御が課題になってくるけどな
- 869 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:20:11 ]
- TCPってダメなの?
俺は、UDPは送信データの欠如があるとかであんまり信用して無いんだが。
- 870 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:35:35 ]
- 両方つかえばいいんじゃないか?
UDP -> リアルタイムに反映したいもの ( キー入力、キャラクターの移動ベクトル ) TCP -> 正確にやりとりしたいもの ( 同期取るPCからのデータとか )
- 871 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:41:26 ]
- >>869
TCPは信用しているということなら、 TCPスタックは信用しているって事なので、 アプリの要求から観て、信頼できるかどうかは、 中間層にかかっているのでは? だからUDPで書いても、アプリに必要なレベルの信頼は保てる。
- 872 名前:デフォルトの名無しさん [2008/02/07(木) 13:33:44 ]
- VS2005で
Winsockを使っていてSD-BOTHが定義されていない、と出るのですが、 何でですかね?
- 873 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:36:01 ]
- SD-BOTHが定義されていないから
- 874 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:48:14 ]
- >>873
どうしたら解決出来ますかね?
- 875 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:39:42 ]
- SD-BOTHが定義されていない、と出ないようにする
- 876 名前:デフォルトの名無しさん [2008/02/07(木) 15:41:01 ]
- ソケットを閉じるときに
いきなりclosesocketでも問題はないが、 shutdown(socket,SD_BOTH); とすることがある。 これは送信、受信ともに通信を切断する意味だったと思う。
- 877 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:22:53 ]
- shutdown(s, SHUT_WR);
- 878 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:36:53 ]
- >>814
いろいろと、ありがとうございます。 切断したい時はサーバーからCloseしてもらえば問題なく、また 相手がいなくなった時に自分から Close する場合は 1.相手応答ないので Close。 2.TIME_WAIT 状態になる。 3.TIME_WAIT 満了前に再接続する 4.local port +1 して(空きポートで)即 Connect する。 5.相手いないので Connect 失敗でエラーが返る。 6.エラーなので Close する。 と、接続状態から切断の遷移にならないので、TIME_WAITにはなりませんでした。 ということで、TIME_WAIT状態のソケットが溢れるとしたら、それは、 接続後に自分から切断しまた接続する動作をしてるって事ですね。
- 879 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:20:46 ]
- >>878
相手が存在しない場合、closeの発行ではFINの再送状態になる わけだからTIME_WAIT状態にはならない。だがサーバがコマンド に応答しない場合でも、FINに対しては(recvで0が返ったら) close処理を行う場合、クライアントはTIME_WAIT状態に入る。 そこら辺まで行くと、ちゃんと書籍を横においてTCPの挙動理解 するようにしながら、プログラム造ったほうがいいと思うよ。 リチャード・スティーブンスのTCP/IPvol1一冊あればいい。
- 880 名前: ◆TCP/IPzk8E [2008/02/08(金) 23:44:57 ]
- test
- 881 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:20:13 ]
- 素晴らしい
- 882 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:09:17 ]
- ほほう
- 883 名前:デフォルトの名無しさん [2008/02/10(日) 07:51:52 ]
- 質問です。
オンラインのアクションゲームを作りたいのですが、 プレイヤー間の同期を取る方法について詳しく知りたいです。
- 884 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:30:24 ]
- 同期なんか取りません
ネットワークの遅延は避けられません いかに結果の辻褄を合わせて上手く誤魔化すかに注力した方が良いかと思います
- 885 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:29:09 ]
- >>883
相対時間ではなく、絶対時間で動作させる。
- 886 名前:デフォルトの名無しさん [2008/02/11(月) 00:25:12 ]
- >>884
推測航法?とかいうので移動を予測するとかいうのは聞いたことがあります。 >>885 クライアント側から「時刻XXXまでに○○へ移動」みたいなものを送る感じでしょうか。 時刻をサーバとクライアントで同期させる必要がありそうですね。 リアルタイム性のあるゲームに利用できるかもいまいちわかりませんが。 というか、クライアント→サーバ間でどのくらい時間かかるかためしたことありませんでした。。 pingとかではかってみます。
- 887 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:10:55 ]
- >>886
最終的にクライアントに戻すんだからクライアント→サーバー→クライアントの時間を考えた方が
- 888 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:15:24 ]
- 一定時間ごとにサーバがスナップショット送って同期をとるのが基本
LAN限定にするならそうシビアになることもないけどな ちなみに演算はサーバ側で行うのが基本 同期とりやすいし、不正もある程度は防げる
- 889 名前:デフォルトの名無しさん [2008/02/11(月) 13:18:35 ]
- 失礼します。
現在、クライアント←→サーバー型のチャットを作ろうとしています。 ですがネットワークプログラミング自体が今回初めてで、 猫でもわかる〜の本を読んでいるのですが何から手をつければいいか分かりません。 どなたか基本的な作り方(?)、もしくは参考になるサイトをご存知の方がいましたら返答お願いいたします。 ちなみに言語はCで考えていますが、C++の方が比較的分かりやすい等あれば変更する予定です。
- 890 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:51:41 ]
- >>889
ソケットプログラミングでググレ ほとんどは題材がチャットC/S 関数がわからなかったら関数名でググレ
- 891 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:53:15 ]
- >>889
チャットくらいなら、CとかじゃなくてPerl,Ruby,Pythonのようなスクリプト言語 がいいよ。 プログラムの初心者で、オブジェクト指向になじみがなければ、Perl使って みるといいんじゃないかな。ブラウザ使ってのチャットならPerlでCGIを作る 方法を解説した本が一冊あったほうがいいんじゃない。
- 892 名前:デフォルトの名無しさん [2008/02/11(月) 14:01:57 ]
- お早いレスサンクスです
>>890 すいません、素でググるの忘れてました・・・本当に大抵がチャットC/Sのものばかりのようで参考になります。 感謝です >>891 最終的には3Dのネトゲを作ろうとしているので、Perlなんかで作ってしまうと色々問題が。 そのあたりの事もあるので、C言語で作ろうとしてまして・・・。
|

|