Only one usage of each socket address (protocol/network address/port) is normally permitted - C#


hi encounter above error when tick , untick checkbox on form. code below

  public void udplisten()          {              try              {                  //e = new emailsetup();                  //e.showdialog();                  //re = e.getemail();                  //debug.write(re);                  // construct socket , bind trap manager port 162                   socket socket = new socket(addressfamily.internetwork, sockettype.dgram, protocoltype.udp);                  ipendpoint ipep = new ipendpoint(ipaddress.any, 162);                  endpoint ep = (endpoint)ipep;                  socket.bind(ep);                  // disable timeout processing. block until packet received                   socket.setsocketoption(socketoptionlevel.socket, socketoptionname.receivetimeout, 0);                           bool run = true;              while (run)              {                  byte[] indata = new byte[16 * 1024];                  // 16kb receive buffer                   int inlen = 0;                  ipendpoint peer = new ipendpoint(ipaddress.any, 0);                  endpoint inep = (endpoint)peer;                  try                  {                      inlen = socket.receivefrom(indata, ref inep);                  }                  catch (exception ex)                  {                      console.writeline("exception {0}", ex.message);                      inlen = -1;                  }

my checkbox code 

 if (chktraps.checked)              {                  trap = new traps();                                    thread othread = new thread(new threadstart(trap.udplisten));                  othread.start();                                } 

you can't have 2 different sockets listening on same port number.  listener should started once.  you put code in class constructor async event can continue runnning other code whiee wait incoming data (non blocking) .  code blocking.  simple have a test doens't start listener if started.

a form project automatically blocking.  there built in infinite loop program doesn't terminate.  gets run off of event.  code added a 2nd block form whichisn't required.

the website below shows async listener class.  code meants console application, , in form project can eliminate manualresetevent.  simple call function dobeginaccepttcpclient once in code start listener , let function return without blocking parent function.  every time receive message ocurs code execute event doaccepttcpclientcallback.


jdweng



Visual Studio Languages  ,  .NET Framework  >  Visual C#



Comments

Popular posts from this blog

Azure DocumentDB Owner resource does not exist

job syspolicy_purge_history job fail in sqlserver 2008

Trying to register with public marketplace error with 'Get-AzureStackStampInformation'