作者powerjj (ya)
看板C_Sharp
标题[问题] 请问非同步连线的问题
时间Wed Oct 16 17:03:25 2013
小弟刚开始接触Socket连线,并且正在尝试非同步连线中,在程式码部分主要是都是参考
http://renjin.blogspot.tw/2009/02/asynchronous-tcp-client-using-c.html
这个网站的写法,而目前我主要遇到的问题部分的程式码如下
public void SendData(IAsyncResult ar){
StateObject state = (StateObject)ar.AsyncState;
TcpClient client = state.Client;
try{
NetworkStream stream = client.GetStream();
stream.EndWrite(ar);
if(stream.CanRead){
System.WriteLine(“1”);
stream.BeginRead(myBuffer, 0, bufferSize,
new AsyncCallback(ReadCallback), state);
System.WriteLine(“3”);
}
}catch(Exception ex){
Debug.Log("Exception:"+ex);
}
}
在传完资料後要再呼叫ReadCallback来读Server端丢给我的东西,有时候可以读取,
可是有时候却无法读取?
应该说当我传特定的资料给公司的Server时,完全不会进入ReadCallback函式?
如我程式码所写我在呼叫的地方有标记显示1和3,ReadCallback中会显示2
正常执行时直接显示1 2 3,然後就对封包进行处理,但传特定资料时竟然只跑1 3
当然也没有後续动作...
我的疑问是,既然if(stream.CanRead)都成立了,应该是代表有封包进来了?
那为什麽无法呼叫ReadCallback?
毕竟我每个丢资料的函式都是靠SendData()来写,应该没有甚麽格式不合的状况吧?
我完全卡死在这边了= = 拜托有没有熟悉非同步连线的高手能释义一下
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.249.2.10
1F:→ Harper34:CanRead只代表能读取 有资料是DataAvailable 那范例写错 10/17 11:10