C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.39480 の関連記事表示

<< 0 >>
■39480  接続を維持したい
□投稿者/ はと -(2009/08/09(Sun) 21:32:01)

    分類:[C#] 

    C#にてSocket通信なるものを作っていますが、ネットワークはまったくの初心者なので教えてください。

    TcpClient client = new TcpClient("127.0.0.1", port);
    これで接続しますよね。
    private void button1_Click(object sender, EventArgs e)
    {
    NetworkStream stream = client.GetStream();

    この時点で、コンソールアプリですとclientが接続時のものと判断されるのですがWindowsアプリですと見つかりませんと当然ながら表示されてしまいます。

    Windowsアプリとしてのソースでclientを他のprivate void・・・にも適応させるにはどうすればよいのでしょうか?


    本当に初歩的なことで申し訳ないです
    よろしくお願いします。


親記事 /過去ログ68より / 関連記事表示
削除チェック/

■39488  Re[1]: 接続を維持したい
□投稿者/ やじゅ -(2009/08/09(Sun) 23:58:41)
>
    No39480 (はと さん) に返信
    > C#にてSocket通信なるものを作っていますが、ネットワークはまったくの初心者なので教えてください。
    > TcpClient client = new TcpClient("127.0.0.1", port);
    > これで接続しますよね。
    > private void button1_Click(object sender, EventArgs e)
    > {
    > NetworkStream stream = client.GetStream();
    > この時点で、コンソールアプリですとclientが接続時のものと判断されるのですがWindowsアプリですと見つかりませんと当然ながら表示されてしまいます。
    >

    いまいち質問内容が分かりにくいですが、こんな感じですか?

    private TcpClient client = new TcpClient();
    private NetworkStream netStream;
    // 接続ボタン
    private void button1_Click(object sender, EventArgs e)
    {
     client.Connect("127.0.0.1", port);
     netStream = client.GetStream();
    }
記事No.39480 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39491  Re[2]: 接続を維持したい
□投稿者/ オショウ -(2009/08/10(Mon) 00:30:01)
記事No.39480 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39531  Re[3]: 接続を維持したい
□投稿者/ はと -(2009/08/10(Mon) 16:57:32)
    ありがとうございます。
    Private〜でやるんですね。基本的なとこなのにありがとうございます(_ _)
    
    あと、もう一つ質問で申し訳ないのですが、
    
    Client→Server  で送るとき、サーバーが受信中の場合はFormが動きません。。。(受信待ちでも)
    
    メッセージボックスなどは表示できるのに。
    try
                {
                    Int32 port = 9990;
                    IPAddress localAddr = IPAddress.Parse(label4.Text);
    
                    TcpListener server = new TcpListener(localAddr, port);
                    server.Start();
                    label7.Text = ("接続待機中です...");
    
                    TcpClient client = server.AcceptTcpClient();
      
                    NetworkStream stream = client.GetStream();
                    Byte[] bytes = new Byte[256];
                    int i;
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        string data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
                        listBox1.Items.Add(data);//フォームを表示していればできる
              messageBox.Show(data);//これは表示できる
                    }
                }
                catch (SocketException a)
                {
                    listBox1.items.Add(a);
                }
    
    チャットなどはSocket通信ではできないのでしょうか?
    よろしくお願いします。
記事No.39480 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39537  Re[4]: 接続を維持したい
□投稿者/ オショウ -(2009/08/10(Mon) 17:57:48)
    2009/08/10(Mon) 17:58:16 編集(投稿者)

    > あと、もう一つ質問で申し訳ないのですが、
    >
    > Client→Server で送るとき、サーバーが受信中の場合はFormが動きません。。。(受信待ちでも)
    >
    > チャットなどはSocket通信ではできないのでしょうか?
    > よろしくお願いします。

      参考のURLのところ見てほしいナ〜

    以上。
記事No.39480 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39539  Re[4]: 接続を維持したい
□投稿者/ やじゅ -(2009/08/10(Mon) 19:05:21)
>
    2009/08/10(Mon) 19:17:22 編集(投稿者)

    No39531 (はと さん) に返信
    > あと、もう一つ質問で申し訳ないのですが、
    > Client→Server で送るとき、サーバーが受信中の場合はFormが動きません。。。(受信待ちでも)

    ループ中に、DoEventsを入れるとメッセージキューにあるWindowsメッセージを処理してくれるので
    Formが動くようになります。
    http://dobon.net/vb/dotnet/vb6/doevents.html

    補足:
    Application.DoEventsを使うと、稼動中にフォームを閉じられたり、
    フォーム上のコントロールが操作されてしまう副作用があります。
    それに備えて、対処コードを組み込むことも、おいおい考えるといいです。

    本来、処理に時間がかかる処理はマルチスレッド(BackgroundWorker)を使って
    処理するといいです。
記事No.39480 のレス /過去ログ68より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -