使用网上socket代码实现ssh功能,如下: server.py #服务端Linux系统下:处理命令并返回import socketimport os#声明类型,生成socket链接对象server = socket.socket()#监听接收端口元组(本地,端口),绑定要监听的端口server.bind(('localhost',6969))#最大监听数,允许多少人在排队server.listen(5)while True: #循环锁定访问客户端 print("等待执行指令") c…
一,粘包问题详情 1,只有TCP有粘包现象,UDP永远不会粘包 你的程序实际上无权直接操作网卡的,你操作网卡都是通过操作系统给用户程序暴露出来的接口,那每次你的程序要给远程发数据时,其实是先把数据从用户态copy到内核态,这样的操作是耗资源和时间的,频繁的在内核态和用户态之前交换数据势必会导致发送效率降低, 因此socket 为提高传输效率,发送方往往要收集到足够多的数据后才发送一次数据给对方.若连续几次需要send的数据都很少,通常TCP socket 会根据优化算法把这些数据合成一个TCP段…
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.…
客户端 import os import json import struct import socket sk = socket.socket() sk.connect(('127.0.0.1',8000)) def get_filename(file_path): return os.path.basename(file_path) operate = ['upload','download'] for num, opt in enumerate(operate,1): print(num,…
目录 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…
tcp:属于长连接,与一个客户端进行连接了以后,其他的客户端要等待,要连接另外一个,必须优雅的断开前面这个客户端的连接. 允许地址重用:在bind IP地址和端口之前加上,# server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 允许(IP地址和端口)地址重用 缓冲区 输入缓冲区 #recv 输出缓冲区 #send 粘包(tcp的两种粘包现象) 1 连续发送小的数据,并且每次发送之间的时间间隔很短(输出缓冲区:两个消息在缓冲区黏…
复习下socket 编程的步骤: 服务端:   1 声明socket 实例 server = socket.socket()  #括号里不写  默认地址簇使用AF_INET  即 IPv4       默认type 为 sock.SOCK_STREAM 即 TCP/IP 协议    2 绑定IP地址和端口 server.bind(('localhost',9999))  #ip地址和端口  元组形式 ,端口为整数形式   3 开始监听 server.listen()   4 进入阻塞状态,等待连…
using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Threading; namespace EventBase { /*解决Socket的粘包处理 使用方法 A2DTcpClient client = new A2DTcpClient("127.0.0.1", 5000); client.NewMessageReceived…
粘包: 发生原因: 当调用send的时候,数据并不是即时发给客户端的.而是放到了系统的socket发送缓冲区里,等缓冲区满了.或者数据等待超时了,数据才会发送,所以有时候发送太快的话,前一份数据还没有传给客户端,那么这份数据和上一份数据一起发给客户端的时候就会造成"粘包" . 解决方案: 解决根源的思想是避免不同段的数据一起发送. 方案1:前一段数据send完后,等待一段时间再send第二段数据.缺点:时间效率低,而且也无法完全避免问题[因为不清楚该设置多少时间才能保证前一份数据已经发…
复习下socket 编程的步骤: 服务端:   1 声明socket 实例 server = socket.socket()  #括号里不写  默认地址簇使用AF_INET  即 IPv4       默认type 为 sock.SOCK_STREAM 即 TCP/IP 协议    2 绑定IP地址和端口 server.bind(('localhost',9999))  #ip地址和端口  元组形式 ,端口为整数形式   3 开始监听 server.listen()   4 进入阻塞状态,等待连…