1,socket套接字 一个接口模块,在tcp/udp协议之间的传输接口,将其影藏在socket之后,用户看到的是socket让其看到的. 在tcp中当做server和client的主要模块运用 #server sk = socket.socket() sk.bind(('127.0.0.1',9000))#绑定一个端口IP地址和端口 sk.listen() #接收数据 conn,addr = sk.accept() #获取接收数据的主内容和ip地址 count= conn.recv(1024)…
socket 基于tcp协议socket 服务端 import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 买电话 # socket.SOCK_STREAM 流式协议 就是TCP协议 phone.bind(('127.0.0.1', 8080)) # 买电话卡 phone.listen(5) # 开机. # 5 不是链接数,链接可以产生N个,同一时刻只能监听5个请求. conn, addr = phone.…
TCP协议 在连接内多和客户端说几句 #server端 import socket sk = socket.socket() sk.bind(('127.0.0.1',9001)) sk.listen() while True conn,addr = sk.accept() while True bad = input('>>>') conn.send(bad.encode('utf-8')) if bad.upper() == 'Q': break msg = conn.recv(10…
一.缓冲区 每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区.write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器.一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情.TCP协议独立于 write()/send() 函数,数据有可能刚被写入缓冲区就发送到网络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,这取决…
# 粘包现象 # serverimport socket sk = socket.socket()sk.bind(('127.0.0.1', 8005))sk.listen() conn, addr = sk.accept()conn.send(b'123')conn.send(b'123') # clientimport timeimport socket sk = socket.socket() sk.connect(('127.0.0.1', 8005)) time.sleep(5)msg…
1. 基于Tcp的远程调用命令实现 很多人应该都使用过Xshell工具,这是一个远程连接工具,通过上面的知识,就可以模拟出Xshell远程连接服务器并调用命令的功能. Tcp服务端代码如下: import socket,subprocess ip_port = ("127.0.0.1",8000) tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_server.bind(ip_port) tcp_serv…
Netty 底层是基于 TCP 协议来处理网络数据传输.我们知道 TCP 协议是面向字节流的协议,数据像流水一样在网络中传输那何来 "包" 的概念呢? TCP是四层协议不负责数据逻辑的处理,但是数据在TCP层 "流" 的时候为了保证安全和节约效率会把 "流" 做一些分包处理,比如: 发送方约定了每次数据传输的最大包大小,超过该值的内容将会被拆分成两个包发送: 发送端 和 接收端 约定每次发送数据包长度并随着网络状况动态调整接收窗口大小,这里也会出…
TCP协议中的粘包问题 1.粘包现象 基于TCP实现一个简易远程cmd功能 #服务端 import socket import subprocess sever = socket.socket() sever.bind(('127.0.0.1', 33521)) sever.listen() while True: client, address = sever.accept() while True: try: cmd = client.recv(1024).decode('utf-8') p…
目录 6socket套接字 7基于TCP协议的socket简单的网络通信 AF_UNIX AF_INET(应用最广泛的一个) 报错类型 单一 链接+循环通信 远程命令 9.tcp 实例:远程执行命令 10.粘包现象 11.操作系统的缓存区 1.为什么出现粘包 12.什么情况下出现粘包 1.出现粘包的情况 2.收发的本质 13.low解决粘包现象 14.recv工作原理 15.高大上版 解决粘包方式(自定制包头) 6socket套接字 socket网络套接字 什么是socket 每个 socket…
目录 1.粘包及其成因 1.1.粘包产生 1.2.粘包产生的原因 2.尝试解决粘包 2.1.指定数据包的长度 2.2.固定数据包的长度 2.3.用函数实现多次调用发送数据 3.解决粘包问题的正确姿势 3.1.struct模块功能示例 3.2.struct优雅的解决粘包问题 3.3.struct模块功能函数化 3.4.证实粘包问题被解决 1.粘包及其成因 1.1.粘包产生 先来看一个案例,单进程启动一个tcp socket通信,从服务端发送两次数据到客户端. 服务端tcp_socket_serve…