【问题标题】:Creating Window Service of TCP/IP server - Chat Application创建 TCP/IP 服务器的窗口服务 - 聊天应用程序
【发布时间】:2018-11-19 23:52:14
【问题描述】:

我有一个客户端和一个服务器,它们使用 TCP/IP 协议在网络中进行通信。每当我在 Visual Studio 中启动应用程序时。我有一个按钮 StartListening 可以启动服务器并监听客户端请求。

现在我正在尝试将 StartListening 按钮创建到一个窗口服务中,并且不需要单击按钮进行收听。

这是一个服务器代码:

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 中,我应该放置什么东西来与客户端进行通信?

【问题讨论】:

  • 对了,你忘记启动话题了
  • 这对于服务启动是显而易见的。编辑
  • 不,不是。如果它永远不会到达那里,那么询问要插入什么代码来与客户端通信有点多余

标签: c# winforms windows-services tcp-ip tcplistener


【解决方案1】:

我认为两个线程不工作,因为 True 是线程,实际上两个线程不能同时工作,这里的代码可能会解决你的问题

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

【讨论】:

    【解决方案2】:

    回复您的客户:socket.Send(asen.GetBytes("reply"));

    【讨论】:

      猜你喜欢
      • 2011-08-02
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 2011-12-26
      相关资源
      最近更新 更多