[問題] 請問非同步連線的問題
小弟剛開始接觸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
→
10/17 11:10, , 1F
10/17 11:10, 1F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章