.net - VB.NET Listening Server is using max CPU -


i'm busy server -> client -> server software, client connects server , asking string, server responds back.

however, when multiple connections made, 4, cpu of computer raised 100%

here code.

imports system.net ' ipaddress imports system.net.sockets 'for tcplistener imports system.text  module module1 dim serveport integer = 28960 dim requestcount integer dim bytesfrom(10024) byte dim datafromclient string dim sendbytes [byte]() dim serverresponse string dim rcount string sub main()     dim serversocket new tcplistener(serveport)     dim clientsocket tcpclient     dim counter integer     console.title = ("server")     msg("starting server...")     serversocket.start()     msg("server started on port " & serveport)     msg("")     counter = 0      while (true)         counter += 1         clientsocket = serversocket.accepttcpclient()         if clientsocket.client.localendpoint.tostring = "127.0.0.1:28961"             clientsocket.close()             exit while         end if          msg("client " + clientsocket.client.localendpoint.tostring + " connected.")         dim client new handleclinet         dim networkstream networkstream = _                         clientsocket.getstream()         client.startclient(clientsocket, convert.tostring(counter))      end while      clientsocket.close()     serversocket.stop()      console.readline() end sub  sub msg(byval mesg string)     mesg.trim()     console.writeline(mesg) end sub  public class handleclinet     dim clientsocket tcpclient     dim clno string     public sub startclient(byval inclientsocket tcpclient, _     byval clineno string)         me.clientsocket = inclientsocket         me.clno = clineno         dim ctthread threading.thread = new threading.thread(addressof dochat)         ctthread.start()     end sub     private sub dochat()         requestcount = 0          while (true)             try                 requestcount = requestcount + 1                 dim ip string = clientsocket.client.localendpoint.tostring                 dim networkstream networkstream = _                         clientsocket.getstream()                 networkstream.read(bytesfrom, 0, cint(clientsocket.receivebuffersize))                 datafromclient = system.text.encoding.ascii.getstring(bytesfrom)                 datafromclient = _                 datafromclient.substring(0, datafromclient.indexof("$"))                 msg("<< " & datafromclient)                 rcount = convert.tostring(requestcount)                  if datafromclient.tolower = "hydra_ver"                     serverresponse = "0.94"                 else                    serverresponse = "unknown command"                 end if                   else                     serverresponse = "unknown command"                 end if                 sendbytes = encoding.ascii.getbytes(serverresponse)                 networkstream.write(sendbytes, 0, sendbytes.length)                 networkstream.flush()                 msg(">> " & serverresponse)             catch ex exception              end try          end while      end sub end class end module 

wow.

you're opening , closing connections in forever loop?

make socket listener, handle stream events. c# i'm sure you've gotten used back-dating vbnet now.

public void portsocketlistener()  {     socket listensocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);     ipaddress hostip = (dns.resolve(ipaddress.any.tostring())).addresslist[0];     ipendpoint ep = new ipendpoint(hostip, 28961);     listensocket.bind(ep);     listensocket.listen(1); } 

Comments

Popular posts from this blog

javascript - JS causing window size to be bigger than necessary - Dropdown bug -

How to mention the localhost in android -

php - Calling a template part from a post -