
ソケット通信で、接続してきた
クライアント(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ランキング
-
Socket通信の0バイト受信について
-
ソケットのrecvの戻り値が0
-
UDP通信におけるbind関数について
-
エクセル VBA でのCOMポート...
-
Winsockで接続待ちタイムアウト...
-
TCP/IP通信時のサーバーからの受信
-
VC6.0ソケット通信プログラムに...
-
ソケット通信
-
C#とTCP/IPを利用したサーバー...
-
vxWorks6.4を使用してソケット...
-
C言語のよるrsh-clientの簡潔...
-
ソケットでクライアントのipア...
-
UDP通信する時に、相手にどうや...
-
UDP/IPでのソケット作成につい...
-
非ブロッキングソケットのrecv...
-
winsockを使った通信での同時接...
-
socketプログラミングについて
-
UDPの宛先ポートと送信元ポート...
-
ソケット通信 同じポート番号...
-
Android Socket.connectエラー
マンスリーランキングこのカテゴリの人気マンスリー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対多通信につ...
おすすめ情報