[
新規
] - [
ツリー
] - [
スレッド
] [
未解決
] [
緊急
] - [
優先
] - [
検索
] - [
なでしこTOP
]
「なでしこv1」開発掲示板
なでしこv1のバグや要望を書き込む掲示板
→
書き込み(
#2814
)を編集する:
名前
タイトル
本文
【症状】TCPで送信したデータがよく欠損する 【バージョン】1.562 windows10 ゲームに通信対戦モードをつけました。 nakonet.nakoを取込し、TCPサーバー、TCPクライアントを使用しています。 (サーバーとはTCPサーバー。クライアントとはTCPクライアント) 送信データは主にBASE64の文字列です。 ゲームはターン制で、ターン終了時に行動をまとめてBASE64にして送ります。 1回で1000字~2000字くらいになります。 これが、けっこうな確率で欠損して届きます。 データが途中で切れているようで、後半部分がなくなっています。 データによる再現性はなく、同じデータを再度送ってもらうと欠損なしで届くこともあります。 受け取ったデータをBASE64デコードしたものをログに残しているのですが、1055文字目の一定文字数で切れていました。 BASE64デコード前は1.3倍くらいの1440バイトほどだと思われます。 ちょうどパケット分割がどうとかいうサイズ(知識は聞きかじり)らへんだと思います。 なでしこの更新履歴に「2016/09/08 version 1.562 -- nakonet.dllのライブラリIndy10を最新版に更新。」とありますが nakonet.dllに問題はないでしょうか。 それとも手探りでプログラムした受信データの処理がよくないのでしょうか。 それともTCPでの送受信ってこういうものなんでしょうか。 送受信部分のプログラムはおおむね下記のような雰囲気です。 #----------------------------------------------------------------------- //BASE64エンコードして開始と終端記号をつける ●送信(txt) base64とは変数 base64 = txtをBASE64エンコード base64 = 「<{base64}>」 base64をクライアントで送信 サーバーの受信した時は~サーバーの受信データをサーバーで全送信 受信データとは変数 クライアントの受信した時は~ 受信データ=受信データ & (クライアントで受信) //ためておく //ゲームループから呼び出す(秒間20回ほど) ●受信処理 dataとは変数 data = 受信データ 受信データ=「」//ローカル変数に移して速やかに消す base64とは変数 txtとは変数 (data<>「」)でループ base64 = dataの「<」から「>」まで範囲切り取る //「>」がない場合、最後まで切り取る。 //欠損している場合、「>」がない txt=base64をBASE64デコード //txtを見てゲームに反映 #-----------------------------------------------------------------------
優先度
低
中
高
緊急
状態
未処理
詳細求む!
調査中
議論中
修正中
確認待ち
再修正依頼
解決
---
重複
---
アイデア
感想
告知
感謝
確認キー
👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。
編集キー
編集時に使うキーを入力(省略可能)
添付ファイル
🎁
ファイルを選択...
画像ファイル(最大300KB)を添付可能