Tôi đang xây dựng một ứng dụng IRC trong khung công tác WinRT (.NET 4.5
) mới cho các ứng dụng Windows 8 Metro.WinRT - TCP clients?
Tuy nhiên, tôi có một số vấn đề. Tôi đã tìm ra rằng tôi cần phải sử dụng StreamSocket
để đọc dữ liệu TCP, nhưng tôi có thể đang làm điều gì đó sai.
Lý do tôi tin rằng điều này là do tôi không nhận được bất kỳ dữ liệu nào.
Dưới đây bạn sẽ thấy mã của tôi. Tôi đã không thể tìm thấy bất kỳ mẫu mã nào trên web liên quan đến điều này.
class IRCClient
{
private StreamSocket tcpClient;
public string Server = "holmes.freenode.net";
public int Port = 6665;
public IRCClient()
{
tcpClient = new StreamSocket();
}
public async void Connect()
{
await tcpClient.ConnectAsync(
new Windows.Networking.HostName(Server),
Port.ToString(),
SocketProtectionLevel.PlainSocket);
DataReader reader = new DataReader(tcpClient.InputStream);
string data = reader.ReadString(reader.UnconsumedBufferLength);
MessageDialog dialog = new MessageDialog(data);
}
}
Dữ liệu luôn là một chuỗi rỗng sau mã đó. Hơn nữa, UnconsumedBufferLength luôn trả về 0.
Làm thế nào?
suy nghĩ ngẫu nhiên; bạn đã thử các phương thức async chưa? có lẽ họ muốn sử dụng async? –
Có, không có gì được nhận vào thời điểm kết nối được thực hiện. Bạn sẽ phải gọi ReadAsync() trên InputStream. –
Xin lỗi, chỉ là một giả định hoang dã, nhưng không phải IRC yêu cầu kết nối UDP đa hướng? – Haspemulator