我的TCP / IP服务器Windows服务代码有什么问题?

时间:2016-09-28 09:04:47

标签: c# multithreading tcp clients

我创建了一个服务,即启动服务器和线程OnStart,并关闭服务器OnStop。

我的代码与我通过此端口连接的1台设备运行良好。 我要连接的第二个设备没有来自服务器的响应。

我有点唠叨,所以,有人可以看看我的代码并告诉我什么是错的,为什么不与多个客户合作?还是多线程?

对不起我的英语......我在学校没有学到它:)。

以下是代码:

    int i;
    TcpListener server = new TcpListener(IPAddress.Any, 9101);
    NetworkStream stream;
    TcpClient client;
    byte[] datalength = new byte[4];

public void ServerReadSend()         {

           stream = client.GetStream();
            new Thread(() =>
            {
                while ((i = stream.Read(datalength, 0, 1)) != 0)
                {
                byte[] data = new byte[BitConverter.ToInt32(datalength, 0)];
                    stream.Read(data, 0, data.Length);
                    d = Encoding.Default.GetString(data);

                    d = d.Replace("\0", "");
                    d = d.Replace("\n", "");

                    SOME CODE HERE

                    ServerSend(SOME STRING HERE);

                }
            }).Start();

    } 


    public void ServerSend(string msg)
    {
        stream = client.GetStream();
        byte[] data;
        data = Encoding.Default.GetBytes(msg);
        int length = data.Length;
        byte[] datalength = new byte[4];
        datalength = BitConverter.GetBytes(length);
        stream.Write(datalength, 0, 1);
        stream.Write(data, 0, data.Length);
    }



    protected override void OnStart(string[] args)
    {

        server.Start();
        new Thread(() =>
        {
            client = server.AcceptTcpClient();
            if (client.Connected)
            {
                ServerReadSend();
            }
        }).Start();
    }

    protected override void OnStop()
    {
        server.Stop();
        server = null;

    }

我通过端口9101连接的设备是扫描仪,它们正在从数据库中读取一些信息。从数据库返回的信息由服务器发送回客户端。并且与1个设备配合得很好。因此,这仅在扫描时进行。我们可以在服务器发送信息后关闭连接并添加新连接吗?

0 个答案:

没有答案