走进底层用Socket发包例程

易语言 2020-09-01 14:40:12

走进底层用Socket发包例程

可模拟发送任意字节集封包。

需要特别提醒的是,https网页需要你自己去加密以后发包。

总体来说这种方式还是不错的,尤其是速度方面,例程为纯源码。

我封装成了子程序方便大家学习,同时用核心库的客户端组件也写了一个例子做一个比对。

.如果真 (是否为空 (缓冲区长度))
缓冲区长度 = 100000
.如果真结束
WSAStartup (2, 局_套接字)
局_客户端句柄 = socket (#AF_INET, #SOCK_STREAM, #IPPROTO_TCP)
.如果真 (局_客户端句柄 = #socket_error)
返回 ({ })
.如果真结束
局_绑定结构.常量 = #AF_INET
局_IP地址 = 转换为IP地址 (地址)
局_绑定结构.地址 = inet_addr (局_IP地址)
局_绑定结构.端口 = htons (取端口 (地址))
connect (局_客户端句柄, 局_绑定结构, 16)
局_超时.空闲时间 = 超时
setsockopt (局_客户端句柄, #SOL_SOCKET, #SO_SNDTIMEO, 局_超时, 4)
setsockopt (局_客户端句柄, #SOL_SOCKET, #SO_RCVTIMEO, 局_超时, 4)
send (局_客户端句柄, 封包, 取字节集长度 (封包), 0)
延时 (超时)
局_返回 = 取空白字节集 (缓冲区长度)
局_长度 = recv (局_客户端句柄, 局_返回, 缓冲区长度, 0)
局_返回 = 取字节集左边 (局_返回, 局_长度)
shutdown (局_客户端句柄, #SD_SEND)
closesocket (局_客户端句柄)
WSACleanup ()
返回 (局_返回)