Создание службы окон сервера TCP / IP - приложение чата - PullRequest
0 голосов
/ 10 июня 2018

У меня есть клиент и сервер, который общается в сети по протоколу TCP / IP.Всякий раз, когда я запускаю приложение в Visual Studio.У меня есть кнопка StartListening , которая запускает сервер и прослушивает запросы клиентов.

Теперь я пытаюсь создать эту кнопку StartListening в Window Service, и мне не нужно нажиматьна кнопку для прослушивания.

Вот код сервера:

protected override void OnStart(string[] args)
{
    Thread thread = new Thread(StartListening);
}

public void StartListening()
{
    IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
    int nPort = 8001;
    TcpListener tcpListener = new TcpListener(ipAddress,nPort);
    tcpListener.Start();

    byte[] bytes = new byte[256];

    while (true)
    {
        Socket socket = tcpListener.AcceptSocket();

        int res = socket.Receive(bytes);
        ASCIIEncoding asen = new ASCIIEncoding();
        string str = asen.GetString(bytes);
        //logic

        socket.Close();
    }
}

Примечание: В //logic в приведенном выше коде, что я должен разместить для связи с серверомс клиентами?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Ответить вашему клиенту: socket.Send(asen.GetBytes("reply"));

0 голосов
/ 10 июня 2018

Я думаю, что два потока не работают, потому что, хотя True является потоком и фактически два потока не работают одновременно, здесь код может решить вашу проблему

Thread thread = new Thread(new ThreadStart(//Your method name here));
thread.start();
...