The same way that you open one!
In the the client just create two Sockets and connect them both to the server. At the server you will get two accepts, and thus two ServerSockets. Now you can use one pair of sockets for the file xfer and the other pair for chat.
Yes. Provided your server has enough capacity you can have many many clients (each with one or more connections) all communicating at the same time. Each connection just starts a new Thread on the server.
In your server you have a loop that starts with a accept(). When you get an incoming connection the accept returns you a ServerSocket. You then start a new Thread, passing in that ServerSocket, and process all the I/O for that connection in that thread. Your loop then goes back to waiting for another incoming connection.
Server-It ill keep on running to accept the connection...... When it is accept a connection it ill open an frame with chat and send file ....... If a new connection will came it ill again open a frame with chat and send file.....
For Each ctrl As Control In Me.Controls("pnlMainPanel").Controls
If ctrl.GetType Is GetType(System.Windows.Forms.Panel) Then
For Each subCtrl As Control In ctrl.Controls
If subCtrl.GetType Is GetType(System.Windows.Forms.TextBox) Then
If subCtrl.GetType Is ...