作者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
1F:→ EricTsai:或是开另一个thread处理连线,我都这样,因为非同步不熟 09/24 20:25
2F:推 hsm926:请问另开thread怎麽做呢?非同步…我一直看msdn还是不太会 09/25 03:47
3F:→ hsm926:可以提供简单的范例或是较清楚的网页吗…感谢! 09/25 03:49