作者liunate ( )
看板C_Sharp
標題Re: [問題] socket TcpLintener server端使用畫面卡住
時間Thu Sep 24 18:40:58 2009
※ 引述《hsm926 (韓森慢)》之銘言:
: 如題我在寫server和client時,一旦server開始listener時
: 視窗就會卡住,直到接受到client端的資料,並處理完之後
: 關閉socket和timer才會恢復,並顯示運算結果…
: 這是我socket寫的語法
: 一開始宣告
: Socket socketForClient;
: TcpListener tcpListener;
: NetworkStream networkStream;
: StreamWriter streamWriter;
: StreamReader streamReader;
: 按start後,接下面
: tcpListener = new TcpListener(1234);
: tcpListener.Start();
峎就沒碰,大概是這邊?當Server端開始監聽特定port時(tcpListener.Start)
目前程式的執行序(Thread)就被佔用住了,所以才會造成你覺得視窗卡住的感覺
你可以參考一下TcpListener是否有非同步的監聽方法(StartXXX, EndXXX這類)
如果想了解這種非同步的程式執行方式,還得看看MSDN相關文章囉
: socketForClient = tcpListener.AcceptSocket();
: networkStream = new NetworkStream(socketForClient);
: streamWriter = new StreamWriter(networkStream);
: streamReader = new StreamReader(networkStream);
: 接收並處理完之後
: streamWriter.Flush();
: timer1.Enabled = false;
: socketForClient.Close();
: 麻煩專業的高手 幫忙解答…問題出在哪?
: 小弟能力不足,MSDN看不是很懂…
--
XBOX LIVE ID: liunate
目前常玩的連線有: GoW2, Halo3
家裏居住地區有幸可以牽光纖雙向5M/5M
開站應該大家會很順,歡迎來連線 :]
萬年徵求長期組隊中手以上GoW公開網路遊戲、Halo3排名隊友
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.50.58.68
→ EricTsai:或是開另一個thread處理連線,我都這樣,因為非同步不熟 09/24 20:25
推 hsm926:請問另開thread怎麼做呢?非同步…我一直看msdn還是不太會 09/25 03:47
→ hsm926:可以提供簡單的範例或是較清楚的網頁嗎…感謝! 09/25 03:49