中田駿矢
2021.06.08
クライアント側(PC)のエラーについて
クライアント側(PC)でGUI上のボタンを押すと文字列を送信する
文字列を受け取るととSotaが”こんにちは”と発話する
というシステムを作成したいのですが,1度目は正常に動作し,2度目以降はエラーが発生します.PC同士の通信では問題なく文字列が送信できたのですがどこに問題があるのでしょうか

(エラー文)
Software caused connection abort: socket write error

 
回答
john
2021.06.08
中田駿矢様

お疲れ様です。
横入りで失礼します。
頂いた質問ですが、単なるネットワークエラーだと思います。
コミュニティなので、他の開発者と交流する目的もあるかと思います。
したがって、当該質問へ回答させて下さい。
あくまで一意見です。
もし気に障ったら申し訳ございません、他意は全くございませんので冷静にご精読下さい。
引き続きよろしくお願いいたします。


★状況整理
状況を鑑みるに、tcpソケット通信し遠隔でSotaを操作するようなアプリを作成中であると判断しました。説明いただいた通り、以下のような構成かと思われます。

・クライアント側:PC
・サーバ側:Sota

★原因
一般的なネットワークエラーです。
おそらく、Sota(サーバ側)の接続が切れた状態でPC(クライアント側)からTCP接続しようとして、失敗しているだけだと思います。
もっと細かくいうと、質問者様作成の(サーバ側処理である)main関数すぐ終了してしまうためだと思います。なので、質問者様はmain関数が終了しないように処理を記述しないといけません。
つまり、当該事象は以下のような結果だと思われます。

・1度目:main関数が実行中なのでTCP接続できるため、正常動作した。
・2度目:main関数が終了していたため、異常終了した。

★参考
以下参考です。
https://base64.work/so/java/53625

★アドバイス
今回の事象は単なるネットワークエラーです。
なので、vstoneサポート様もこの質問を受け取っても「単なるネットワークエラーなので、どこに問題ありますか?とかいきなり言われても知らないんだけど・・・(-_-;)」と内心感じるでしょう。
したがって、まずまずは自分でエラーメッセージについて時間をかけてググりましょう。
面倒だとは思いますが、このようなレベルの(Sotaの内部機構は関係ないと思われる)質問は、
サポート・質問者の双方のお時間を無駄にしてしまう恐れがあります。
一言でググるといっても一概には言えませんが、今回の質問はググればわかるレベルです。

★補足
まず質問する際には、以下のAWSのガイドラインを参考にしてみて下さい。
「自分の質問を相手が受け取ったらどういう受け取り方をするだろうか?」と想像してから記載するようにして下さい。今度からは、質問の際には「自分はこんなことをやって、こんな感じになった、~~~なので~~だと思う」というトライ&エラー&所感も載せるようにして下さい。
長文となりましたが、頑張って下さい、応援しています。
https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/
Sotaサポート
2021.06.09
中田駿矢様

お世話になっております。Sotaサポートです。
ご質問いただいたのと同じプログラムをこちらで動作検証しましたが、2回目以降も正常に通信出来ました。
ただし、VstoneMagic側のブロックの仕様上、一度メッセージを送信すると自動的に接続が切断されるため、次の通信には接続をやり直す必要があります。

もし、毎回「初回の通信のみ成功する」という現象が発生している場合は、ネットワーク環境には問題無く、上記の仕様に関するものか、お使いのPCのネットワーク接続関連の仕様による問題が考えられます。
もし、「開発当初は通信に成功していたが現在は一度も通信出来ない」及び「実行回数に関わらず通信に成功するときとしない時がある」という場合は、お使いのネットワーク環境が不安定等の問題が考えられます。

何卒宜しくお願い致します。
中田駿矢
2021.06.11
Sotaサポート様
回答ありがとうございます。VstoneMagic側のブロックの仕様がそういったものであることを知らず、大変参考になりました。ありがとうございます。
この質問に回答する
 

Page Top