Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建TCP/IP服务器的窗口服务-聊天应用程序_C#_Winforms_Windows Services_Tcp Ip_Tcplistener - Fatal编程技术网

C# 创建TCP/IP服务器的窗口服务-聊天应用程序

C# 创建TCP/IP服务器的窗口服务-聊天应用程序,c#,winforms,windows-services,tcp-ip,tcplistener,C#,Winforms,Windows Services,Tcp Ip,Tcplistener,我有一个客户机和一个服务器,在网络中使用TCP/IP协议进行通信。每当我在VisualStudio中启动应用程序时。我有一个按钮启动服务器并监听客户端请求 现在我正在尝试在窗口服务中创建StartListening按钮,而不需要单击按钮进行监听 以下是服务器代码: protected override void OnStart(string[] args) { Thread thread = new Thread(StartListening); } public void Start

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

现在我正在尝试在窗口服务中创建
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();
    }
}

注意:
//逻辑中
在上面的代码中,我应该放置什么东西来与客户端通信服务器?

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

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

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

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

回复客户端:
socket.Send(asen.GetBytes(“回复”)
回复客户端:
socket.Send(asen.GetBytes(“回复”)

您忘了按服务启动时显而易见的方式启动线程。editWell不,不是。询问插入什么代码来与客户机通信是有点多余的,如果它从未到达那里,那么您忘记了以服务启动时显而易见的方式启动线程。editWell不,不是。如果请求插入什么代码来与客户机进行通信,而该代码从未到达客户机,那么这就有点多余了