let' run this script locally to see how it does its stuff (the client and server can also be run on different machinesas in prior socket examplesfirstwe'll assume we've already started this server script on the local machine in one windowand run few clients to talk to it the following listing gives the interaction in two such client console windows running on windows the first client simply runs the echo-client script twice to contact the serverand the second also kicks off the testecho script to spawn eight echo-client programs running in parallel as beforethe server simply echoes back whatever text that client sendsthough without sleep pause here (more on this in momentnotice how the second client window really runs script called echo-client- so as to connect to the second port socket in the serverit' the same as echo-clientwith different hardcoded port numberalasthe original script wasn' designed to input port number[client window :\pp \internet\socketspython echo-client py client receivedb"echo=> 'hello network worldat sun apr : : :\pp \internet\socketspython echo-client py client receivedb"echo=> 'hello network worldat sun apr : : [client window :\pp \internet\socketspython echo-client- py localhost sir galahad client receivedb"echo=> 'sirat sun apr : : client receivedb"echo=> 'galahadat sun apr : : :\pp \internet\socketspython testecho py the next listing is the sort of output that show up in the window where the server has been started the first three connections come from echo-client runsthe rest is the result of the eight programs spawned by testecho in the second client window we can run this server on windowstoobecause select is available on this platform correlate this output with the server' code to see how it runs notice that for testechonew client connections and client inputs are multiplexed together if you study the output closelyyou'll see that they overlap in timebecause all activity is dispatched by the single event loop in the server in factthe trace output on the server will probably look bit different nearly every time it runs clients and new connections are interleaved almost at random due to timing differences on the host machines this happens in the earlier forking and treading serverstoobut the operating system automatically switches between the execution paths of the dispatcher loop and client transactions also note that the server gets an empty string when the client has closed its socket we take care to close and delete these sockets at the server right awayor else they would be needlessly reselected again and againeach time through the main loop[server windowc:\pp \internet\socketspython select-server py handling multiple clients