C# 使用UDP连接的c客户端服务器

C# 使用UDP连接的c客户端服务器,c#,C#,我正在尝试用c语言制作客户机-服务器应用程序。在客户端,我将hello消息写入服务器,服务器接收消息。 一旦服务器接收到消息,它就应该向客户端发回一条消息,指示消息已被接收。基本上是承认。 我的问题是客户端没有从服务器接收消息。 下面是我的客户端和服务器代码 客户部分: 服务器部件: 我编译了您的代码,它工作正常,因此您的问题属于外部问题,例如: 防火墙正在阻止连接或服务器绑定 因为您的示例中的ip是lan ip,所以它可能是来自Windows的内置防火墙或第三方防火墙。 尝试禁用防火墙。 您在

我正在尝试用c语言制作客户机-服务器应用程序。在客户端,我将hello消息写入服务器,服务器接收消息。 一旦服务器接收到消息,它就应该向客户端发回一条消息,指示消息已被接收。基本上是承认。 我的问题是客户端没有从服务器接收消息。 下面是我的客户端和服务器代码

客户部分:

服务器部件:


我编译了您的代码,它工作正常,因此您的问题属于外部问题,例如:

防火墙正在阻止连接或服务器绑定

因为您的示例中的ip是lan ip,所以它可能是来自Windows的内置防火墙或第三方防火墙。 尝试禁用防火墙。 您在与服务器不同的计算机上测试客户端,并使用了错误的ip。 如果您在同一台机器上进行测试,则可以使用特殊的ip 127.0.0.1,即DNS本地主机。127.0.0.1始终指运行代码的计算机。如果您的本地ip发生更改,使用此特殊ip可以避免将来的麻烦

顺便说一下,在您的服务器代码中,您应该为while的每个交互重用listener字段,例如

        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 2789);
        Console.WriteLine("Client address is:" + groupEP.Address.ToString());
        Console.WriteLine("Client port is:" + groupEP.Port.ToString());

        byte[] data = new byte[1024];
        UdpClient listener = new UdpClient(2789);

        while (true)
        {
            Console.WriteLine("Waiting for client");
            byte[] bytes = listener.Receive(ref groupEP);
            Console.WriteLine("Received Data:" + Encoding.ASCII.GetString(bytes, 0, bytes.Length));

            //sending acknoledgment
            string welcome = "Hello how are you from server?";
            byte[] d1 = Encoding.ASCII.GetBytes(welcome);
            listener.Send(d1, d1.Length, groupEP);
            Console.WriteLine("Message sent to client back as acknowledgment");

        }

谢谢你的答复。我尝试了你提到的步骤,但还是一样的问题。
try
{
    while (true)
    {
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 2789);
        Console.WriteLine("Client address is:" + groupEP.Address.ToString());
        Console.WriteLine("Client port is:" + groupEP.Port.ToString()); 

        byte[]data = new byte[1024];
        UdpClient listener = new UdpClient(2789);

        Console.WriteLine("Waiting for client");
        byte[] bytes = listener.Receive(ref groupEP);
        Console.WriteLine("Received Data:"+ Encoding.ASCII.GetString(bytes, 0, bytes.Length));

        //sending acknoledgment
        string welcome = "Hello how are you from server?";
        byte[]d1 = Encoding.ASCII.GetBytes(welcome);
        listener.Send(d1, d1.Length, groupEP);
        Console.WriteLine("Message sent to client back as acknowledgment");
    }
}
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 2789);
        Console.WriteLine("Client address is:" + groupEP.Address.ToString());
        Console.WriteLine("Client port is:" + groupEP.Port.ToString());

        byte[] data = new byte[1024];
        UdpClient listener = new UdpClient(2789);

        while (true)
        {
            Console.WriteLine("Waiting for client");
            byte[] bytes = listener.Receive(ref groupEP);
            Console.WriteLine("Received Data:" + Encoding.ASCII.GetString(bytes, 0, bytes.Length));

            //sending acknoledgment
            string welcome = "Hello how are you from server?";
            byte[] d1 = Encoding.ASCII.GetBytes(welcome);
            listener.Send(d1, d1.Length, groupEP);
            Console.WriteLine("Message sent to client back as acknowledgment");

        }