|
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 ) 返回 (假)![](source/plugin/code_color/image/code3/01.png) 判断 (_启动窗口.选择框_代理.选中 = 真)![](source/plugin/code_color/image/code3/03.png) 代理ip = 文本_替换 (代理ip, , , , #换行符, “”, , , , , , , , )![](source/plugin/code_color/image/code3/03.png) 代理端口 = 到整数 (文本_取右边 (代理ip, “:”, , , )) ![](source/plugin/code_color/image/code3/03.png) 代理地址 = 文本_取左边 (代理ip, “:”, , , )![](source/plugin/code_color/image/code3/03.png) 判断 (代理地址 ≠ “”)![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) addr.sin_port = htons (代理端口 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) addr.sin_addr = inet_addr (代理地址 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/08.png) addr.sin_family = 2 ![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/09.png) addr.sin_port = htons (到短整数 (iPort )) ![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/04.png) addr.sin_addr = inet_addr (sAddr )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/04.png) addr.sin_family = 2 ![](source/plugin/code_color/image/code3/08.png) ![](source/plugin/code_color/image/code3/02.png) ![](source/plugin/code_color/image/code3/09.png) addr.sin_port = htons (到短整数 (iPort )) ![](source/plugin/code_color/image/code3/04.png) addr.sin_addr = inet_addr (sAddr )![](source/plugin/code_color/image/code3/04.png) addr.sin_family = 2 ![](source/plugin/code_color/image/code3/02.png) ret = connect (s, addr, 16 ) 如果真 (ret = -1 ) closesocket (s ) 返回 (假)![](source/plugin/code_color/image/code3/01.png) 如果真 (代理地址 ≠ “” 且 代理端口 ≠ 0 )![](source/plugin/code_color/image/code3/03.png) bys = { 5, 1, 0 }![](source/plugin/code_color/image/code3/03.png) buf = 取变量数据地址 (bys )![](source/plugin/code_color/image/code3/03.png) len = 取字节集长度 (bys )![](source/plugin/code_color/image/code3/03.png) timeout = 到字节集 (5000 ) setsockopt (s, 65535, 4101, timeout, 4 ) setsockopt (s, 65535, 4101, timeout, 4 )![](source/plugin/code_color/image/code3/03.png) ret = send (s, buf, len, 0 )![](source/plugin/code_color/image/code3/03.png) 如果真 (ret = -1 )![](source/plugin/code_color/image/code3/03.png) closesocket (s )![](source/plugin/code_color/image/code3/03.png) 返回 (假) bys = 取空白字节集 (128)![](source/plugin/code_color/image/code3/03.png) buf = 取变量数据地址 (bys )![](source/plugin/code_color/image/code3/03.png) len = 取字节集长度 (bys )![](source/plugin/code_color/image/code3/03.png) ret = recv (s, buf, len, 0 )![](source/plugin/code_color/image/code3/03.png) 如果真 (ret = -1 )![](source/plugin/code_color/image/code3/03.png) closesocket (s )![](source/plugin/code_color/image/code3/03.png) 返回 (假)![](source/plugin/code_color/image/code3/03.png) 判断 (bys [1 ] = 5 且 bys [2 ] = 0 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) bys = GetProxyAddressBytes (sAddr, iPort )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) buf = 取变量数据地址 (bys )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) len = 取字节集长度 (bys )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) ret = send (s, buf, len, 0 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) 如果真 (ret = -1 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) closesocket (s )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) 返回 (假)![](source/plugin/code_color/image/code3/03.png) bys = 取空白字节集 (128)![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) buf = 取变量数据地址 (bys )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) len = 取字节集长度 (bys )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) ret = recv (s, buf, len, 0 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) 如果真 (ret = -1 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) closesocket (s )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) 返回 (假)![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) 判断 (bys [1 ] = 5 且 bys [2 ] = 0 )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/08.png) ![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) closesocket (s )![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/03.png) 返回 (假)![](source/plugin/code_color/image/code3/03.png) ![](source/plugin/code_color/image/code3/08.png) ![](source/plugin/code_color/image/code3/02.png) ![](source/plugin/code_color/image/code3/03.png) closesocket (s )![](source/plugin/code_color/image/code3/03.png) 返回 (假)![](source/plugin/code_color/image/code3/03.png) 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 )![](source/plugin/code_color/image/code3/05.png) errno = WSAGetLastError ()![](source/plugin/code_color/image/code3/05.png) 判断 (errno = 997 或 errno = 0 )![](source/plugin/code_color/image/code3/05.png) 返回 (真)![](source/plugin/code_color/image/code3/05.png) closesocket (s )![](source/plugin/code_color/image/code3/05.png) TcpClientKeySetSocket (keyPtr, 0 )![](source/plugin/code_color/image/code3/05.png) TcpClientHandleDestory (recvHandle )![](source/plugin/code_color/image/code3/05.png) 返回 (假)![](source/plugin/code_color/image/code3/16.png) ![](source/plugin/code_color/image/code3/02.png) 返回 (假)![](source/plugin/code_color/image/code3/02.png)
单线程没事 多线程在closesocket 关闭套接字得时候会崩溃 或者闪退 求大神指导下
|