最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

python网络编程之tcp服务器和客户端

Python 5584浏览 1评论

tcp协议是双向通信,需要先建立连接,然后才能互相通信。其中涉及到通信节点(socket),端口等一些网络知识。如果不太了解,可以查看网络方面的资料。

tcp服务器

可以形象的理解为:银行早上9点开门营业,工作人员到各自的窗口上就位,等待顾客办理业务。

  1. 开启套接字(银行开门)
  2. 绑定服务端口(工作人员到各自的窗口)
  3. 开始监听(工作人员就位)
  4. 等待客户端连接(等待顾客)
  5. 和客户端对话(办理业务)
#!/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客户端

可以形象的理解为:顾客打算办理业务,到指定的窗口,和工作人员沟通办理业务。

  1. 开启套接字(打算办理业务)
  2. 连接服务器(到达指定窗口)
  3. 开始对话(办理业务)
#!/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服务端

python网络编程tcp服务端

python网络编程tcp客户端

python网络编程tcp客户端

转载请注明:快乐编程 » python网络编程之tcp服务器和客户端

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 陈杰斌
    这样子貌似只能连接单个客户端。
    youyou5年前 (2013-01-18)回复