トップページ > 過去ログ > 記事閲覧
通信について
名前:にゃん 日時: 2013/02/07 19:16

基本的な部分の質問になってしまいそうですが、現在ネットゲームを作ろうとしています。 「命令,引数,引数」といったデータを投げて通信しています。 接続が合った場合、接続中のユーザーを返すといった形をとっていますが、うまく行きません。 「ユーザー追加命令,名前,席番」といったデータを接続人数分投げていますが、一人分しかユーザーは追加されません。すでにログインしてるクライアントには入ってきた人のユーザー情報は、ちゃんと届いて表示されます。どのような処理が適切でしょうか? NetWorkRecv()>","を読み取ってフォーマットに当てはめる>switchで命令部分を分岐>処理 といった流れです。 それとも、1席ずつ埋まってるかを問い合わせて名前を返させるとかのほうが良いですか? よろしくお願いします。

Page: 1 |

Re: 通信について ( No.1 )
名前:Will 日時:2013/02/08 08:53

この文章からだけでは不具合の原因が設計の問題なのか、ロジックの不具合なのか判断出来ません。 NetWorkRecvで受信した電文が、期待している内容なのでしょうか?
Re: 通信について ( No.2 )
名前:にゃん 日時:2013/02/08 13:11

ごめんなさい、解決しました。 NetWorkRecv()したデータが、命令,引数,引数,命令..... と大量にたまってたのを、当てはめる段階でどっかに消失してたみたいです。 NetWorkRecv()で取れるデータは完成してる物だと思って大丈夫なんですか? 「命令,引数,引数」これが、「命令,引数」これしか来ないとか
Re: 通信について ( No.3 )
名前:Will 日時:2013/02/08 14:50

送信側が NetWorkSend( NetHandle , 命令,引数,引数 , 長さ ) ; というワンセットで送信しているのであれば、受信側でも「命令,引数,引数」と受信できます。 送信側が NetWorkSend( NetHandle , 命令 , 長さ ) ; NetWorkSend( NetHandle , 引数 , 長さ ) ; NetWorkSend( NetHandle , 引数 , 長さ ) ; としているのであれば、受信タイミングによって「命令」だけとか「命令,引数」となることはありえます。 電文が完成してから受信したいのであれば、GetNetWorkDataLengthで期待する長さになるまで待つ必要があります。
Re: 通信について ( No.4 )
名前:にゃん(解決) 日時:2013/02/08 21:47

送信する側でまとめてあれば、大丈夫なんですね。 安心しました。 ありがとうございました。

Page: 1 |