嘗試使用StreamSocket編寫簡單的代碼連接到IMAP服務器。它讀取服務器連接響應,但不會讀取任何其他內容。通過WinRT/C中的StreamSocket連接到IMAP#
private async void TCPTest(string hostName, string port)
{
status.Text = "start of TCPTest";
StreamSocket socket = new StreamSocket();
await socket.ConnectAsync(new HostName(hostName), port);
string senddata = "A001 login uuu ppp";
status.Text += "\n first reading...";
DataReader reader = new DataReader(socket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
await reader.LoadAsync(1024);
string data = reader.ReadString(reader.UnconsumedBufferLength);
status.Text += "\n > read " + data;
status.Text += "\n writing...";
writer = new DataWriter(socket.OutputStream);
writer.WriteString(senddata);
await writer.StoreAsync();
status.Text += "\n > wrote " + sendata;
status.Text += "\n second reading...";
writer = new DataWriter(socket.OutputStream);
await reader.LoadAsync(1024);
string data2 = reader.ReadString(reader.UnconsumedBufferLength);
status.Text += "\n >" + data2;
status.Text += "\n end of TCPTest";
}
這是我得到的輸出。
start of TCPTest
first reading...
> read * OK mydomain.com IMAP4rev1 MDaemon 13.0.1 ready
writing...
> wrote A001 login uuu ppp
second reading...
該應用程序從來沒有得到任何進一步的比這。沒有錯誤,它只是掛起。我在這裏做一些根本性的錯誤嗎?我的代碼是相同的(或多或少)作爲StreamSocket example on MSDN
你需要確定你寫的東西是否完成閱讀。 如果沒有,這可能會掛起插座或看起來沒有任何事情做。但沒有錯誤 –
我該怎麼做? while(reader.UnconsumedBufferLength> 0)或類似的東西? – roryok
忘記終止命令。衛生署。 – roryok