zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Http 代理工具 实战 支持网页与QQ代理

QQ网页代理工具HTTP 实战 支持
2023-09-14 08:59:38 时间
ExpandedBlockStart.gif 复制代码         private void CloseSocket(Socket socket)
        {
            CloseSocket(socket, true);
        }
        private void CloseSocket(Socket socket, bool shutdown)
        {
            if (socket != null)
            {
                if (shutdown)
                {
                    socket.Shutdown(SocketShutdown.Both);
                }
                socket.Close();
            }
        } 复制代码
复制代码 ExpandedBlockStart.gif           #region 创建中转Socket及建立连接
            IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, port);
            Socket IPsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                IPsocket.Connect(ipEndpoint); Write("-----Socket 建立连接! IP地址:" + ipAddress + "网址:http://" + host);
            }
            catch (Exception err)
            {
                Write("连接失败 :" + err.Message);
                Write("退出请求!!!");
                CloseSocket(IPsocket, false);
                return;
            }  
            #endregion
复制代码 ExpandedBlockStart.gif             if (isConnect)//QQ链接方式
            {
                byte[] qqOkData = QQokProxyData();
                clientSocket.Send(qqOkData, 0, qqOkData.Length, 0);
            }
            else//正常网页,直接转发
            {
                IPsocket.Send(sendBytes, 0);
            }
        {
            string data = "HTTP/1.0 200 Connection established";//返回建立成功";
            return System.Text.Encoding.ASCII.GetBytes(data);
        }
ExpandedBlockStart.gif 复制代码           #region QQ发送/接收中转请求
             int length = 0, count = 0;
            if (isConnect)
            {
                System.Threading.Thread.Sleep(400);//关键时延
                //循环发送客户端请求,接收服务器返回
                DateTime start = DateTime.Now;
                while (true)
                {
                    if (IPsocket.Available == 0   clientSocket.Available == 0)
                    {
                        if (((TimeSpan)(DateTime.Now - start)).TotalMinutes   15)
                        {
                            break;//掉线重拔处理
                        }
                    }
                    else
                    {
                        start = DateTime.Now;
                    }
                        
                    
                    try
                    {
                        while (clientSocket.Available != 0)
                        {
                            sendLength = clientSocket.Receive(qqSendBytes, qqSendBytes.Length, 0);
                            IPsocket.Send(qqSendBytes, sendLength, 0);
                            Write("发送字节数: " + sendLength.ToString());
                        }

                        System.Threading.Thread.Sleep(500);
                        while (IPsocket.Available != 0)
                        {
                            recvLength = IPsocket.Receive(qqRecvBytes, qqRecvBytes.Length, 0);
                            clientSocket.Send(qqRecvBytes, recvLength, 0);
                            Write("接收字节数: " + recvLength.ToString());
                        }
                    }
                    catch
                    {
                    }
                }
            }
            else
            {
                try
                {
                    do
                    {
                        length = IPsocket.Receive(recvBytes, count, IPsocket.Available, 0);
                        count = count + length;
                        Write("接收转发请求返回的数据中..." + length);
                        System.Threading.Thread.Sleep(200);//关键点,请求太快数据接收不全
                    }
                    while (IPsocket.Available   0);
                    clientSocket.Send(recvBytes, 0, count, 0);
                }
                catch(Exception err)
                {
                    Write(err.Message);
                }
            }
            #endregion 复制代码
复制代码 ExpandedBlockStart.gif             #region 结束请求,关闭客户端Socket
            Write("接收完成。返回客户端数据..." + count);
            CloseSocket(IPsocket);
            CloseSocket(clientSocket);
            recvBytes = null;
            Write("本次请求完成,已关闭连接...");
            Write("-----------------------------请求结束---------------------------");
            #endregion
本QQ代理软件在服务器上运行长达三个多月,使用过程未发现异常退出情况。当然前提就我一个人在用了~哈哈~
freeswitch使用sip集成网页电话,nginx配置https协议 文章目录 网页集成软电话 配置freeswitch开启wss nginx配置自签名https域名 页面集成软电话开发 网页集成软电话 网页集成软电话需要使用https协议,页面与freeswitch平台建立websocket长连接。使用jssip库进行相关开发