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

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

C# と VB.NET の入門サイト

Re[4]: 接続を維持したい


(過去ログ 68 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■39480 / inTopicNo.1)  接続を維持したい
  
□投稿者/ はと (1回)-(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・・・にも適応させるにはどうすればよいのでしょうか?


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



引用返信 編集キー/
■39488 / inTopicNo.2)  Re[1]: 接続を維持したい
□投稿者/ やじゅ (1188回)-(2009/08/09(Sun) 23:58:41)
やじゅ さんの Web サイト
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();
}
引用返信 編集キー/
■39491 / inTopicNo.3)  Re[2]: 接続を維持したい
□投稿者/ オショウ (301回)-(2009/08/10(Mon) 00:30:01)
http://dobon.net/vb/dotnet/internet/tcpclientserver.html

こういうのも参考になるかと・・・

以上。
引用返信 編集キー/
■39531 / inTopicNo.4)  Re[3]: 接続を維持したい
□投稿者/ はと (2回)-(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通信ではできないのでしょうか?
よろしくお願いします。

引用返信 編集キー/
■39537 / inTopicNo.5)  Re[4]: 接続を維持したい
□投稿者/ オショウ (303回)-(2009/08/10(Mon) 17:57:48)
2009/08/10(Mon) 17:58:16 編集(投稿者)

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

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

以上。
引用返信 編集キー/
■39539 / inTopicNo.6)  Re[4]: 接続を維持したい
□投稿者/ やじゅ (1197回)-(2009/08/10(Mon) 19:05:21)
やじゅ さんの Web サイト
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)を使って
処理するといいです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -