Created
April 27, 2013 10:33
-
-
Save bcbcarl/5472639 to your computer and use it in GitHub Desktop.
TCP server / client 簡易版本
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import socket | |
import sys | |
HOST, PORT = "localhost", 9999 | |
data = " ".join(sys.argv[1:]) | |
# Create a socket (SOCK_STREAM means a TCP socket) | |
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
try: | |
# Connect to server and send data | |
sock.connect((HOST, PORT)) | |
sock.sendall(bytes(data + "\n", "utf-8")) | |
# Receive data from the server and shut down | |
received = str(sock.recv(1024), "utf-8") | |
finally: | |
sock.close() | |
print("Sent: {}".format(data)) | |
print("Received: {}".format(received)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import socketserver | |
class MyTCPHandler(socketserver.BaseRequestHandler): | |
""" | |
The RequestHandler class for our server. | |
It is instantiated once per connection to the server, and must | |
override the handle() method to implement communication to the | |
client. | |
""" | |
def handle(self): | |
# self.request is the TCP socket connected to the client | |
self.data = self.request.recv(1024).strip() | |
print("{} wrote:".format(self.client_address[0])) | |
print(self.data) | |
# just send back the same data, but upper-cased | |
self.request.sendall(self.data.upper()) | |
if __name__ == "__main__": | |
HOST, PORT = "localhost", 9999 | |
# Create the server, binding to localhost on port 9999 | |
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler) | |
# Activate the server; this will keep running until you | |
# interrupt the program with Ctrl-C | |
server.serve_forever() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
good