TCP listener

調試時未關閉以前開啓的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)

相關文章
相關標籤/搜索