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

服务器端代码块:

from socket import *
from time import ctime
'''
指定主机地址、工作端口号、接收缓存的长度
服务器端的HOST为空,表示它可以使用任意可用的地址
'''
HOST=''
PORT=
BUFSIZ=
ADDR=(HOST,PORT) # 创建套接字 ,把套接字绑定到服务器地址,开启TCP监听
tcpSvrSock=socket(AF_INET,SOCK_STREAM)
tcpSvrSock.bind(ADDR)
tcpSvrSock.listen()
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.(localhost)。在实际网络通信的时候,根据
具体的情况进行相应的修改。客户端填写的PORT必须与服务器填写的PORT
对应才能正常通信。
'''
HOST='127.0.0.1'
PORT=
BUFSIZ=
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改成“::”,sock_family改成AF_INET6即可。
'''

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

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

TCP网络协议通信原理(客户端和服务器端)的更多相关文章

  1. [转]HTTP协议通信原理

    本文转自<HTTP协议通信原理> 了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客 ...

  2. HTTP协议通信原理 与常见报错信息

    HTTP协议通信原理 请求报文 请求行 GET index.html HTTP 1.1 请求方法:get  读取服务器数据内容    post   提交存储服务端数据(用户注册) 协议版本:   ht ...

  3. 嵌入式操作系统VxWorks中网络协议存储池原理及实现

    嵌入式操作系统VxWorks中网络协议存储池原理及实现 周卫东 蔺妍 刘利强 (哈尔滨工程大学自动化学院,黑龙江 哈尔滨,150001) 摘  要  本文讨论了网络协议存储池的基本原理和在嵌入式操作系 ...

  4. TCP/IP协议工作原理简述

    TCP/IP协议工作原理简述 // */ // ]]>   TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 ...

  5. c/c++ 网络编程 单纯http客户端,服务器端

    网络编程 单纯http客户端,服务器端 1,http客户端 2,http服务器端 http客户端: #include <stdio.h> #include <sys/types.h& ...

  6. Ubuntu 18.04开启TCP网络协议BBR加速的方法(Google BBR 拥塞控制算法)

    TCP BBR 是Google给出的一个改良版的tcp网络协议,相当于在已有TCP协议的基础上打了个补丁的意思,这个改良版TCP协议对拥塞控制有很好的支持,对于网络较差的环境有不错的应用场景,当然这里 ...

  7. http协议通信原理的问答

    1.dns怎么解析?答:假设一个网站www.tianyik.com的ip是192.168.31.36    浏览器(URL:www.tianyik.com)-->    客户机        h ...

  8. 【TCP网络协议问题】

    题目描述 在如今的网络中,TCP 是一种被广泛使用的网络协议,它在传输层提供了可靠的通信服务.众所周知,网络是存在时延的,例如用户先后向服务器发送了两个指令 op1 和 op2,并且希望服务器先处理指 ...

  9. java实例练习——基于TCP/IP协议的多客户端通信

    先说一下大概的思路: 应用多线程来实现服务器与多客户端之间的通信 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接: 2.客户端创建一个Socket并请求与服务器端连接 ...

随机推荐

  1. matplotlib之直接保存图片

    自动保存图表:pyplot.savefig('D:\\pic.png'),替代了 pyplot.show(). # 使用matplotlib.pyplot.scatter绘制散点 import mat ...

  2. Bootstrap缩略图

    前面的话 缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底部(左侧或右侧)带有标题.描述等信息.Bootstrap框架将这一部独立成一个模块组件,本文将详细介绍Bootstr ...

  3. linux ssh和scp消除每次问yes/no

    ssh 10.11.3.61The authenticity of host '10.11.3.61 (10.11.3.61)' can't be established.RSA key finger ...

  4. 【Linux】自动执行Mysql常用命令脚本

    wamp环境下,我可以手敲一遍,但是lamp环境下我绝对不会手敲一遍 好吧~写脚本的确也是一遍~~~~(>_<)~~~~ 函数和后面的触发器中文档上局部是有错误的,所以大家不要一味的相信文 ...

  5. python成长之路六-函数的初识

    定义函数 我们现学已知的python函数有<内置函数> 而我们现在要学的是<自定义函数> 1,def  定义一个函数 def name(): # 后接函数名 冒号 pass 2 ...

  6. Codeforces Round #436 (Div. 2) A,B,D

    A. Fair Game 题目链接:http://codeforces.com/contest/864/problem/A 水题 #include<iostream> #include&l ...

  7. day9 字符串格式化输出 % .format()

    常用的格式化输出方式1 % 方式 print("i am %s my hobby is %s" %("yt","eat")) 打印浮点数,. ...

  8. 【BZOJ1064】【NOI2008】假面舞会(图论,搜索)

    题面 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一个自己喜欢的面 具.每个面具都有一个编号 ...

  9. ST表与树状数组

    ST表  st表可以解决区间最值的问题.可以做到O(nlogn)预处理 ,O(1)查询,但是不支持修改. st表的大概思路就是用st[i][j]来表示从i开始的2的j次方个树中的最值,查询时就从左端点 ...

  10. source insight的使用方法逆天整理

    http://www.cnblogs.com/ningskyer/articles/4038501.html A. why SI: 为什么要用Source Insight呢?因为她比完整的IDE要更快 ...