もぐりの日記

雑日記

今日の天鳳.1

オンライン麻雀でのあれこれ。
やっとこさ上卓で打ち始めたところ。
R1499で二段、まあ初心者だし多少はね?
伸び悩むのも嫌なので何か書く。
本日は2戦。

一戦目

牌符:http://tenhou.net/0/?log=2016022500gm-0089-0000-f5a1118c&tw=1
ファイヤロー。
東4局とかのリーチとか、南3の嶺上ドラドラ投げ捨てとかなるべくしてなってる感。

二戦目

牌符:http://tenhou.net/0/?log=2016022500gm-0089-0000-e03977d1&tw=2
ぎりセーフな感じ。ことごとくチャンスがつぶれて行ってる。運なのか牌理の結果なのか。
南1とかなんなん?って言いながら打ってた。

おわり

麻雀って楽しいよね!(血涙)f:id:sumogri:20160225020139j:plain

JavaのSocketを使ったストリームとかで躓いたところ

Javaアプリケーションで遊んでた時に躓いたメモ。自分の備忘録的なあれ。

とりあえずサーバーから投げたものをクライアントが受け取れるかやったら躓いた。

 

構成

サーバー⇔クライアントでsocketを使って通信。Serializableなクラスを投げあう形。

サーバー側

ObjectOutputStreamでオブジェクトを投げる。

//InfomationBase:Serializableなクラス
public void send(InfomationBase _info){
 try{
  writer = new ObjectOutputStream(socket.getOutputStream());
  writer.writeObject(_info);
 }
 catch (IOException e) {
  System.err.println("サーバサイド送信エラー");
  e.printStackTrace();
 }
}

クライアント側

ObjectInputStreamでオブジェクトを投げる。

public void run() {
 try {
  reader = new ObjectInputStream(socket.getInputStream());
  InfomationBase message = (InfomationBase) reader.readObject();
  output.setInfomation(message);//output:表示機的なクラス
 }
 catch (ClassNotFoundException e) {
  System.err.println("送られてきたオブジェクトがInfomationBaseではありません");
  e.printStackTrace();
 }
 catch (IOException e) {
  System.err.println("クライアント受信エラー");
  e.printStackTrace();
 }
 finally{
  try{
   reader.close();
  }
  catch(IOException e){
   System.err.println("受信ストリームクローズできません");
   e.printStackTrace();
  }
 }
}

おきたこと

java.net.SocketException : Connection resetってクライアント側で言われた。

解決

エラーの意味そのまんま。
http://software.fujitsu.com/jp/manual/manualfiles/M050000/B1WN5031/03/msg43/msg09893.htm
OutputStreamを開いたままサーバー側のプログラムが終了しているのが問題だった。
ちゃんと送った後に閉じるorプログラムが終了しないのどちらかすると問題なく動いた。

将来的にはサーバーとクライアントでずっと通信するしサーバーから通信切ることはないので大丈夫そうかな?

今回のオチ

つくりたてでpostないの嫌だったし、多少はね?