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