我正在研究應該收集所有傳入的TCP/IP流與這個類的Windows服務。它從服務OnStart()void開始。C#TCP/IP無法正常工作
但是我遇到過,當來自第二個發件人的郵件進入時,整個通信停止工作。直到您重新啓動後,該服務纔會對單個連接做出反應。
public class TCPIP
{
public static Receiver rc = new Receiver();
public class Receiver
{
public delegate void ReceivedEventHandler(string ReceivedText, string Sender);
public event ReceivedEventHandler Received;
public void Start()
{
System.Threading.Thread th = new System.Threading.Thread(internals);
th.Start();
}
private void internals()
{
TcpListener _listener = new TcpListener(1994);
_listener.Start();
while (true)
{
TcpClient rcclient = _listener.AcceptTcpClient();
StreamReader reader = new StreamReader(rcclient.GetStream());
string msg = "";
while (reader.Peek() > -1)
{
msg += Convert.ToChar(reader.Read()).ToString();
}
Received(msg, rcclient.Client.RemoteEndPoint.ToString().Split(Convert.ToChar(":"))[0]);
// Cleanup
rcclient.Close();
reader.Close();
}
}
任何人可以幫助我提高了這個類來回答多個端點連接,並沒有一個後會佔用?
非常感謝您提前。
當您追蹤它時會發生什麼 – BugFinder
_「所有傳入的TCP/IP消息」_ - TCP在流中處理,而不是消息。無論如何,如果你想捕獲所有數據包,你需要一個網絡過濾器驅動程序,你不能在C#中完成。 – CodeCaster
謝謝,是的,我只說一個端口,但對於多個端點。 – Fabi