2016-10-10 14 views
1

私はTcpClientとサーバーを使ってサーバークライアントプログラムを作っています。 C#ストリームをTcpClientから読み取る

は、私が使用してサーバから送信するには:

client = listener.AcceptTcpClient(); 
sr = new StreamReader(client.GetStream()); 
sw = new StreamWriter(client.GetStream()); 

string line; 

try 
{ 
    send("Hello world"); 
} //More code 

そして、クライアントからの読み取り:

string data; 
data = sr.ReadLine(); 

if(data != string.Empty || data != null) 
{ 
    MessageBox.Show(data); 
} 

static void send(string data) 
{ 
    sw.WriteLine(data + Environment.NewLine); 
} 

そして、クライアントは、私はいくつかのテキストを送信しています接続したとき

中身を入れてみました(真)と凍って、タイマーを入れて凍らせてみました...

どうすればこの問題を解決できますか?

P.S:クライアントとサーバーは2つの異なるプロジェクトです。

try 
{ 
    listen = new TcpListener(myAddress, port); 
    listen.Start(); 
    Byte[] bytes; 
    while (true) 
    { 
     TcpClient client = listen.AcceptTcpClient(); 
     NetworkStream ns = client.GetStream(); 
     if(client.ReceiveBufferSize > 0){ 
      bytes = new byte[client.ReceiveBufferSize]; 
      ns.Read(bytes, 0, client.ReceiveBufferSize);    
      string msg = Encoding.ASCII.GetString(bytes); //the message incoming 
      MessageBox.Show(msg); 
     } 
     } 
} 
catch(Exception e) 
{ 
    //e 
} 

が続いてバックグラウンドスレッドとしてこのコードを持っている:私は私はあなたが必要なものを理解してほしい

Thread thread = new Thread(the functions name); 
thread.IsBackground = true; 
thread.Start(); 

+0

フリーズするのはどの回線ですか?どのラインがクラッシュする例外をスローしますか? – SpaceghostAli

+0

例外をスローしないでください。プログラムはちょうどフリーズします –

+0

あなたはそれを「タイマーのチックループに入れてクラッシュしました」と言いました。最初の質問は、デバッガでコードをステップ実行して、どの行がフリーズしてもまだ立っていますか? – SpaceghostAli

答えて

2

は、私はあなたがこのようなものが必要と考えています。

+0

私は、クライアントとサーバーは同じプロジェクトにはないと言っています、彼らは2つの異なるプログラムです –

+0

あなたはあなたのためのブレースが不足していますまた、あなたはns.Read elso空の文字列をたくさん作ってください – SpaceghostAli

+0

あなたが言ったことから、これは正しいようです。 – FakeCaleb

関連する問題