0

2 台のコンピューター間でメッセージを送信しようとしています。接続を確立できましたが、奇妙な理由でストリームを取得できませんでした。

サーバーコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace chat_server
{
 class Program
 {
    static void Main(string[] args)
    {
        TcpListener server = new TcpListener(IPAddress.Any, 9999);
        server.Start();

        Console.WriteLine("Waiting for client connections");
        TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("Client request accepted");

        NetworkStream stream = client.GetStream();
        StreamReader reader = new StreamReader(stream);
        StreamWriter writer = new StreamWriter(stream);

        Console.WriteLine("The message is " + reader.ReadToEnd());
    }
 }
}

クライアントコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace chat_client
{
 class Program
 {
    static void Main(string[] args)
    {
        TcpClient client = new TcpClient("localhost", 9999);

        NetworkStream stream = client.GetStream();
        StreamReader reader = new StreamReader(stream);
        StreamWriter writer = new StreamWriter(stream);

        writer.Write("Hello world");
        Console.WriteLine("Message Sent");
        Console.ReadKey();
    }
 }
}

私のサーバーコードは、受け入れられたクライアント要求を出力することにより、クライアント接続を確認します。しかし、何らかの理由でストリームからデータを取得できません。クイック ヘルプをいただければ幸いです。

ありがとうございました

4

2 に答える 2

3

実際にデータを送信するには、ストリームをフラッシュする必要があります。

試す:

writer.Write("Hello world");
writer.Flush();

詳細については、MSDN のドキュメントを参照してください。

同期ソケット サーバー: http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx 非同期ソケット サーバー: http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx

ソケットのインとアウトをより詳細に説明しているサイトは次のとおりです

于 2012-11-15T10:54:06.257 に答える
0

サーバー側では、

static TcpListener server;一番上に追加

それから `server.Start();

        Socket soc = listener.AcceptSocket();

        Console.WriteLine("Connection successful");
        Stream s = new NetworkStream(soc);

        StreamReader reader = new StreamReader(s);
        StreamWriter writer= new StreamWriter(s);

        sw.AutoFlush = true;
        sw.WriteLine("hello world");`

クライアント側で

 TcpClient client = new TcpClient("localhost", 9999);
        Stream s = client.GetStream();
        Console.WriteLine("Connection successfully received");

        StreamWriter writer = new StreamWriter(s);
        StreamReader reader = new StreamReader(s);
        sw.AutoFlush = true;
        string dis=reader.readLine();
        Console.WriteLine(dis); 

今すぐうまくいくことを願っています。

于 2012-11-15T11:16:12.500 に答える