brock@arden:~/csci373/notes$ ls acctest.cgi Class27.html rpi-notes Adafruit_Python_ADS1x15 Class27.html~ RPi-stuff.tar boot courses runl.client brock.tar DSCN0534.jpg running-apache.txt CGIhack electricity run.server Class02.html electricity.html serverCAS1.py Class03.html getting-lower servit2.py Class05.html i2c.txt servitA.py Class06.html IMG_20180302_102553.jpg servit.py Class07.html IMG_20180302_102559.jpg servitS.py Class08.html library.commands sockets Class09.html listi2c.txt Southeast Con 2014.pptx Class12.html Microchip squares.py Class13.html Peripherals squares.py~ Class14.html pi-A.html TheMagPi Class15.html pi-A.txt thingstodo Class18.html #pi-B.html# thingstodo.txt Class21-e1.txt pi-B.html transistors Class21.html pishots uncacsci-pi3-d.jpg Class22.html references uncacsci-pi-j.jpg Class23.html RFB web.setup Class25.html Ri-run-0.txt Class26.html~ RPi-GPIO brock@arden:~/csci373/notes$ cd sockets/ brock@arden:~/csci373/notes/sockets$ ls jsonserA.py jsonserA.py~ notes squares squares3.py squares.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py File "jsonserA.py", line 49 server_rc = 1 ^ SyntaxError: invalid syntax brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 1, in L#! /usr/bin/python NameError: name 'L' is not defined brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in sys.exit(server_rc) NameError: name 'server_rc' is not defined brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in server_rc = echo_json(remote_port) File "jsonserA.py", line 10, in echo_json in_stream = json_socket.makefile("r") AttributeError: 'int' object has no attribute 'makefile' brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in server_rc = echo_json_server(remote_port) File "jsonserA.py", line 32, in echo_json_server echo_socket.bind(json_port) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) TypeError: getsockaddrarg: AF_INET address must be tuple, not int brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in server_rc = echo_json_server(remote_port) File "jsonserA.py", line 36, in echo_json_server connected_socket, address_socket = socket.accept() AttributeError: 'module' object has no attribute 'accept' brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in server_rc = echo_json_server(remote_port) File "jsonserA.py", line 36, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() socket.error: [Errno 22] Invalid argument brock@arden:~/csci373/notes/sockets$ python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in server_rc = echo_json_server(remote_port) File "jsonserA.py", line 36, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() socket.error: [Errno 22] Invalid argument brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py Traceback (most recent call last): File "jsonserA.py", line 50, in print("opening {0}".format(rempte_port)) NameError: name 'rempte_port' is not defined brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py opening 3210 Traceback (most recent call last): File "jsonserA.py", line 51, in server_rc = echo_json_server(remote_port) File "jsonserA.py", line 36, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() socket.error: [Errno 22] Invalid argument brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py opening 3210  [1]+ Stopped python jsonserA.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ bg [1]+ python jsonserA.py & brock@arden:~/csci373/notes/sockets$ netcat localhost "" netcat: port number invalid: brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44035) 5 brock@arden:~/csci373/notes/sockets$ !! netcat localhost 3210 [1]+ Done python jsonserA.py brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ python jsonserA.py & [1] 30711 brock@arden:~/csci373/notes/sockets$ File "jsonserA.py", line 17 receive_object = json.loads(json_line) ^ SyntaxError: invalid syntax [1]+ Exit 1 python jsonserA.py brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py & [1] 30712 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44039) 5 Input line --> 5 brock@arden:~/csci373/notes/sockets$ jobs [1]+ Done python jsonserA.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py File "jsonserA.py", line 19 reply_line = json.dumps(receive_object) ^ SyntaxError: invalid syntax brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py opening 3210 Unable to open port 3210 : [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py opening 3210  [1]+ Stopped python jsonserA.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ bg [1]+ python jsonserA.py & brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44056) 5 Input line --> 5 brock@arden:~/csci373/notes/sockets$ jobs [1]+ Done python jsonserA.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py & [1] 30743 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use [1]+ Exit 1 python jsonserA.py brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py & [1] 30744 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use  [1]+ Exit 1 python jsonserA.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py & [1] 30745 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use  [1]+ Exit 1 python jsonserA.py brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py & [1] 30746 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44058) 5 Input line --> 5 Object --> 5 5 Input line --> brock@arden:~/csci373/notes/sockets$ jobs [1]+ Done python jsonserA.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py & [1] 30748 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44059) 5 Input line --> 5 Object --> 5 5. Input line --> brock@arden:~/csci373/notes/sockets$ jobs [1]+ Done python jsonserA.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py & [1] 30750 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use [1]+ Exit 1 python jsonserA.py brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py & [1] 30764 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use [1]+ Exit 1 python jsonserA.py brock@arden:~/csci373/notes/sockets$ python jsonserA.py opening 3210 Unable to open port 3210 : [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$ !! python jsonserA.py opening 3210  [1]+ Stopped python jsonserA.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ bg [1]+ python jsonserA.py & brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44070) 5 Input line --> 5 Object --> 5 5 10 Input line --> 10 Object --> 10 10 [3] Input line --> [3] Object --> [3] [3] {x:5} Input line --> {x:5} brock@arden:~/csci373/notes/sockets$ !! netcat localhost 3210 [1]+ Done python jsonserA.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ ls -l jsonser* -rw-r--r-- 1 brock users 1714 Mar 29 21:26 jsonserA.py -rw-r--r-- 1 brock users 1495 Mar 29 20:42 jsonserA.py~ -rw-r--r-- 1 brock users 1741 Mar 29 21:54 jsonserB.py -rw-r--r-- 1 brock users 1714 Mar 29 21:53 jsonserB.py~ brock@arden:~/csci373/notes/sockets$ chmod 755 jsonserA.py brock@arden:~/csci373/notes/sockets$ chmod 755 jsonserB.py brock@arden:~/csci373/notes/sockets$ python jsonserB.py & [1] 31127 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44160) "hi" Input line --> "hi" Object --> hi "hi" Input line --> Connected to ('68.189.173.76', 52380) Input line --> "at home: Connected to ('68.189.173.76', 52383) Input line --> "at home with Mac" Object --> at home with Mac brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserB.py & brock@arden:~/csci373/notes/sockets$ fg python jsonserB.py Input line --> [5, "back in foreground"] Object --> [5, u'back in foreground']  [1]+ Stopped python jsonserB.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ bg [1]+ python jsonserB.py & brock@arden:~/csci373/notes/sockets$ Input line --> "backgrounded" Object --> backgrounded brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Input line --> "Ha.... You must wait for me!" Object --> Ha.... You must wait for me! Really! Input line --> "Yes. Really" Object --> Yes. Really Input line --> "OK.. I will let you get accepted" Object --> OK.. I will let you get accepted Input line --> "bye, bye" Object --> bye, bye Input line --> Connected to ('127.0.0.1', 44174) Input line --> Really! brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserB.py & brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserB.py & brock@arden:~/csci373/notes/sockets$ kill %1 brock@arden:~/csci373/notes/sockets$ echo "-- had to fix a problem" -- had to fix a problem [1]+ Terminated python jsonserB.py brock@arden:~/csci373/notes/sockets$ python jsonserB.py & [1] 31172 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44187) 1 Input line --> 1 Object --> 1 1 2 Input line --> 2 Object --> 2 2 Input line --> Connected to ('68.189.173.76', 52402) brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ Input line --> "connection #2" Object --> connection #2 Input line --> ["It","is","mine"] Object --> [u'It', u'is', u'mine'] netcat localhost 3210 Input line --> "You have to wait for me!" Object --> You have to wait for me! 5 Input line --> "Told you so" Object --> Told you so Input line --> "bye, bye" Object --> bye, bye Input line --> Connected to ('127.0.0.1', 44199) Input line --> 5 Object --> 5 5 Input line -->  brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserB.py & brock@arden:~/csci373/notes/sockets$ Connected to ('68.189.173.76', 52413) Input line --> "I am back!" Object --> I am back! Input line --> brock@arden:~/csci373/notes/sockets$ diff jsonserA.py jsonserB.py 2c2 < """ One connection JSON echo --- > """ One at-a-time JSON echo 28c28 < # This will close the client socket --- > # This will close the socket 39,41c39,43 < echo_socket.listen(1) < connected_socket, address_socket = echo_socket.accept() < print "Connected to {}\n".format(address_socket) --- > echo_socket.listen(5) > while True: > connected_socket, address_socket = echo_socket.accept() > print "Connected to {}\n".format(address_socket) > echo_json(connected_socket) 43c45 < echo_json(connected_socket) --- > echo_socket.close() brock@arden:~/csci373/notes/sockets$ !! diff jsonserA.py jsonserB.py 2c2 < """ One connection JSON echo --- > """ One at-a-time JSON echo 39,41c39,43 < echo_socket.listen(1) < connected_socket, address_socket = echo_socket.accept() < print "Connected to {}\n".format(address_socket) --- > echo_socket.listen(5) > while True: > connected_socket, address_socket = echo_socket.accept() > print "Connected to {}\n".format(address_socket) > echo_json(connected_socket) 43c45 < echo_json(connected_socket) --- > echo_socket.close() brock@arden:~/csci373/notes/sockets$ python jsonserA.py opening 3210 Unable to open port 3210 : [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserB.py & brock@arden:~/csci373/notes/sockets$ kill %1 brock@arden:~/csci373/notes/sockets$ [1]+ Terminated python jsonserB.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ python jsonserA.py opening 3210 Connected to ('68.189.173.76', 52545) Input line --> "me again" Object --> me again Input line --> brock@arden:~/csci373/notes/sockets$ python jsonserB.py opening 3210 Connected to ('68.189.173.76', 52547) Input line --> "and again" Object --> and again Input line -->  Traceback (most recent call last): File "jsonserB.py", line 58, in server_rc = echo_json_server(remote_port) File "jsonserB.py", line 41, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() KeyboardInterrupt brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ diff jsonserB.py jsonserC.py 6a7 > import os 37c38 < print("Unable to open port {} : {}".format(json_port, message)) --- > print "Unable to open port {} : {}".format(json_port, message) 42,43c43,52 < print "Connected to {}\n".format(address_socket) < echo_json(connected_socket) --- > print "Connected to {0}\n".format(address_socket) > process_id = os.fork() > if process_id == 0: > # child process > echo_socket.close() > echo_json(connected_socket) > else: > # parent process > print("Started child process {0}".format(pid)) > connected_socket.close() brock@arden:~/csci373/notes/sockets$ !! diff jsonserB.py jsonserC.py 6a7 > import os 37c38 < print("Unable to open port {} : {}".format(json_port, message)) --- > print "Unable to open port {} : {}".format(json_port, message)) 42,43c43,52 < print "Connected to {}\n".format(address_socket) < echo_json(connected_socket) --- > print "Connected to {0}\n".format(address_socket) > process_id = os.fork() > if process_id == 0: > # child process > echo_socket.close() > echo_json(connected_socket) > else: > # parent process > print("Started child process {0}".format(pid)) > connected_socket.close() brock@arden:~/csci373/notes/sockets$ diff jsonserA.py jsonserB.py 2c2 < """ One connection JSON echo --- > """ One at-a-time JSON echo 39,41c39,43 < echo_socket.listen(1) < connected_socket, address_socket = echo_socket.accept() < print("Connected to {}\n".format(address_socket)) --- > echo_socket.listen(5) > while True: > connected_socket, address_socket = echo_socket.accept() > print("Connected to {}\n".format(address_socket)) > echo_json(connected_socket) 43c45 < echo_json(connected_socket) --- > echo_socket.close() brock@arden:~/csci373/notes/sockets$ diff jsonserA.py jsonserB.py 2c2 < """ One connection JSON echo --- > """ One at-a-time JSON echo 39,42c39,43 < echo_socket.listen(1) < connected_socket, address_socket = echo_socket.accept() < print("Connected to {}\n".format(address_socket)) < echo_json(connected_socket) --- > echo_socket.listen(5) > while True: > connected_socket, address_socket = echo_socket.accept() > print("Connected to {}\n".format(address_socket)) > echo_json(connected_socket) brock@arden:~/csci373/notes/sockets$ diff jsonserB.py jsonserC.py 6a7 > import os 42,43c43,52 < print("Connected to {}\n".format(address_socket)) < echo_json(connected_socket) --- > print("Connected to {0}\n".format(address_socket)) > process_id = os.fork() > if process_id == 0: > # child process > echo_socket.close() > echo_json(connected_socket) > else: > # parent process > print("Started child process {0}".format(pid)) > connected_socket.close() brock@arden:~/csci373/notes/sockets$ !! diff jsonserB.py jsonserC.py 6a7 > import os 43c44,52 < echo_json(connected_socket) --- > process_id = os.fork() > if process_id == 0: > # child process > echo_socket.close() > echo_json(connected_socket) > else: > # parent process > print("Started child process {0}".format(pid)) > connected_socket.close() brock@arden:~/csci373/notes/sockets$ python jsonserC.py opening 3210  Traceback (most recent call last): File "jsonserC.py", line 67, in server_rc = echo_json_server(remote_port) File "jsonserC.py", line 42, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() KeyboardInterrupt brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ python jsonserC.py & [1] 31464 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44334) Traceback (most recent call last): File "jsonserC.py", line 67, in server_rc = echo_json_server(remote_port) File "jsonserC.py", line 51, in echo_json_server print("Started child process {0}".format(pid)) NameError: global name 'pid' is not defined Input line --> Traceback (most recent call last): File "jsonserC.py", line 67, in [1]+ Exit 1 python jsonserC.py brock@arden:~/csci373/notes/sockets$ server_rc = echo_json_server(remote_port) File "jsonserC.py", line 42, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() File "/usr/lib/python2.7/socket.py", line 170, in _dummy raise error(EBADF, 'Bad file descriptor') socket.error: [Errno 9] Bad file descriptor C-c C-c brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ python jsonserC.py & [1] 31467 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ netcat localhost 3210 Connected to ('127.0.0.1', 44335) Started child process 31469 "hello" Input line --> "hello" Object --> hello "hello" Connected to ('68.189.173.76', 52575) Started child process 31471 Input line --> "I am the remote one" Object --> I am the remote one "I am the local one" Input line --> "I am the local one" Object --> I am the local one "I am the local one" Input line --> "We are sharing" Object --> We are sharing  [2]+ Stopped netcat localhost 3210 brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ ps gaux | grep python brock 31467 0.0 0.0 39512 6532 pts/16 S 22:34 0:00 python jsonserC.py brock 31469 0.0 0.0 39512 4128 pts/16 S 22:34 0:00 python jsonserC.py brock 31471 0.0 0.0 39512 3928 pts/16 S 22:35 0:00 python jsonserC.py brock@arden:~/csci373/notes/sockets$ fg netcat localhost 3210 15 Input line --> 15 Object --> 15 15 Connected to ('152.18.69.33', 46256) Started child process 31490 Input line --> "Three's company was a silly TV show" Object --> Three's company was a silly TV show Input line --> "bye" Object --> bye Input line --> Traceback (most recent call last): File "jsonserC.py", line 67, in server_rc = echo_json_server(remote_port) File "jsonserC.py", line 42, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() File "/usr/lib/python2.7/socket.py", line 170, in _dummy raise error(EBADF, 'Bad file descriptor') socket.error: [Errno 9] Bad file descriptor Input line --> Traceback (most recent call last): File "jsonserC.py", line 67, in brock@arden:~/csci373/notes/sockets$ server_rc = echo_json_server(remote_port) File "jsonserC.py", line 42, in echo_json_server connected_socket, address_socket = echo_socket.accept() File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() File "/usr/lib/python2.7/socket.py", line 170, in _dummy raise error(EBADF, 'Bad file descriptor') socket.error: [Errno 9] Bad file descriptor jobs [1]+ Running python jsonserC.py & brock@arden:~/csci373/notes/sockets$ fg python jsonserC.py  Traceback (most recent call last): File "jsonserC.py", line 67, in Traceback (most recent call last): File "jsonserC.py", line 67, in server_rc = echo_json_server(remote_port) server_rc = echo_json_server(remote_port) File "jsonserC.py", line 48, in echo_json_server File "jsonserC.py", line 42, in echo_json_server echo_json(connected_socket) connected_socket, address_socket = echo_socket.accept() File "jsonserC.py", line 17, in echo_json File "/usr/lib/python2.7/socket.py", line 202, in accept sock, addr = self._sock.accept() KeyboardInterrupt json_line = in_stream.readline().strip() File "/usr/lib/python2.7/socket.py", line 447, in readline data = self._sock.recv(self._rbufsize) KeyboardInterrupt brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ python jsonserC.py & [1] 31517 brock@arden:~/csci373/notes/sockets$ opening 3210 brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserC.py & brock@arden:~/csci373/notes/sockets$ kill %1 brock@arden:~/csci373/notes/sockets$ [1]+ Terminated python jsonserC.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ python jsonserC.py & [1] 31539 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use [1]+ Exit 1 python jsonserC.py brock@arden:~/csci373/notes/sockets$ !! python jsonserC.py & [1] 31540 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use C-c C-c [1]+ Exit 1 python jsonserC.py brock@arden:~/csci373/notes/sockets$ !! python jsonserC.py & [1] 31541 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use C-c C-c [1]+ Exit 1 python jsonserC.py brock@arden:~/csci373/notes/sockets$ python jsonserC.py & [1] 31542 brock@arden:~/csci373/notes/sockets$ opening 3210 Unable to open port 3210 : [Errno 98] Address already in use C-c C-c [1]+ Exit 1 python jsonserC.py brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ python jsonserC.py & [1] 31543 brock@arden:~/csci373/notes/sockets$ opening 3210 Connected to ('152.18.69.33', 46258) Started child process 31545 Input line --> "Is the bug fixed" Object --> Is the bug fixed Connected to ('68.189.173.76', 52607) Started child process 31546 Input line --> "How should I iknow" Object --> How should I iknow Input line --> Connected to ('152.18.69.33', 46259) Started child process 31547 Input line --> Guess it is Connected to ('152.18.69.33', 46260) Started child process 31548 Input line --> 'Z' Connected to ('152.18.69.33', 46261) Started child process 31549 Input line --> 'Z' Connected to ('152.18.69.33', 46262) Started child process 31554 Input line --> "huh" Object --> huh Input line --> "okkkk.." Object --> okkkk.. brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ ps gaux | grep python brock 31543 0.0 0.0 39512 6528 pts/16 S 22:43 0:00 python jsonserC.py brock 31545 0.0 0.0 0 0 pts/16 Z 22:43 0:00 [python] brock 31546 0.0 0.0 39512 3924 pts/16 S 22:43 0:00 python jsonserC.py brock 31547 0.0 0.0 0 0 pts/16 Z 22:44 0:00 [python] brock 31548 0.0 0.0 0 0 pts/16 Z 22:44 0:00 [python] brock 31549 0.0 0.0 0 0 pts/16 Z 22:45 0:00 [python] brock 31554 0.0 0.0 39512 3928 pts/16 S 22:45 0:00 python jsonserC.py brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserC.py & brock@arden:~/csci373/notes/sockets$ kill %1 brock@arden:~/csci373/notes/sockets$ ps gaux | grep python [1]+ Terminated python jsonserC.py brock@arden:~/csci373/notes/sockets$ ps gaux | grep python brock@arden:~/csci373/notes/sockets$ diff jsonserC.py jsonserD.py 7a8 > import signal 40a42 > signal.signal(signal.SIGCHLD, signal.SIG_IGN) brock@arden:~/csci373/notes/sockets$ python jsonserD.py opening 3210 Unable to open port 3210 : [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$ python jsonserD.py opening 3210 Connected to ('152.18.69.33', 46279) Started child process 31628 Input line --> "Is it fixed" Object --> Is it fixed Connected to ('68.189.173.76', 52783) Started child process 31629 Input line --> "I sure hope so" Object --> I sure hope so Input line --> "YOU CHECK IT!" Object --> YOU CHECK IT! Input line -->  [1]+ Stopped python jsonserD.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ ps gaux | grep python brock 31627 0.0 0.0 39512 6536 pts/16 T 22:55 0:00 python jsonserD.py brock 31628 0.0 0.0 39512 3936 pts/16 T 22:55 0:00 python jsonserD.py brock@arden:~/csci373/notes/sockets$ fg python jsonserD.py Input line --> "looks good. you are not a Zombie" Object --> looks good. you are not a Zombie Input line -->  [1]+ Stopped python jsonserD.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ ps gaux | grep python brock 31627 0.0 0.0 39512 6536 pts/16 T 22:55 0:00 python jsonserD.py brock@arden:~/csci373/notes/sockets$ python jsonserE.py Traceback (most recent call last): File "jsonserE.py", line 33, in if len(sys.argv) <= 1: NameError: name 'sys' is not defined brock@arden:~/csci373/notes/sockets$ !! python jsonserE.py Traceback (most recent call last): File "jsonserE.py", line 42, in server = SocketServer.TCPServer(("", remote_port), JSONHandler) File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__ self.server_bind() File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind self.socket.bind(self.server_address) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$ jobs [1]+ Stopped python jsonserD.py brock@arden:~/csci373/notes/sockets$ kill %1 brock@arden:~/csci373/notes/sockets$ [1]+ Terminated python jsonserD.py brock@arden:~/csci373/notes/sockets$ diff jsonserD.py jsonserE.py 2c2 < """ Concurrent children JSON echo --- > """ Concurrent children using JSON echo 4d3 < import socket 6,8c5 < import json < import os < import signal --- > import SocketServer 28,32d24 < in_stream.close() < out_stream.close() < # This will close the client socket < json_socket.close() < return 0 34,59c26,31 < def echo_json_server(json_port): < echo_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) < try: < echo_socket.bind(("", json_port)) < except socket.error, message: < print("Unable to open port {} : {}".format(json_port, message)) < return 1 < echo_socket.listen(5) < signal.signal(signal.SIGCHLD, signal.SIG_IGN) < while True: < connected_socket, address_socket = echo_socket.accept() < print("Connected to {0}\n".format(address_socket)) < process_id = os.fork() < if process_id == 0: < # child process < echo_socket.close() < echo_json(connected_socket) < # ZZZZZZZZZZ < sys.exit(0) < else: < # parent process < print("Started child process {0}".format(process_id)) < connected_socket.close() < # This will close the server socket < echo_socket.close() < return 0 --- > class JSONHandler(SocketServer.BaseRequestHandler): > """ > Instantiated for each connection > """ > def handle(self): > echo_json(self.request) 70,72c42,45 < print("opening {0}".format(remote_port)) < server_rc = echo_json_server(remote_port) < sys.exit(server_rc) --- > server = SocketServer.TCPServer(("", remote_port), JSONHandler) > server.serve_forever() > > brock@arden:~/csci373/notes/sockets$ python jsonserE.py & [1] 31808 brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ Input line --> Hmmm brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs [1]+ Running python jsonserE.py & brock@arden:~/csci373/notes/sockets$ kill %1 brock@arden:~/csci373/notes/sockets$ [1]+ Terminated python jsonserE.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ python jsonserE.py Input line --> "Is is objectified" Object --> Is is objectified Input line --> Input line --> "Perhaps" Object --> Perhaps Input line --> Input line --> "ugh" Object --> ugh Input line --> q Traceback (most recent call last): File "jsonserE.py", line 44, in server.serve_forever() File "/usr/lib/python2.7/SocketServer.py", line 236, in serve_forever poll_interval) File "/usr/lib/python2.7/SocketServer.py", line 155, in _eintr_retry return func(*args) KeyboardInterrupt brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ python jsonserF.py Traceback (most recent call last): File "jsonserF.py", line 35, in class JSONTCPServer(SocketServer.ThreadingMixIn, SocketServerTCPServer): NameError: name 'SocketServerTCPServer' is not defined brock@arden:~/csci373/notes/sockets$ !! python jsonserF.py Traceback (most recent call last): File "jsonserF.py", line 48, in server_thread = threading.Thread(target=serve.serve_forever) NameError: name 'serve' is not defined brock@arden:~/csci373/notes/sockets$ !! python jsonserF.py Traceback (most recent call last): File "jsonserF.py", line 51, in print("Running in thread {0}". server_thread.name) AttributeError: 'str' object has no attribute 'server_thread' brock@arden:~/csci373/notes/sockets$ !! python jsonserF.py Running in thread Thread-1 brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ ps gaux | grep python brock@arden:~/csci373/notes/sockets$ python jsonserF.py Running in thread Thread-1 Input line --> hello Input line --> 5 Object --> 5 Input line --> 6 Object --> 6 Input line --> [3] Object --> [3] Input line --> 37 Object --> 37  Traceback (most recent call last): File "jsonserF.py", line 54, in i=i+1 KeyboardInterrupt  C-c C-z [1]+ Stopped python jsonserF.py brock@arden:~/csci373/notes/sockets$ w 23:53:16 up 78 days, 10:08, 2 users, load average: 0.78, 0.78, 0.44 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT brock pts/12 uncacsci-pi3-v.c Wed10 35:29m 15.56s 15.51s emacs brock pts/15 68-189-173-76.dh 20:37 1:29m 28.11s 28.05s emacs brock@arden:~/csci373/notes/sockets$ jobs [1]+ Stopped python jsonserF.py brock@arden:~/csci373/notes/sockets$ kill -KILL %1 [1]+ Stopped python jsonserF.py brock@arden:~/csci373/notes/sockets$ [1]+ Killed python jsonserF.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ python jsonserF.py Traceback (most recent call last): File "jsonserF.py", line 47, in server = JSONTCPServer(("", remote_port), JSONHandler) File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__ self.server_bind() File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind self.socket.bind(self.server_address) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$ !! python jsonserF.py Running in thread Thread-1 Input line --> 14 Object --> 14  Traceback (most recent call last): File "jsonserF.py", line 54, in i=i+1 KeyboardInterrupt  [1]+ Stopped python jsonserF.py brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ brock@arden:~/csci373/notes/sockets$ jobs [1]+ Stopped python jsonserF.py brock@arden:~/csci373/notes/sockets$ kill -KILL %1 [1]+ Stopped python jsonserF.py brock@arden:~/csci373/notes/sockets$ [1]+ Killed python jsonserF.py brock@arden:~/csci373/notes/sockets$ jobs brock@arden:~/csci373/notes/sockets$ !! jobs brock@arden:~/csci373/notes/sockets$ python jsonserF.py Traceback (most recent call last): File "jsonserF.py", line 47, in server = JSONTCPServer(("", remote_port), JSONHandler) File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__ self.server_bind() File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind self.socket.bind(self.server_address) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 98] Address already in use brock@arden:~/csci373/notes/sockets$