TcpClient - 在回调时从客户端接收多条消息

时间:2017-07-13 16:19:28

标签: c# tcp tcpclient

我正在尝试创建一个TCP侦听器,它接收客户端,使它们保持打开状态,以及何时向数据调用发送回调方法。 我似乎无法找到如何添加回调以及如何保持客户端打开。

我目前的代码如下:

 protected void Listener()
    {
        TcpListener __Listener = new TcpListener(System.Net.IPAddress.Any, Port);
        __Listener.Start();
        long _TicketNo = 0;

        while (IsRunning)
        {
            client = __Listener.AcceptTcpClient();

            _TicketNo++;

            RFIDReaderCommunication work = new RFIDReaderCommunication(client);
            Trigger(work.process());

            System.Threading.Thread.Sleep(100);
        }
    }

work.process()只是从网络流中读取字节。

但这仅从客户端接收一次数据。 任何人都可以提示如何从这个单一连接多次接收数据吗?

1 个答案:

答案 0 :(得分:0)

你的循环中有client。这意味着只要循环返回到顶部,您就会阻止等待下一个传入连接,然后覆盖tags: true, width: '100%', multiple: false, createTag: function (params) { return { id: params.term, text: params.term, newTag: true } }, insertTag: function (data, tag) { data.push(tag); }, ajax: { delay: 250, transport: function (params, success, failure) { success([""]); if (params.data.term !== undefined) { axios({ url: vm.$webRoute('ajaxController'), responseType: 'json', method: 'post', timeout: 1000, data: { q: params.data.term } }).then(function(response){ if (response == -1) { failure(); }else{ success(response); } }).catch(function (error) { failure(); }); } }, processResults: function (data) { var mappedData = [{}]; if (data[0].data !== undefined) { var mappedData = _.map(data[0].data, function(o){ //process data return {id: o.member_number, text: text}; }) }else if(data[0].id !== undefined){ mappedData.push({id: data[0].id, text: data[0].text}); } return { results: mappedData, pagination: { more: false } }; } }, maximumSelectionSize: 1, 变量。

首先,将此行移到循环上方。