python核心编程学习笔记-2016-08-21-02-python网络编程TCP

        16.3开始介绍的socket模块,这基本没什么难度。

         创建TCP服务器,伪代码为:

ss = socket() # 创建服务器套接字
ss.bind() # 把地址绑定到套接字上
ss.listen() # 监听连接
inf_loop: # 服务器无限循环
    cs = ss.accept() # 接受客户端连接
comm_loop: # 通信循环
     cs.recv() / cs.send() # 对话(接收和发送)
cs.close() # 关闭客户端套接字
ss.close() # 关闭服务器套接字(可选)
          创建TCP客户端,伪代码为:

cs = socket() # 创建客户端套接字
cs.connect() # 尝试连接服务器
comm_loop: # 通信循环
     cs.send() / cs.recv() # 对话(发送和接收)
cs.close() # 关闭客户端套接字
           之后是书中的两个例子。

#-*-coding: utf-8-*-

from socket import *
from time import ctime

HOST = '' # HOST变量为空,表示bind()函数可以绑定到所有有效的地址上
PORT = 21567 # 选择端口
BUFSIZ = 1024 # 设置缓冲区大小为1K
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR) # 将地址绑定到套接字上
tcpSerSock.listen(5) # 监听连接,参数5表示最多允许多少个连接同时连进来,后面的连接会被拒绝

while True:
    print "waiting for connection..." # 被动等待连接
    tcpCliSock, addr = tcpSerSock.accept() # 接受客户端连接,前一个参数就是所谓临时套接字,用以实现服务器与客户端的通信循环,后一个参数是客户端的地址(主机,端口)。这样做的目的是空出服务器主端口,用以接受其他客户端的连接
    print "...connected from:", addr
    
    while True: # 进入通信循环
        data = tcpCliSock.recv(BUFSIZ) # 临时套接字使服务器接受客户端addr发送过来的信息
        if not data: # 如果消息为空,表示客户端addr已退出,那么就退出通信循环,等待下一个客户端连接
            break
        tcpCliSock.send('[%s] %s' % (ctime(), data)) # 服务器返回信息给客户端

    tcpCliSock.close() # 退出对话循环后,临时套接字关闭,即客户端已退出,等待下一个客户端连接
tcpSerSock.close()    


#-*-coding: utf-8-*-

from socket import *

HOST = 'localhost' # 表示服务器主机名,由于是在同一台电脑上测试,所以HOST是本地的主机名,如果服务器在其他电脑上,则需作出相应修改
PORT = 21567 # 端口也是一样,如果服务器在其他电脑上,则需作出相应修改
BUFSIZ = 1024 # 缓冲区大小还是1K
ADDR = (HOST, PORT) # ADDR就是服务器地址

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR) # 创建TCP客户端套接字

while True: # 进入通信循环
    data = raw_input("> ") # 客户端生成信息
    if not data: # 如果信息为空,退出通信循环
        break
    tcpCliSock.send(data) # 客户端将信息发送给服务器
    data = tcpCliSock.recv(BUFSIZ) # 客户端接受服务器返回的信息
    if not data: # 如果服务器由于某种原因退出,即服务器返回的信息为空时,也同样退出通信循环
        break
    print data # 显示服务器返回的信息

tcpCliSock.close()
           打开两个powershell来运行。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值