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

BizTalk Server 2013 Azure VM Log Shipping and HA for hosts

How to Share webservice object to all user