Http 代理工具 实战 支持网页与QQ代理
2023-09-14 08:59:38 时间
![ExpandedBlockStart.gif](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
![复制代码](http://common.cnblogs.com/images/copycode.gif)
{
CloseSocket(socket, true);
}
private void CloseSocket(Socket socket, bool shutdown)
{
if (socket != null)
{
if (shutdown)
{
socket.Shutdown(SocketShutdown.Both);
}
socket.Close();
}
}
![复制代码](http://common.cnblogs.com/images/copycode.gif)
![复制代码](http://common.cnblogs.com/images/copycode.gif)
![ExpandedBlockStart.gif](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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
![复制代码](http://common.cnblogs.com/images/copycode.gif)
![ExpandedBlockStart.gif](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
{
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](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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
![复制代码](http://common.cnblogs.com/images/copycode.gif)
![复制代码](http://common.cnblogs.com/images/copycode.gif)
![ExpandedBlockStart.gif](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
Write("接收完成。返回客户端数据..." + count);
CloseSocket(IPsocket);
CloseSocket(clientSocket);
recvBytes = null;
Write("本次请求完成,已关闭连接...");
Write("-----------------------------请求结束---------------------------");
#endregion
本QQ代理软件在服务器上运行长达三个多月,使用过程未发现异常退出情况。当然前提就我一个人在用了~哈哈~
freeswitch使用sip集成网页电话,nginx配置https协议 文章目录 网页集成软电话 配置freeswitch开启wss nginx配置自签名https域名 页面集成软电话开发 网页集成软电话 网页集成软电话需要使用https协议,页面与freeswitch平台建立websocket长连接。使用jssip库进行相关开发