【发布时间】:2015-05-19 16:59:07
【问题描述】:
所以我有一个客户端服务器模型,它基于使用 TCPClient 的流并将其转换为 SSLStream 以用于安全目的,但每次客户端想要向服务器发送新内容时,它都会打开与服务器的新 TCP 连接当服务器结束连接时。我将如何监听来自同一流的其他请求?不知道如何,这就是为什么我要在最后杀死流。很抱歉,如果它令人困惑,如果不能理解,我可以修改。谢谢!
public void ServerListen()
{
TCPListener Server = new TCPListener(IPAddress.Any, 8001);
while (true)
{
Server.Start();
TCPClient TempClient = Server.AcceptTCPClient();
HandleRequest NewRequest = new HandleRequest(TempClient); // Send to a data handler class and open a separate thread to allow for additional clients to connect
}
}
public class HandleRequest
{
TCPClient WorkingClient;
public HandleRequest(TCPClient TempClient)
{
WorkingClient = TempClient;
(new Thread(new ThreadStart(DoWork))).Start();
}
public static void DoWork()
{
// Do Something Here With Data From Client
ProvideResponse(SomeData);
}
public static void ProvideResponse(object Data)
{
SSLStream SecureStream = new SSLStream(WorkingClient, false); // Kill inner stream after creating a secure connection
SecureStream.AuthenticateAsServer(MyCertificate, false, SslProtocols.Tls, true);
XmlSerializer XS = new XMLSerializer(typeof(someclass));
someclass TempObject = new someclass(){ InnerData = Data};
if (SecureStream.CanWrite)
{
XS.Serialize(SecureStream, TempObject);
}
SecureStream.Close();
}
}
【问题讨论】: