【发布时间】:2010-07-08 21:47:40
【问题描述】:
我写了下面的代码从用户那里得到一个字符串(加密的),我需要使用一个线程。
TcpListener TCPListen = new TcpListener(IP2, port);
TCPListen.Start();
TcpClient TCP = TCPListen.AcceptTcpClient();
NetworkStream NetStream = TCP.GetStream();
RijndaelManaged RMCrypto = new RijndaelManaged();
byte[] Key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 };
byte[] IV = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 };
CryptoStream CryptStream = new CryptoStream(NetStream,
RMCrypto.CreateDecryptor(Key, IV),
CryptoStreamMode.Read);
StreamReader SReader = new StreamReader(CryptStream);
我的问题是我应该在 TCPListen.Start(); 之后使用线程;否则会出错**(每个套接字地址(协议/网络地址/端口)通常只允许使用一次)** 我该如何解决这个问题?
【问题讨论】:
-
所以我认为你想接受客户端连接,然后将 TcpClient 工作移动到另一个线程,允许主线程接受另一个客户端。对吗?
-
这在 MSDN 上有很好的描述。你可能想看看那里;这个问题(stackoverflow.com/questions/706117/socket-programming/…)也很相似。
标签: c#