Как добавить параметр TcpClient в обработчик событий DataReceived SimpleTCP? - PullRequest
0 голосов
/ 12 октября 2018

Я запутался, как добавить параметры в обработчик событий DataReceived SimpleTCP.

Вот мое кодирование:

private void Form1_Load(object sender, EventArgs e)
{
        server = new SimpleTcpServer();
        server.Delimiter = 0x13; //Enter
        server.StringEncoder = System.Text.ASCIIEncoding.ASCII;
        server.DataReceived += Server_DataReceived;
        server.ClientConnected += Server_ClientConnected;
        server.ClientDisconnected += Server_ClientDisconnected;
    }

Обработчик события вызова DataReceived

server.DataReceived += Server_DataReceived;

Иэтот код функции Server_DataReceived

private void Server_DataReceived(object sender, SimpleTCP.Message e, TcpClient client)
    {

        listView1.Invoke((MethodInvoker)delegate ()
        {
            string json = e.MessageString.Remove(e.MessageString.Length - 1);
            S3Object s3obj = JsonConvert.DeserializeObject<S3Object>(json);
            ListViewItem lv = new ListViewItem(s3obj.id);
            lv.SubItems.Add(s3obj.bucket);
            lv.SubItems.Add(s3obj.objects);
            listView1.Items.Add(lv);
        });

    }

У меня есть ошибка в этом Ошибка на сервере.DataReceived + = Server_DataReceived;

Спасибо, ребята

1 Ответ

0 голосов
/ 16 октября 2018

Я предполагаю, что вы используете библиотеку SimpleTCP от BrandonPotter.Пожалуйста, добавьте информацию об используемых сторонних библиотеках в свой Вопрос, так как другим будет намного легче помочь.

Объект Message, переданный в событии DataReceived и DelimiterDataReceived, содержит свойство TcpClientэто информация, которая вам нужна.Поэтому вам не нужен дополнительный параметр.

Я думаю, вам лучше использовать DelimiterDataReceived, поэтому ваш код будет выглядеть так:

private void Server_DelimiterReceived(object sender, SimpleTCP.Message e, TcpClient client)
{
    listView1.Invoke((MethodInvoker)delegate ()
    {
        string json = e.MessageString;
        S3Object s3obj = JsonConvert.DeserializeObject<S3Object>(json);
        ListViewItem lv = new ListViewItem(s3obj.id);
        lv.SubItems.Add(s3obj.bucket);
        lv.SubItems.Add(s3obj.objects);
        listView1.Items.Add(lv);

        TcpClient client = e.TcpClient;
        // do something with the client...
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...