Well, I don't have python3 installed here at work, but just from looking at the code, it looks like you are trying to send something with the server socket in the server part.
You call accept on ver:
build,addr = ver.accept()
Then you try to send on ver, instead of build:
ver.send(version)
Usually it works like this: On the server side, you have a "server" socket, that you call bind on and then accept, waiting for incoming connections. Every time a client connects, accept yields a socket to talk to this specific client ("client" socket). If all communication would go via the server socket, how could you have multiple clients and know which one you are "talking" to?
The second error in the code was, that version.read() was called to print the value and later again to send it. read() "consumes" the data, thus the second read() gave an empty result.
Also, you should call send() in a loop, checking its return value, to make sure all of the data is actually sent. Partial sends can happen.