TCP网络协议通信原理(客户端和服务器端)

下面直接用代码来说明TCP协议的基础知识:

服务器端代码块:

from socket import *
from time import ctime
'''
指定主机地址、工作端口号、接收缓存的长度
服务器端的HOST为空,表示它可以使用任意可用的地址
'''
HOST=''
PORT=21263
BUFSIZ=1024
ADDR=(HOST,PORT)

#  创建套接字 ,把套接字绑定到服务器地址,开启TCP监听
tcpSvrSock=socket(AF_INET,SOCK_STREAM)
tcpSvrSock.bind(ADDR)
tcpSvrSock.listen(5)
while True:
    '''
    不断等待接收客户端的连接。我们通过accept()
    获取到客户端的tcpCliSock和addr,于是后续可以通过这个
    tcpCliSock专门处理该客户端的事务(从而与其他请求的客户端区分开来)
    '''
    tcpCliSock,addr=tcpSvrSock.accept()
    print('内容来自:',addr)
    # print('tcpCliSock:',tcpCliSock)
    while True:
        data=tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        # 不为空则把消息解析出来,添加时间戳
        data=data.decode('utf-8')
        print(data)
        data1=input('回复客户端:')

        respMsg='[%s]%s'%(ctime(),data1)
        # 过重新编码成ASCII字节后,通过send()发送回去给客户端
        tcpCliSock.send(bytes(respMsg,'utf-8'))
    tcpCliSock.close()
tcpSvrSock.close()

客户端代码块:

from socket import *
'''
 指定主机地址、工作端口号、接收缓存的长度
 这里的HOST为服务器端所在主机的地址,由于我是在本地进行通信测试的,
 所以地址设置为127.0.0.1(localhost)。在实际网络通信的时候,根据
 具体的情况进行相应的修改。客户端填写的PORT必须与服务器填写的PORT
 对应才能正常通信。
'''
HOST='127.0.0.1'
PORT=21263
BUFSIZ=1024
ADDR=(HOST,PORT)

#  创建套接字 ,主动调用并通过connect()连接到服务器。
tcpCliSock=socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
    data=input('>>>')
    if not data:
        break
    tcpCliSock.send(bytes(data,'utf-8'))
    if not data:
        break
    # 接收服务器返回的数据
    rscData=tcpCliSock.recv(BUFSIZ)
    print(rscData.decode('utf-8'))

tcpCliSock.close()

'''
如果我们想要将代码改成相应的ipv6的形式,
我们只需要把HOST改成“::1”,sock_family改成AF_INET6即可。
'''

更多详细内容可以参见:https://blog.csdn.net/sinat_36645384/article/details/79128137

更多端口协议见:https://www.cnblogs.com/taoke2016/p/9047981.html

转载于:https://www.cnblogs.com/Dark-fire-liehuo/p/9765522.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值