|
ConnectServer | 逻辑型 | | |
keyPtr | 整数型 | | | | hIocp | 整数型 | | | | sAddr | 文本型 | | | | iPort | 整数型 | | | | extra | 整数型 | | | | 代理ip | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | addr | sockaddr_in | | | ret | 整数型 | | | s | 整数型 | | | recvHandle | 整数型 | | | errno | 整数型 | | | 代理地址 | 文本型 | | | 代理端口 | 整数型 | | | bys | 字节集 | | | buf | 整数型 | | | len | 整数型 | | | timeout | 字节集 | | | 代理分割 | 文本型 | | 0 | 代理端口1 | 文本型 | | |
s = TcpClientKeyGetSocket (keyPtr )如果真 (s = 0 )返回 (假)判断 (_启动窗口.选择框_代理.选中 = 真)代理ip = 文本_替换 (代理ip, , , , #换行符, “”, , , , , , , , )代理端口 = 到整数 (文本_取右边 (代理ip, “:”, , , )) 代理地址 = 文本_取左边 (代理ip, “:”, , , )判断 (代理地址 ≠ “”)addr.sin_port = htons (代理端口 )addr.sin_addr = inet_addr (代理地址 )addr.sin_family = 2 addr.sin_port = htons (到短整数 (iPort )) addr.sin_addr = inet_addr (sAddr )addr.sin_family = 2 addr.sin_port = htons (到短整数 (iPort )) addr.sin_addr = inet_addr (sAddr )addr.sin_family = 2 ret = connect (s, addr, 16 )如果真 (ret = -1 )closesocket (s )返回 (假)如果真 (代理地址 ≠ “” 且 代理端口 ≠ 0 )bys = { 5, 1, 0 }buf = 取变量数据地址 (bys )len = 取字节集长度 (bys )timeout = 到字节集 (5000 )setsockopt (s, 65535, 4101, timeout, 4 )setsockopt (s, 65535, 4101, timeout, 4 )ret = send (s, buf, len, 0 )如果真 (ret = -1 )closesocket (s )返回 (假)bys = 取空白字节集 (128)buf = 取变量数据地址 (bys )len = 取字节集长度 (bys )ret = recv (s, buf, len, 0 )如果真 (ret = -1 )closesocket (s )返回 (假)判断 (bys [1 ] = 5 且 bys [2 ] = 0 )bys = GetProxyAddressBytes (sAddr, iPort )buf = 取变量数据地址 (bys )len = 取字节集长度 (bys )ret = send (s, buf, len, 0 )如果真 (ret = -1 )closesocket (s )返回 (假)bys = 取空白字节集 (128)buf = 取变量数据地址 (bys )len = 取字节集长度 (bys )ret = recv (s, buf, len, 0 )如果真 (ret = -1 )closesocket (s )返回 (假)判断 (bys [1 ] = 5 且 bys [2 ] = 0 )closesocket (s )返回 (假)closesocket (s )返回 (假)ret = CreateIoCompletionPort (s, hIocp, keyPtr, 0)如果真 (ret = 0 )返回 (假)recvHandle = TcpClientHandleCreate (8192, #TCP_OP_RECV, extra, 0, 0)ret = WSARecv (s, recvHandle + 20, 1, recvHandle + 36, recvHandle + 40, recvHandle, 0 )判断 (ret = 0 )返回 (真)判断 (ret = -1 )errno = WSAGetLastError ()判断 (errno = 997 或 errno = 0 )返回 (真)closesocket (s )TcpClientKeySetSocket (keyPtr, 0 )TcpClientHandleDestory (recvHandle )返回 (假)返回 (假)
单线程没事 多线程在closesocket 关闭套接字得时候会崩溃 或者闪退 求大神指导下
|