下面直接用代码来说明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. python之tkinter使用-窗口居中显示

    # 窗口居中显示 import tkinter as tk def set_win_center(root, curWidth='', curHight=''): ''' 设置窗口大小,并居中显示 : ...

  2. 退役前的记录(2018.10.14-NOIP2018)

    退役前的记录 诸位好,我是\(CJ\)最菜的\(Oier\),已经是\(G2\)的老年选手了,不知道什么时候就会退役了,总之\(G1\ double\)的机会已经没有了,去年因为联赛失利而止步,而今年 ...

  3. day22 collection 模块 (顺便对比queue也学习了一下队列)

    collection 定义命名元祖,让元祖的每个元素可以通过类似对象属性的方法用".属性"及其方便的取值. 定义可前后拿取值且可迭代的双端队列 定义有顺序的字典 定义有默认值的字典 ...

  4. day10 函数的嵌套执行顺序

    函数嵌套的执行顺序,从上往下,一层一层的执行重点注意的是函数和内存的交互原理 NMAE = def yangtuo(): # 2 将整个函数放入内存编译,但是不执行 name = "yang ...

  5. android-support-v4.jar 免积分下载

    资源名称:android扩展插件 android-support-v4.jar 资源大小:137KB 上传日期:2012-10-08 资源积分:1 下载次数:136 电信下载地址:http://www ...

  6. POJ P3352 Road Construction 解题报告

    P3352 Road Construction 描述 这几乎是夏季,这意味着它几乎是夏季施工时间!今年,负责岛屿热带岛屿天堂道路的优秀人士,希望修复和升级岛上各个旅游景点之间的各种道路. 道路本身也很 ...

  7. [Cqoi2014]数三角形——组合数

    Description: 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Hint: 1<=m,n<=1000 ...

  8. [luogu3197][越狱]

    luogu3197 思路 看了很久没思路,看了题解发现自己好zz.用全部的情况减去不合法的情况就行了.全部的情况就是每个人随便选,总共有\(m^n\)种情况,然后考虑不合法的情况,也就是任意相邻的两个 ...

  9. The 2016 ACM-ICPC Asia Beijing Regional Contest E - What a Ridiculous Election

    https://vjudge.net/contest/259447#problem/E bfs,k个限制条件以数组的额外k维呈现. #include <bits/stdc++.h> usi ...

  10. 原生js操作option

    <script type="text/javascript"> // 1.动态创建select function createSelect() { var mySele ...