調試時未關閉以前開啓的TCP SERVER; 應該關閉;api
TcpListener服務器
TcpClient網絡
一、開啓TCP listenersocket
(1)Start()方法失敗tcp
異常位置:該異常的產生位置爲spa
tcpsever = new TcpListener(myIP, myport); tcpsever.Start();
執行Start()方法後產生的異常ex的消息;.net
現象:即本地已經已經有myIP,myport的服務器在監聽狀態了,ip和port已經被佔用了,這時候要在開啓一樣IP和PORT的服務器就會出錯;這是能夠驗證的,經過在本地用網絡調試助手建立一個tcp client鏈接上述ip和port,鏈接成功則說明存在上述服務器;調試
緣由:發生上述狀況是由於程序在退出時未中止tcp監聽,可使用Stop方法來關閉TcpListener和中止偵聽。 你負責分別關閉所接受的鏈接;code
tcpserver.Stop();
二、關閉TCP Listenerserver
(1)關閉整個listener
tcpserver.Stop();
(2)僅關閉某個TCP鏈接
關閉與實例化的TcpClient對象的鏈接:tcpclient1
tcpclient1.close();
問題:程序關閉時,TCP Listener監聽是否會被銷燬?
目前,代碼未在任何地方調用TCP Listener的Stop()方法,只調用了Start()方法,發現關閉應用程序時,該IP和port的監聽都不存在了;
關閉應用程序:一、應用程序窗口的關閉按鈕;二、任務管理器的結束任務
吳-服務器程序:
項目打開時,就發現有port爲8011的TCPListener的監聽,此時程序還未調試,只是加載了項目代碼;關閉項目代碼後,發現port爲8011的TCPListener的監聽也關閉了;
緣由:項目打開時,除了運行了界面加載的代碼如InitializeComponent()之類,也運行了TCPListener的Start()方法,卻沒有運行Stop()方法,致使調試的時候又運行了一遍Start()方法,方法的參數相同,因此出錯;
由此,哪些代碼在項目加載的時候就運行了?
TCPClient newClient = new TCPClient();//EndAcceptTcpClient 是和BeginAcceptTcpClient配套使用的 newClient.NetWork = server.EndAcceptTcpClient(o)