![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
JavaのSocketを使い、チャットシステムを作っています。
2ちゃんねるの掲示板やニコニコ動画のコメントの真似のようなものです。
一つのサーバーに、複数のクライアントがアクセスしてコメントを書いていくというものです。
しかしオブジェクトの送受信で困ったことになりました。
//読み込み
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
ObjectInputStream ois = new ObjectInputStream(bis);
//書き込み
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(bos);
こうするとBufferedOutputStreamの実体化でプログラムがフリーズしてしまいます。
oisで一度なにかを読み込んだあとに実体化すればできるのですが、
マルチスレッドプログラミングを使うため、
接続があった瞬間に両方実体化しなくてはいけません。
socketからStreamを手に入れることが、一度入出力をするまで片方しかできないようです。
socketのcloneを実体化することも考えたのですが、サーバー側は
serverSocket.accept()を使うためかうまくできません。
どうすればいいのでしょうか。
デバッガの領域からはずれた部分(接続、送受信等)のバグ探しで非常に滅入っています。
助けてください。お願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
そもそもシリアライズしてオブジェクトをそのまま送信するのではなく、
電文を設計して送受信した方が素直じゃないかしら?
この回答への補足
回答ありがとうございます。
初心者ですいません
ObjectOutputStreamでは自分で定義したクラスは送れず、
Javaで定義されたObject(ArraylistやStringやJButton)だけ送れました。
シリアライズ(直列化)とはそういうことなのでしょうか??
参考になるページを教えてもらえると、とても助かります。
・・・なぜかはわからないのですが、下のやり方で書いたら同時に実体化できました。
変なことを聞いてしまったみたいですいません。
//読み込み
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
//書き込み
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Bluetooth・テザリング PRIME Z390-PでWIFI&Bluetooth 2 2022/04/01 19:25
- UNIX・Linux いつの間にか自宅サーバーが見れなくなっていた時のトラブルシューティング手順をご教示ください 4 2023/02/15 21:01
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Mac OS 【MacOS】外付けHDDがUSB3.1バス上でのみアクセス出来なくなる 1 2022/10/29 10:27
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0 == False はいいけど
-
パワーポイントのVBAでテキスト...
-
VBAのWindowオブジェクトとWork...
-
オブジェクトの作成
-
Excelで =EMBED("Acrobat Docu...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
Javaについて質問です。 セッシ...
-
ビジュアルC++でボタンの有...
-
Object型からDouble型へのキャスト
-
error C2712: オブジェクト ア...
-
EXCEL VBAにて動的にCheckBOXを...
-
ASP.net 教えてください!!(...
-
VBA 同じ名前のオブジェクトを...
-
VBAのオブジェクトの値を保持し...
-
Excelが終了終了しない!
-
ポップアップメニュー作成時に...
-
DOMの要素ををtextarea(dropし...
-
newは明示的にした方が良いのか?
-
オブジェクト指向とモジュール設計
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
JAVAからHTMLへ値を返す方法
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBA 同じ名前のオブジェクトを...
-
Object型からDouble型へのキャスト
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
LISTBOXの内容が更新されま...
-
Vbで通常使用するプリンターを...
-
多人数のじゃんけんプログラム
-
オブジェクト名をforループ内で...
-
ASP.net 教えてください!!(...
-
JSPのout.printについて
-
時間帯判定をする。
-
error C2712: オブジェクト ア...
-
Accessの連結・非連結オブジェ...
おすすめ情報