Swi*_*ice 5 c# asynchronous network-programming windows-phone windows-phone-7.1
我正在开发将连接到服务器的Windows Phone应用程序。当您按下登录按钮时,它通过使用ConnectAsync来做到这一点。但是,如果服务器已关闭,并且您想取消连接尝试,该怎么办?
这是当前的客户端代码,其中包括我最近尝试关闭套接字连接的最新信息。假定一旦知道如何关闭连接就可以轻松实现超时。
private IPAddress ServerAddress = new IPAddress(0xff00ff00); //Censored my IP
private int ServerPort = 13000;
private Socket CurrentSocket;
private SocketAsyncEventArgs CurrentSocketEventArgs;
private bool Connecting = false;
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
if (Connecting)
{
CurrentSocket.Close();
CurrentSocket.Dispose();
CurrentSocketEventArgs.Dispose();
CurrentSocket = null;
CurrentSocketEventArgs = null;
}
UserData userdata = new UserData();
userdata.Username = usernameBox.Text;
userdata.Password = passwordBox.Password;
Connecting = ConnectToServer(userdata);
}
catch (Exception exception)
{
Dispatcher.BeginInvoke(() => MessageBox.Show("Error: " + exception.Message));
}
}
private bool ConnectToServer(UserData userdata)
{
CurrentSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Create a new SocketAsyncEventArgs
CurrentSocketEventArgs = new SocketAsyncEventArgs();
CurrentSocketEventArgs.RemoteEndPoint = new IPEndPoint(ServerAddress, ServerPort);
CurrentSocketEventArgs.Completed += ConnectionCompleted;
CurrentSocketEventArgs.UserToken = userdata;
CurrentSocketEventArgs.SetBuffer(new byte[1024], 0, 1024);
CurrentSocket.ConnectAsync(CurrentSocketEventArgs);
return true;
}
Run Code Online (Sandbox Code Playgroud)
编辑:令我震惊的是,即使服务器软件未打开,还是服务器计算机会堆积在请求上?那可能吗?
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |