当前位置: 首页 > 编程语言 > C#

我的应用关闭后,端口还在监听,这是坏蛋吗?分享

时间:2023-04-10 14:05:28 C#

我的app关闭后端口还在监听,是不是ju-ju坏了?我的应用程序在某个端口上侦听套接字消息。我可以通过命令行中的“netstat-a”看到它正在监听。当我关闭应用程序时,当我重新运行“netstat-a”时,机器仍在那个端口上侦听这是一个问题吗?看起来可能确实如此,因为当我再次启动该应用程序时,它崩溃得非常厉害。我怎样才能使听力停止?usingSystem;使用System.Collections.Generic;使用System.ComponentModel;使用系统数据;使用系统绘图;使用System.Linq;使用系统文本;使用System.Windows.Forms;使用System.IO;使用System.Net;使用System.Net.Sockets;使用系统线程;使用系统诊断;命名空间testSocketSendAndReceive_Nutshell{publicpartialclassForm1:Form{stringsJerrysIPAddr="10.24.93.110";字符串sMyIPAddr="10.24.93.128";字符串sThisAppFileName=string.Empty;boolbThisInstanceFunctionsAsServer=false;内部静态Form1MainSocketPairForm=null;publicForm1(){InitializeComponent();MainSocketPairForm=这个;}privatevoidForm1_Load(objectsender,EventArgse){sThisAppFileName=System.Diagnostics.Process.GetCurrentProcess().ProcessName;//这仅提供应用程序名称,附加“.vshost”而不是“.exe”(testSocketSendAndReceive_Nutshell.vshost)lblFileName.Text=sThisAppFileName;//客户端t和服务器代码在这里合并在一个应用程序中;然而,我们希望每个实例都作为一个或另一个运行,因此(作为服务器运行的.exe应该使用文件名中某处的子字符串//“服务器”重命名):bThisInstanceFunctionsAsServer=sThisAppFileName.Contains("服务器”);如果(bThisInstanceFunctionsAsServer){newThread(Server).Start();//并发运行服务器方法。线程.睡眠(500);//给服务器启动时间。}btnSendMsg.Visible=!bThisInstanceFunctionsAsServer;textBox1.Visible=!bThisInstanceFunctionsAsServer;}staticvoidClient(){using(TcpClientclient=newTcpClient(Form1.MainSocketPairForm.sJerrysIPAddr,51111))//第二次这里出错using(NetworkStreamn=client.GetStream()){BinaryWriterw=newBinaryWriter(n);w.Write(Form1.MainSocketPairForm.textBox1.Text.ToString());w.Flush();Form1.MainSocketPairForm.label1.Text=newBinaryReader(n).ReadString();}}staticvoidServer(){Tcp侦听器listener=newTcpListener(IPAddress.Any,51111);监听器.Start();varshouldExit=false;while(!shouldExit)using(TcpClientc=listener.AcceptTcpClient()){using(NetworkStreamn=c.GetStream()){stringmsg=newBinaryReader(n).ReadString();if(msg=="exit")//客户端告诉我们退出...shouldExit=true;BinaryWriterw=newBinaryWriter(n);w。Write(msg+"backatcha!");w.Flush();//必须调用Flush,因为我们没有处理编写器。}}}privatevoidbutton1_Click(objectsender,EventArgse){Client();privatevoidbutton2_Click(objectsender,EventArgse){Close();您的应用程序可能不会真正退出(检查.exe的任务管理器“进程”选项卡)您可能只是关闭命令窗口以尝试关闭应用程序。因为你的服务器线程不是后台线程,它会一直运行。试试Form_Load里的这家伙:以上是C#学习教程:我的应用关闭后,端口还在监听,这是坏蛋吗?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——if(bThisInstanceFunctionsAsServer){varserverThread=newThread(Server);serverThread.IsBackground=true;//确保服务器线程不会让应用程序在后台运行serverThread.Start();//并发运行服务器方法。线程.睡眠(500);//给服务器启动时间。}本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: