2011-11-13 25 views
0

私は現在サーバで作業しようとしています。私はこのコードを持っています: enter image description hereサーバ接続でエラーが発生しました

私は 'ParametrizedThreadStart'のスレッドで 'HandleCC'メソッドを開始しています。私は '127.0.0.1'で接続しようとしています。私は接続することができます。私が接続しているときは、第1のブレークポイントは良いですが、第2のコードも停止します。 (コンソールはまだ動作していますが、次のブレークポイントの誰もコードを壊していません)。 私は英語を助けてくれて嬉しいです。

全コード:あなたは、クライアントとサーバーの両方を必要とする任意のクライアントサーバーアプリケーションで

using System; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 
using System.IO; 
using System.Linq; 
using System.Collections.Generic; 
using System.Collections; 
using System.Threading; 
namespace MTSP 
{ 
class Comunication 
{ 
    private TcpListener listener; 
    private Thread thread; 
    public Comunication() 
    { 
     this.listener = new TcpListener(IPAddress.Any, 20345); 
     this.thread = new Thread(new ThreadStart(this.ListenLoop)); 
     this.thread.Start(); 
    } 
    private void ListenLoop() 
    { 
     this.listener.Start(); 
     while (true) 
     { 
      TcpClient client = this.listener.AcceptTcpClient(); 
      Thread tr = new Thread(new ParameterizedThreadStart(this.HandleCC)); 
      tr.Start(client); 
     } 
    } 
    private void HandleCC(object client) 
    { 
     TcpClient cli = (TcpClient)client; 
     NetworkStream stream = cli.GetStream(); 
     byte[] buffer = new byte[1024]; 
     int bytesread = 0; 
     string mess = ""; 
     StringBuilder compmess = new StringBuilder(); 
     while (true) 
     { 
      bytesread = 0; 
      try 
      { 
       bytesread = stream.Read(buffer, 0, buffer.Length); 
      } 
      catch 
      { 
       break; 
      } 

      compmess.AppendFormat("{0}", Encoding.ASCII.GetString(buffer, 0, bytesread)); 
      string a = compmess.ToString(); 
      string g; 
     } 
     System.Diagnostics.Debug.WriteLine(compmess.ToString()); 
     cli.Close(); 
    } 
} 
} 
+0

どのように 'クライアント 'を作成しますか?どのサーバーに接続していますか? 'Read()'が返されない最も一般的な理由は、サーバーがデータを送信しないということです。そして、あなたが 'キャッチ'と 'ブレーク'を使用している方法は非常に間違っているようです。また、スクリーンショットではなくテキストとしてコードを投稿できますか? – svick

+0

あなたは私のポストにあります。 – user35443

+1

それは止まりません、それはブロックします。何かを送る。 –

答えて

0

。あなたはサーバーを書きました。ここ は、クライアントの一例である(これは試験し、サーバーとしてあなたのコードで動作します):

TcpClient client = new TcpClient("localhost", 20345); 
    NetworkStream stream = client.GetStream(); 

    while (true) 
    { 
     string message = Console.ReadLine(); 
     Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); 
     // Send the message to the connected TcpServer. 
     stream.Write(data, 0, data.Length); 
    } 

    stream.Close(); 
    client.Close(); 

別のコンソールアプリケーションでは、このクライアントを入れて、それから:

  • サーバを起動
  • は、新しいVisual Studioのインスタンスにクライアントを起動するか、それはあなたのステップ0を通過します
  • 次のクライアントのコンソールウィンドウにexeファイルに
  • タイプの何かを開始しますf使用しているStringBuilderを更新してください。
+0

なぜ、あなたのクライアントが動作しないのですか?それが私のために働いているのは、それがコードの問題ではないということです。ある種の設定かもしれません。 – misha

+0

クライアントは動作しますが、サーバーが動作しません。しかし、私のファイアウォールがポートをブロックしている可能性があります。 – user35443

+0

私はそれがそうかもしれないように接続を "許可"するように求められました... – misha

関連する問題