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

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

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

Re[2]: C# STX ETXの取得(検索)方法


(過去ログ 102 を表示中)

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

■61197 / inTopicNo.1)  C# STX ETXの取得(検索)方法
  
□投稿者/ orihikin (10回)-(2011/08/05(Fri) 10:36:52)

分類:[C#] 

まったくの初心者です
VS2010C#でソケット通信のプログラムを作成しております
受信したデータのSTXとETXを取得しデータのみを取り出そうと思っております
いろいろネットで検索したのですがSTX・ETXの取得(検索)方法が分かりません (char)?
STX・ETXの取得(検索)方法をお教えください
ご教授の程よろしくお願いします
※変な質問でしたらすいません
引用返信 編集キー/
■61199 / inTopicNo.2)  Re[1]: C# STX ETXの取得(検索)方法
□投稿者/ 774RR (607回)-(2011/08/05(Fri) 10:48:40)
socket といってもいろいろあるが TCP かな?
TCP はストリーム(=プログラマ的に見ると単純にデータのみが流れる通信)なので、
*通信手順として STX/ETX を使うようなプロトコルを採用している*のであれば STX/ETX が出るし
そうでないのであれば、そもそも Start of Text / End of Text など不必要。

本当に STX/ETX が必要なのかどうか、その辺の「案件(要求)」レベルで要検討
引用返信 編集キー/
■61200 / inTopicNo.3)  Re[1]: C# STX ETXの取得(検索)方法
□投稿者/ shu (914回)-(2011/08/05(Fri) 10:49:15)
No61197 (orihikin さん) に返信
> まったくの初心者です
> VS2010C#でソケット通信のプログラムを作成しております
> 受信したデータのSTXとETXを取得しデータのみを取り出そうと思っております
> いろいろネットで検索したのですがSTX・ETXの取得(検索)方法が分かりません (char)?
> STX・ETXの取得(検索)方法をお教えください
> ご教授の程よろしくお願いします
> ※変な質問でしたらすいません
STX, ETXがなんだか分かっていますか?それぞれ1byteの制御コードで"STX","ETX"という文字列ではありませんよ?

Binary読みしてSTX(0x02),ETX(0x03)のコードを検知すれば良いです。
引用返信 編集キー/
■61206 / inTopicNo.4)  Re[2]: C# STX ETXの取得(検索)方法
□投稿者/ 逆運の覇者 (45回)-(2011/08/05(Fri) 11:51:07)
私もjpeg圧縮アルゴリズムの本を読んでいた当時、STX,ETXがわからなかったなあ。
送るデータはbyte列に変換して送信するのでデータはcharではなく、byte[] です。
当然、受け側もbyte[] で受信します。
しかし、受信した後でEncoding.default.GetString()でstringに変換して、
str.IndexOf((char)0x02) とかできますよ。


TCP通信ならファイルを扱うのとそう変わりはありません。
なにせ、ファイルを扱うFileStreamと同じようにNetworkStreamが用意されていて、
親クラスのStreamを継承することで共通化しているのですから。

TCPプロトコルは送受信の安全性を確保するプロトコルですから、
(データの欠損があればそのパケットの再送をするなど)
送受信の確実性のために、独自プロトコルにSTX,ETXを用意するのなら、STX,ETXは不要です。
もしそういう目的でやるのなら、チェックサムぐらいのことはするべきでしょう。
引用返信 編集キー/
■61207 / inTopicNo.5)  Re[2]: C# STX ETXの取得(検索)方法
□投稿者/ orihikin (11回)-(2011/08/05(Fri) 11:57:28)
774RRさんご回答有難うございます
> socket といってもいろいろあるが TCP かな?
はい、TCPです
> TCP はストリーム(=プログラマ的に見ると単純にデータのみが流れる通信)なので、
> *通信手順として STX/ETX を使うようなプロトコルを採用している*のであれば STX/ETX が出るし
> そうでないのであれば、そもそも Start of Text / End of Text など不必要。
>
> 本当に STX/ETX が必要なのかどうか、その辺の「案件(要求)」レベルで要検討
仕様にてSTX ETXが必要なのです
現在は受信プログラム部分を作成してますが、送信部分も作成します
STX・ETX以外は大体出来ているのですが・・・・・
引用返信 編集キー/
■61208 / inTopicNo.6)  Re[3]: C# STX ETXの取得(検索)方法
□投稿者/ orihikin (12回)-(2011/08/05(Fri) 12:03:18)
No61206 (逆運の覇者 さん) に返信
> 私もjpeg圧縮アルゴリズムの本を読んでいた当時、STX,ETXがわからなかったなあ。
> 送るデータはbyte列に変換して送信するのでデータはcharではなく、byte[] です。
> 当然、受け側もbyte[] で受信します。
仕様で伝送コードはASCII(漢字はシフトJIS)となっています

> しかし、受信した後でEncoding.default.GetString()でstringに変換して、
> str.IndexOf((char)0x02) とかできますよ。
(char)0x02ですか。有難うございます


引用返信 編集キー/
■61209 / inTopicNo.7)  Re[2]: C# STX ETXの取得(検索)方法
□投稿者/ orihikin (13回)-(2011/08/05(Fri) 12:04:30)
No61200 (shu さん) に返信
ご回答有難うございます
> STX, ETXがなんだか分かっていますか?それぞれ1byteの制御コードで"STX","ETX"という文字列ではありませんよ?
はい、これは理解しております
> Binary読みしてSTX(0x02),ETX(0x03)のコードを検知すれば良いです。
上記調べます
引用返信 編集キー/
■61283 / inTopicNo.8)  Re[3]: C# STX ETXの取得(検索)方法
□投稿者/ orihikin (14回)-(2011/08/08(Mon) 15:11:29)
No61206 (逆運の覇者 さん) に返信

> str.IndexOf((char)0x02) とかできますよ。

text = text.subustring(strGetText.IndexOf((char)0x02)+1, strGetText.IndexOf((char)0x03)-1)
この方法で、出来ました
皆さん有難うございました
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -