質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Q&A

解決済

3回答

388閲覧

ソケット通信で「8の倍数」を設定する理由

madagasukal

総合スコア24

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

0グッド

0クリップ

投稿2021/06/15 05:17

編集2021/06/15 05:18

javaでソケット通信(TCP通信)を行いました。

その際に
クライアント⇆サーバ間で電文(中身は電文バージョン、金額、業務コード等)をやり取りします。

電文はbyte配列で作られており
送信前に↑byte配列が8の倍数でなければ8の倍数になるように変換するというロジックがあります。

この8の倍数にしなければというところがいまいち分かりません。。。
**
Q.なぜ電文(byte配列)を8の倍数にする必要があるのでしょうか?分かる方教えてください????‍♂️**


試しに8の倍数以外にしてサーバにリクエストしてみたのですが特にエラー出ずでして…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

「電文」という単語を使っているところから察するに、官公庁や金融系、流通基盤など業界の共通データ交換システムに関連するプログラムを参照されているのではないでしょうか?。

このような業界のシステムは、取引におけるデータ交換を確実にさせるため、専用の通信プロトコルが定められているケースがあります。

例) JCA手順 全銀手順

いわゆるEDIです

どのような業務に利用され、どのような規定が適用されているのかを、調査することで8バイト単位に切り上げる理由もわかると思います。

また、こちらも推測ですが BSC手順のプロトコルを採用していて、電文データにパリティビットを付与している可能が考えられます。

パリティビットを計算させるため、サイズも8バイトに決めているのではないでしょうか?

投稿2021/06/15 13:01

編集2021/06/15 13:32
Yoshi88

総合スコア623

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

madagasukal

2021/06/15 14:42

回答ありがとうございます。お察しの通り金融系のシステムです。 ただ文章から察するに全てのソケット通信で8の倍数に切り上げるルールがあるわけではないのですね! 何かルールがあるのかなと思っていましたが 皆さんが知らないということは、あくまでうちの環境で使われているものってことなんですね。。。 それかご指摘頂いたように別のシステムとのやりとりに必要な何かのルールに則っている可能性がありますね。 >パリティビットを付与している可能が考えられます。 →なるほど。。。 これはみてなかったので付与されているかどうか、この観点でもう一度確認してみます。 他の情報も含め丁寧な回答ありがとうございました????‍♂️
guest

0

Q.なぜ8の倍数にするのでしょうか?分かる方教えてください

切りがいいからです

あと、受信時にメッセージ長が8の倍数でなかったらなにか異常があると判断できる、ってはなしもありますが、TCP通信って段階であんましそれに意味はないですね

投稿2021/06/15 05:20

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

madagasukal

2021/06/15 10:30 編集

ご回答頂きありがとうございます。 もう少しだけお聞かせください????‍♂️ >切りがいいからです →なるほど…では8の倍数にしないとエラーになるわけではないということですね。。ソケット通信する際の、昔からの暗黙的なルールがあるって理解であってますでしょうか? というのも私が切りよくすることの目的が理解できていなくて…記載頂いたデータが欠落しているか分かるというメリットのためだけに切りよくしているということで合ってますでしょうか? あと2の倍数ではダメなのでしょうか? お手数ですがご回答頂けると助かります????‍♂️
y_waiwai

2021/06/15 13:22

あなたがそう決めて、そう実装していけばいいんです。
madagasukal

2021/06/15 14:10

曖昧な質問にも関わらずご回答いただき有難うございます????‍♂️
guest

0

ご回答頂きありがとうございます。
もう少しだけお聞かせください????‍♂️

切りがいいからです

→なるほど…では8の倍数にしないとエラーになるわけではないということですね。。昔からの暗黙的なルールがあるって理解であってますでしょうか?

あと2の倍数ではダメなのでしょうか?

投稿2021/06/15 10:18

madagasukal

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2021/06/16 04:30 編集

追加の質問でしたら、質問文を編集されるか、新たな質問を起こされるか、回答へのコメントにて行われることをお勧めします。 なお、回答は、削除依頼をすることが可能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問