tcp协议是双向通信,需要先建立连接,然后才能互相通信。其中涉及到通信节点(socket),端口等一些网络知识。如果不太了解,可以查看网络方面的资料。
tcp服务器
可以形象的理解为:银行早上9点开门营业,工作人员到各自的窗口上就位,等待顾客办理业务。
- 开启套接字(银行开门)
- 绑定服务端口(工作人员到各自的窗口)
- 开始监听(工作人员就位)
- 等待客户端连接(等待顾客)
- 和客户端对话(办理业务)
#!/usr/bin/env python #coding=utf8 from socket import * host = '' port = 12345 bufsiz = 1024 #开启套接字 tcpSerSock = socket(AF_INET, SOCK_STREAM) #绑定服务端口 tcpSerSock.bind((host, port)) #开始监听 tcpSerSock.listen(5) while True: #等待客户端连接 print 'waiting for connection...' tcpCliSock, addr = tcpSerSock.accept() print '...connected from:', addr while True: #接收客户端信息 data = tcpCliSock.recv(bufsiz) if not data: break #给客户端发送信息 tcpCliSock.send('[%s] %s' %("You send:", data)) tcpCliSock.close() tcpSerSock.close()
tcp客户端
可以形象的理解为:顾客打算办理业务,到指定的窗口,和工作人员沟通办理业务。
- 开启套接字(打算办理业务)
- 连接服务器(到达指定窗口)
- 开始对话(办理业务)
#!/usr/bin/env python #coding=utf8 from socket import * host = 'localhost' port = 12345 bufsiz = 1024 #开启套接字 tcpCliSock = socket(AF_INET, SOCK_STREAM) #连接到服务器 tcpCliSock.connect((host, port)) while True: #等待输入 data = raw_input('> ') if not data: break #发送信息 tcpCliSock.send(data) #接受返回信息 response = tcpCliSock.recv(bufsiz) if not response: break print response tcpCliSock.close()
运行结果截图:
转载请注明:快乐编程 » python网络编程之tcp服务器和客户端