正在创建 TCP/IP 服务器的 Window 服务 - 聊天应用程序
Creating Window Service of TCP/IP server - Chat Application
我有一个客户端和一个服务器,它们使用 TCP/IP 协议在网络中进行通信。每当我在 Visual Studio 中启动应用程序时。我有一个启动服务器并监听客户端请求的按钮 StartListening。
现在,我正在尝试将 StartListening
按钮创建到 Window 服务中,无需单击按钮即可收听。
这是一个服务器代码:
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
中,我应该放置什么东西来与客户端通信?
我认为两个线程不工作,因为虽然 True 是线程,但实际上两个线程不能同时工作,这里的代码可能会解决您的问题
Thread thread = new Thread(new ThreadStart(//Your method name here));
thread.start();
回复您的客户:socket.Send(asen.GetBytes("reply"));
我有一个客户端和一个服务器,它们使用 TCP/IP 协议在网络中进行通信。每当我在 Visual Studio 中启动应用程序时。我有一个启动服务器并监听客户端请求的按钮 StartListening。
现在,我正在尝试将 StartListening
按钮创建到 Window 服务中,无需单击按钮即可收听。
这是一个服务器代码:
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
中,我应该放置什么东西来与客户端通信?
我认为两个线程不工作,因为虽然 True 是线程,但实际上两个线程不能同时工作,这里的代码可能会解决您的问题
Thread thread = new Thread(new ThreadStart(//Your method name here));
thread.start();
回复您的客户:socket.Send(asen.GetBytes("reply"));