Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务器将不会响应多条消息_C# - Fatal编程技术网

C# 服务器将不会响应多条消息

C# 服务器将不会响应多条消息,c#,C#,我最近用在CodeProject.com上找到的代码制作了这个服务器和客户端。我可以将数据从客户端发送到服务器一次,但之后,我发送的所有数据都不会得到确认。我是否需要在某个地方实现一个循环?代码如下: string hi; Socket sListener; Socket handler; Socket senderSocket; private void Form1_Load(object sender, EventArgs e) {

我最近用在CodeProject.com上找到的代码制作了这个服务器和客户端。我可以将数据从客户端发送到服务器一次,但之后,我发送的所有数据都不会得到确认。我是否需要在某个地方实现一个循环?代码如下:

    string hi;
    Socket sListener;
    Socket handler;
    Socket senderSocket;

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        IPHostEntry ipHost = Dns.GetHostEntry("localhost");
        IPAddress ipAddr = ipHost.AddressList[0];
        IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 4510);
        sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
        sListener.Bind(ipEndPoint);
        sListener.Listen(10);
        AsyncCallback aCallback = new AsyncCallback(AcceptCallback);
        sListener.BeginAccept(aCallback, sListener); 
    }

    private void AcceptCallback(IAsyncResult ar)
    {
        Socket listener = (Socket)ar.AsyncState;
        handler = listener.EndAccept(ar);
        Byte[] buffer = new Byte[1024];
        handler.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), handler);
        hi = Encoding.Unicode.GetString(buffer);
    }

    private void ReceiveCallback(IAsyncResult ar)
    {
        Socket listener = (Socket)ar.AsyncState;
        int endreceive = listener.EndReceive(ar);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        IPHostEntry ipHost = Dns.GetHostEntry("localhost");
        IPAddress ipAddr = ipHost.AddressList[0];
        IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 4510);
        senderSocket = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        senderSocket.Connect(ipEndPoint);
        byte[] msg = Encoding.Unicode.GetBytes(textBox2.Text);
        senderSocket.Send(msg); 
    }

    private void button3_Click(object sender, EventArgs e)
    {
        textBox1.Text = hi;
    }

    private void button4_Click(object sender, EventArgs e)
    {
        byte[] msg = Encoding.Unicode.GetBytes("whatuphello");
        senderSocket.Send(msg);
    }

使用async BeginReceive方法时,还应调用EndReceive。 下面是一个类似问题的链接,并附有示例:

可能有用。最好将服务器创建为一个独立的控制台应用程序。我似乎仍然无法收到多条消息。