C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 通信バッファのクリア


(過去ログ 38 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■19979 / inTopicNo.1)  通信バッファのクリア
  
□投稿者/ tanaka (87回)-(2008/06/03(Tue) 15:05:11)

分類:[C#] 

TCPのソケット通信で、シーケンス的にこちらから送信したデータに
対して結果を受信する処理なのですが、何らかの要因で受信データが
2回以上きた場合、次回こちらから送信した後の受信処理で今回の結果
ではなく前回の結果を受信することになるので不整合が起きるはずなので、
送信処理の前に通信データクリアをしたいのですがこの場合どのようにすれば
いいのでしょうか。

例)
//ここで通信データをクリアしたい
send();
recv(); //タイムアウト処理あり

引用返信 編集キー/
■19981 / inTopicNo.2)  Re[1]: 通信バッファのクリア
□投稿者/ επιστημη (1053回)-(2008/06/03(Tue) 15:19:52)
επιστημη さんの Web サイト
> TCPのソケット通信で、シーケンス的にこちらから送信したデータに
> 対して結果を受信する処理なのですが、

> 何らかの要因で受信データが2回以上きた場合、

これは如何なる意味ですか?
送出側は一度しか送っていないにも関わらず複数回受信されるってこと?
そのとき考えられる原因は?
それとも送出側が実際複数回送ったのですか?
そのとき考えられる原因は?
※「起こり得ないこと」を心配してるんじゃありませんよね?

> 次回こちらから送信した後の受信処理で今回の結果
> ではなく前回の結果を受信することになるので不整合が起きるはずなので、
> 送信処理の前に通信データクリアをしたいのですがこの場合どのようにすれば
> いいのでしょうか。

どうすればとは何に対して?

不整合が起こったことを検出する方法?
データクリアする方法?
ほかのなにか?

不整合の検出であれば、たとえば:
各メッセージに通し番号を打っておきます。
受信側は受け取ったメッセージの通し番号と最後に受け取ったそれとを比較し、
同じなら重複が起こったことが検出できます。

引用返信 編集キー/
■19982 / inTopicNo.3)  Re[2]: 通信バッファのクリア
□投稿者/ tanaka (88回)-(2008/06/03(Tue) 15:30:31)
No19981 (επιστημη さん) に返信
>>TCPのソケット通信で、シーケンス的にこちらから送信したデータに
>>対して結果を受信する処理なのですが、
>
>>何らかの要因で受信データが2回以上きた場合、
>
> これは如何なる意味ですか?
> 送出側は一度しか送っていないにも関わらず複数回受信されるってこと?
> そのとき考えられる原因は?
> それとも送出側が実際複数回送ったのですか?
> そのとき考えられる原因は?
> ※「起こり得ないこと」を心配してるんじゃありませんよね?
現状解っているシーケンス通りであれば心配する必要は無いのですが、
これは主に何らかの調整不具合などで相手側が複数データを送信した場合です。

>>次回こちらから送信した後の受信処理で今回の結果
>>ではなく前回の結果を受信することになるので不整合が起きるはずなので、
>>送信処理の前に通信データクリアをしたいのですがこの場合どのようにすれば
>>いいのでしょうか。
>
> どうすればとは何に対して?
>
> 不整合が起こったことを検出する方法?
> データクリアする方法?
> ほかのなにか?
>
> 不整合の検出であれば、たとえば:
> 各メッセージに通し番号を打っておきます。
> 受信側は受け取ったメッセージの通し番号と最後に受け取ったそれとを比較し、
> 同じなら重複が起こったことが検出できます。
データクリアする方法を教えて頂きたいと思います。
また不整合の検出処理は現処理では不要なので、送信する前にすでに受信データが
ある場合はそれを破棄してそれから送信→受信の流れがしたいです。


引用返信 編集キー/
■19983 / inTopicNo.4)  Re[3]: 通信バッファのクリア
□投稿者/ επιστημη (1054回)-(2008/06/03(Tue) 15:36:07)
επιστημη さんの Web サイト
> 送信する前にすでに受信データがある場合はそれを破棄して

送信に先立ち、とにかく空になるまで読み捨てるだけじゃないんですか?

引用返信 編集キー/
■19984 / inTopicNo.5)  Re[4]: 通信バッファのクリア
□投稿者/ tanaka (89回)-(2008/06/03(Tue) 15:40:47)
No19983 (επιστημη さん) に返信
>>送信する前にすでに受信データがある場合はそれを破棄して
>
> 送信に先立ち、とにかく空になるまで読み捨てるだけじゃないんですか?
やはりその方法しかないですかね。
何かメッソドがあればいいのですが。
引用返信 編集キー/
■19985 / inTopicNo.6)  Re[5]: 通信バッファのクリア
□投稿者/ tanaka (90回)-(2008/06/03(Tue) 15:41:19)
No19984 (tanaka さん) に返信
> ■No19983 (επιστημη さん) に返信
> >>送信する前にすでに受信データがある場合はそれを破棄して
>>
>>送信に先立ち、とにかく空になるまで読み捨てるだけじゃないんですか?
> やはりその方法しかないですかね。
> 何かメッソドがあればいいのですが。
しばらく検証してみます。

引用返信 編集キー/
■19986 / inTopicNo.7)  Re[5]: 通信バッファのクリア
□投稿者/ επιστημη (1055回)-(2008/06/03(Tue) 15:49:39)
επιστημη さんの Web サイト
>>送信に先立ち、とにかく空になるまで読み捨てるだけじゃないんですか?
> やはりその方法しかないですかね。

なんすかその"後だしジャンケン"は。
考えてたんならやってみればいいやんか。
あるいは"送信に先立って読み捨てようと思いますがいかがでしょうか"くらい書かないかフツー?

ヒトに教わったやつじゃなきゃ安心できんてことですか?

引用返信 編集キー/
■19988 / inTopicNo.8)  Re[6]: 通信バッファのクリア
□投稿者/ tanaka (91回)-(2008/06/03(Tue) 15:59:07)
No19986 (επιστημη さん) に返信
> >>送信に先立ち、とにかく空になるまで読み捨てるだけじゃないんですか?
>>やはりその方法しかないですかね。
>
> なんすかその"後だしジャンケン"は。
> 考えてたんならやってみればいいやんか。
> あるいは"送信に先立って読み捨てようと思いますがいかがでしょうか"くらい書かないかフツー?
>
> ヒトに教わったやつじゃなきゃ安心できんてことですか?
不快な思いをさせてしまい申し訳ありません。
最初から考えいたわけではなくご提案されるまでは全く考慮していませんでした。

現状の処理方法を変えずにメソッドとかあるいは簡単な方法をsend()の前に入れて
対処したいと考えていて指摘されてなるほどなと思ったのです。

大変申し訳ありませんでした。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -