【发布时间】:2016-03-17 22:54:28
【问题描述】:
我有以下代码可以在我的计算机上侦听 localhost 上的 TCP/IP 连接。当我运行应用程序(WPF 应用程序)时,我收到以下错误消息。
感谢任何帮助。
谢谢。
更新代码:
try
{
string sConnectionString = "Data Source=xxxx;Initial Catalog=xxxx;Integrated Security=false;User ID=xxxx;Password=xxxx";
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
Console.WriteLine("Starting TCP listener...");
TcpListener listener = new TcpListener(ipAddress, 13002);
listener.Start();
while (true)
{
Console.WriteLine("Server is listening on " + listener.LocalEndpoint);
Socket client = listener.AcceptSocket();
var childSocketThread = new Thread(() =>
{
byte[] data = new byte[100];
int size = client.Receive(data);
string incomingMess = " ";
for (int i = 0; i < size; i++)
incomingMess = incomingMess + Convert.ToChar(data[i]);
Console.WriteLine("---> Message recorded in DB");
Console.WriteLine(System.Environment.NewLine);
SqlConnection con = new SqlConnection(sConnectionString);
string regMess = "insert into Messages(incomingMessage) values(@incomingMessage_param)";
SqlCommand regMessCommand = new SqlCommand(regMess, con);
con.Open();
regMessCommand.Parameters.AddWithValue("@incomingMessage_param", incomingMess);
regMessCommand.ExecuteNonQuery();
con.Close();
client.Close();
});
childSocketThread.Start();
}
listener.Stop();
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.StackTrace);
Console.ReadLine();
}
【问题讨论】:
-
错误信息是什么?--您只是向我们展示了 StackTrace。
-
看到来自
System.Net.Sockets.Socket.Bind(EndPoint localEP)的堆栈跟踪可能是因为其他东西在监听它而无法绑定到端口 13000? -
是的 - 错误是什么?不过,不要将该代码放入构造函数中,请使用 Window.Loaded 或计时器延迟。
-
确保你的防火墙允许你绑定。联网时,我建议最初关闭防火墙,然后在最后重新打开
-
@JeffRSon——哦,是的,哇。我错过了。如果侦听器工作,窗口将永远不会显示 - 代码被设计为永远循环,并且由于它位于窗口构造函数中,因此该窗口将永远无法显示,除非您在构造函数中遇到异常。
标签: c# tcplistener