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