title: What does "Either the application has not called WSAStartup, or WSAStartup failed" mean?
body: <p>I am trying to develop software that connects to a web-server through a network; everything works fine until trying to use a dongle to protect my software. My dongle has some network feature and it's API work under network infrastructure. wWhen I added the Dongle checking code to my program I got this error:</p>
  
  <pre><code>"Either the application has not called WSAStartup, or WSAStartup failed"  
  </code></pre>
  
  <p>I put the block of code which throw the exception. The scenario which I got the exception is; I logged in into the program (everything works fine) then plug out the dongle and then the program stop and ask for dongle and I plug in the dongle again and try to log in but I got a exception on line </p>
  
  <blockquote>
    <p>response = (HttpWebResponse)request.GetResponse();</p>
  </blockquote>
  
  <pre><code>DongleService unikey = new DongleService();
  
                  checkDongle = unikey.isConnectedNow();
  
                  if (checkDongle)
                  {
                      isPass = true;
                      this.username = txtbxUser.Text;
                      this.pass = txtbxPass.Text;
                      this.IP = combobxServer.Text;
                      string uri = @"https://" + combobxServer.Text + ":5002num_events=1";
                      request = (HttpWebRequest)WebRequest.Create(uri);
                      request.Proxy = null;
                      request.Credentials = new NetworkCredential(this.username, this.pass);
                      ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) =&gt; true);
                      response = (HttpWebResponse)request.GetResponse();
  
                      Properties.Settings.Default.User = txtbxUser.Text;
                      int index = _servers.FindIndex(p =&gt; p == combobxServer.Text);
                      if (index == -1)
                      {
                          _servers.Add(combobxServer.Text);
                          Config_Save.SaveServers(_servers);
                          _servers = Config_Save.LoadServers();
                      }
  
                      Properties.Settings.Default.Server = combobxServer.Text;
                      // also save the password
                      if (checkBox1.CheckState.ToString() == "Checked")
                          Properties.Settings.Default.Pass = txtbxPass.Text;
  
                      Properties.Settings.Default.settingLoginUsername = this.username;
                      Properties.Settings.Default.settingLoginPassword = this.pass;
                      Properties.Settings.Default.settingLoginPort = "5002";
                      Properties.Settings.Default.settingLoginIP = this.IP;
                      Properties.Settings.Default.isLogin = "guest";
  
                      Properties.Settings.Default.Save();
                      response.Close();
                      request.Abort();
                      this.isPass = true;
                      this.Close();
                  }
                  else
                  {
                      MessageBox.Show("Please Insert Correct Dongle!", "Dongle Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                  }
  </code></pre>