TCPListener上的多个客户端C#/ Server发送数据

时间:2018-04-08 16:40:04

标签: c# .net tcpclient tcp-ip tcplistener

作为C#和C#网络编程的“新手”我尝试使用TCPClient和TCPListener在C#中进行简单的聊天,我设法将数据从客户端发送到服务器但是如果我添加第二个客户端服务器没有读取他的数据和第二个问题我无法弄清楚如何使用TCPListener从服务器向客户端发送数据。

服务器:

    while (true)
    {
        Socket client = Server.AcceptSocket();
        Console.WriteLine("Connection accepted from " + client.RemoteEndPoint);
        count += 1;

        string msg;
        byte[] buf = new byte[1024];
        client.Receive(buf);

        msg = Encoding.UTF8.GetString(buf);
        Console.WriteLine("Received...  " + msg + "");

    }
}

客户:

while (true)
        {
            Console.WriteLine("Connected");
            Console.Write("Enter the string to be transmitted : ");

            String msg = Console.ReadLine();
            Stream stm = tcpClient.GetStream();

            ASCIIEncoding asen= new ASCIIEncoding();

            byte[] send = asen.GetBytes(msg);
            Console.WriteLine("Transmitting.....");
            stm.Write(send, 0, send.Length);

            if (msg == "/Q"){
                tcpClient.Close();
                Environment.Exit(0);
            }
        }

如果您在我的代码中看到任何荒谬/错误,请告诉我我在这里学习!

谢谢

1 个答案:

答案 0 :(得分:3)

我不熟悉C#这篇文章Server Client send/receive simple text如何创建C#简单服务器,并且应该修复客户端无法从服务器重新传输数据的第一个问题。

至于第二个问题是不能支持多个连接,这可能与没有线程有关,所以问题是你想要创建一个C#webserver或一个利用TCP通信到服务器的C#应用​​程序

如果答案是后者,那么我会考虑安装经过试验和测试的服务器,例如Apache或Nginx。这将允许服务器代表您处理多个请求,并跳过必须处理多个连接和线程,同时您正在了解有关客户端服务器关系的更多信息。此文章可能有助于为应用http://www.mono-project.com/docs/web/fastcgi/nginx/

设置fastcgi环境

否则你将不得不看看如何处理这个帖子看起来可以帮助的多个客户TCP server with multiple Clients