python TCP通信
1、第一步:打开python IDE,新建一个py文件,输入代码,然后另存为TCPServer.py。这个程序基本功能是建立肤孝一个TCP服务器,等待客户端发送程序,然后将接收的内容以大写字母的形式回传。localhost就是本地服务器的地址,用于测试,一般为127.0.0.1。
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
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
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()

2、第二步:点击IDE菜单栏的“Run”->“Run Module F5”,或者直接按“F5”快捷键执行TCP服务器程序。

3、第三步:编写客户端程序,使用IDE新建一个新的py文件,输入下面的代码。该客户端程序需要通过命令囊倘汉参数传递数据(sys.argv[1:]指示第一行参数),地址也是用户测试的IP地址(一般为127.0.0.1),端口设置与服务器一直,也是9999 。程序将命令行参数发送给服务器,然后将回传的数据回显。
import socket
import sys
HOST, PORT = "localhost", 9999
data = " ".join(sys.argv[1:])
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((HOST, PORT))
sock.sendall(bytes(data + "\n", "utf-8"))
received = str(sock.recv(1024), "utf-8"欠近陵)
print("Sent: {}".format(data))
print("Received: {}".format(received))

4、第四步:保存客户端程序为TCPClient.py,记住保存的目录,后面会用到。

5、第五步:打开win10的CMD程序,将目录切换至TCPClient.py所在目录。

6、第6步:使用python TCPClient.py Hello world调用客户端程序,可以看到程序运行后显示:
Sent: Hello world
Received:HELLO WORLD
与此同时,服务器程序也作出相应,收到127.0.0.1的内容。


7、该示例程序的客户端运行一次后便自动退出,而服务器程序则一直处于激活状态,可以通过再次调用TCPClient.py程序再次发送数据,服务器也会作出相应。需要结束服务器程序可以使用Ctrl+C。
