sockets - Client to client direct chat through server vb.net -


using socket programming, i'm developing chatting application using vb.net. have manage established group chat using server , multi-client. want establish client client direct chat through server , want list down connected clients. if can guide me helpful.

imports system.net.sockets imports system.text module module1 dim clientslist new hashtable sub main()     dim serversocket new tcplistener(8888)     dim clientsocket tcpclient     dim counter integer      serversocket.start()     msg("chat server started ....")     counter = 0      while (true)         counter += 1         clientsocket = serversocket.accepttcpclient()          dim bytesfrom(10024) byte         dim datafromclient string          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("$"))          clientslist(datafromclient) = clientsocket          broadcast(datafromclient + " joined ", datafromclient, false)          msg(datafromclient + " joined chat room ")         dim client new handleclinet         client.startclient(clientsocket, datafromclient, clientslist)     end while      clientsocket.close()     serversocket.stop()     msg("exit")     console.readline() end sub  sub msg(byval mesg string)     mesg.trim()     console.writeline(" >> " + mesg) end sub private sub broadcast(byval msg string, _ byval uname string, byval flag boolean)     dim item dictionaryentry     each item in clientslist         dim broadcastsocket tcpclient         broadcastsocket = ctype(item.value, tcpclient)         dim broadcaststream networkstream = _                 broadcastsocket.getstream()         dim broadcastbytes [byte]()          if flag = true             broadcastbytes = encoding.ascii.getbytes(uname + " says : " + msg)         else             broadcastbytes = encoding.ascii.getbytes(msg)         end if          broadcaststream.write(broadcastbytes, 0, broadcastbytes.length)         broadcaststream.flush()     next end sub  public class handleclinet     dim clientsocket tcpclient     dim clno string     dim clientslist hashtable      public sub startclient(byval inclientsocket tcpclient, _     byval clineno string, byval clist hashtable)         me.clientsocket = inclientsocket         me.clno = clineno         me.clientslist = clist         dim ctthread threading.thread = new threading.thread(addressof dochat)         ctthread.start()     end sub      private sub dochat()         'dim infinitecounter integer         dim requestcount integer         dim bytesfrom(10024) byte         dim datafromclient string         dim sendbytes [byte]()         dim serverresponse string         dim rcount string         requestcount = 0          while (true)             try                 requestcount = requestcount + 1                 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("from client - " + clno + " : " + datafromclient)                 rcount = convert.tostring(requestcount)                  broadcast(datafromclient, clno, true)             catch ex exception                 msgbox(ex.tostring)             end try         end while     end sub  end class end module