
ソケット通信で、接続してきた
クライアント(TcpClient tempclient)から、
NetworkStream,StreamReader,StreamWriterなどを
作っています。
Class A
while(true){
tcpclient=server.AcceptClient();
networkstream=tcpclient.getStream();
streamreder=new StreamReader(networkstream...);
mythread=new Mythread(tcpclient);
//
networkstream.close()
streamreader.close()
//これらを加えると、下の、/* */でエラーになります。
}
MyThread B
{
Public Mythread(TcpCLient tcpclient){
/*
ns=tcpclient.Getstream
sr=...
*/
}
このクライアントを、別のスレッドで使うため、
mythread=new MyThread(tcpclient)などとして、
別のクラスにもっていき、
そこでも、新たに、NetworkStream,StreamReaderを
作ったとします。
この場合、1つのクライアントにつき、2つの
ストリームができるのでしょうか。
経験上、ストリームを作成するコードは
問題なく動きます。
しかし、新たにストリームを得たので、古いのを
クローズすると、エラーになります。
新たに作ったストリームは、実は、古いストリームを、
使いまわしていることになるのでしょうか。
少し、分かりづらいかもしれませんが、
何か分かる人がいましたら、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
具体的にどんなクラスを使っているのかよく分かりませんが、常識的な実装をしているならストリームをクローズするときには対応するソケットを破棄しているでしょう。
ストリームをクローズせずに廃棄(delete)すると上手くいくかもしれませんが、デストラクタがクローズすることも考えられるので上手くいく保証はありません。使っているストリームクラスにソケットとの関係を切断する機能が実装されていれば良いですが、そうでなければソケットとストリームは一対一で使うことが前提になると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
送信したデータの一部が文字化...
-
closeされたsocketへの動作につ...
-
TCP/IP通信でのコネクシ...
-
JavaによるXMLの送受信
-
VB6‥ソケットについて
-
Socket通信の0バイト受信について
-
Connectエラーが出てしまう・・...
-
Macターミナルで実行中のプログ...
-
家電製品の電力周波数を変える機械
-
タスクマネージャーのプロセス...
-
このレジの並び方は間違ってま...
-
InternetOpenUrlの引数URL文字...
-
実行時のコマンドプロンプトを...
-
ボタンが押された事を検知する...
-
h8マイコンで AD変換ができ...
-
割り込みの衝突
-
64BitOSについて
-
Linuxでスレッド優先度って変え...
-
Access2013からADP廃止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信する時に、相手にどうや...
-
UDP通信におけるbind関数について
-
エクセル VBA でのCOMポート...
-
ソケットのクローズについて
-
ソケットのrecvの戻り値が0
-
VB6のwinsockでconnectできない
-
Socket通信の0バイト受信について
-
recv関数でフリーズしてしまう
-
Winsockで接続待ちタイムアウト...
-
Connectエラーが出てしまう・・...
-
送信したデータの一部が文字化...
-
【ajax】 XMLHttpRequestオブジ...
-
ソケット通信
-
closeされたsocketへの動作につ...
-
wsdlからのサービス化を行い。
-
Cにおける通信プログラミングの...
-
UdpClient 送信元のIPアドレ...
-
非ブロッキングソケットのrecv...
-
ソケットを用いた1対多通信につ...
おすすめ情報