public virtual void Run() { int nameTrnId; NameServicePacket response; try { while (_thread == Thread.CurrentThread()) { _socket.SoTimeOut = _closeTimeout; int len = _socket.Receive(_rcvBuf, 0, RcvBufSize); if (_log.Level > 3) { _log.WriteLine("NetBIOS: new data read from socket"); } nameTrnId = NameServicePacket.ReadNameTrnId(_rcvBuf, 0); response = (NameServicePacket)_responseTable.Get(nameTrnId); if (response == null || response.Received) { continue; } lock (response) { response.ReadWireFormat(_rcvBuf, 0); if (_log.Level > 3) { _log.WriteLine(response); Hexdump.ToHexdump(_log, _rcvBuf, 0, len); } if (response.IsResponse) { response.Received = true; Runtime.Notify(response); } } } } catch (TimeoutException) { } catch (Exception ex) { if (_log.Level > 2) { Runtime.PrintStackTrace(ex, _log); } } finally { TryClose(); } }
private void btnRequest_Click(object sender, System.EventArgs e) { SocketEx sock = null; try { Uri reqUri = new Uri(txtURL.Text); string host = reqUri.Host; int port = reqUri.Port; string path = reqUri.PathAndQuery; sock = new SocketEx(_proxyType, _proxyServer, _proxyPort, _proxyUser, _proxyPwd); //configure preauthenticate sock.PreAuthenticate = _preAuthenticate; sock.Connect(host, port); string cmd = "GET " + path + " HTTP/1.0\r\n" + "Host: " + host + "\r\n\r\n"; sock.Send(_usedEnc.GetBytes(cmd)); //simple reading loop //read while have the data try { byte[] data = new byte[32 * 1024]; while (true) { int dataLen = sock.Receive(data); if (0 == dataLen) { break; } txtRes.Text += _usedEnc.GetString(data, 0, dataLen); } } catch (Exception ex) { txtRes.Text += Environment.NewLine + ex.ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Exception caught!"); } if (null != sock) { sock.Close(); } }
internal FtpResponse ReadResponse(int timeout) { SetProgress(true); try { _response = new FtpResponse(_encoding); _response.NewLineEvent += new FtpResponse.NewLineEventHandler(this.OnNewLine); _linesBuilder.NewLineEvent += new BytesRoad.Net.Ftp.Advanced.LinesBuilder.NewLineEventHandler(LinesBuilder_NewLineEvent); _socket.ReceiveTimeout = timeout; while (true) { ParseExistentData(); if (_response.IsCompleted) { break; } if (_linesBuilder.Available > 0) { continue; } int readNum = _socket.Receive(_recvBuffer); if (0 == readNum) { throw GetClosedException(); } _linesBuilder.PutData(_recvBuffer, readNum, false); } } finally { SetProgress(false); _linesBuilder.NewLineEvent -= new BytesRoad.Net.Ftp.Advanced.LinesBuilder.NewLineEventHandler(LinesBuilder_NewLineEvent); _response.NewLineEvent -= new FtpResponse.NewLineEventHandler(this.OnNewLine); _linesBuilder.ClearCompleted(); } return(_response); }
public TrackerResponse MakeWebRequest(Uri uriQuest, string httpProtocol, string headers) { Encoding encoder = Encoding.GetEncoding(0x4e4); Socket = new SocketEx(Proxy, ProxyServer, ProxyPort, ProxyUser, ProxyPassword); Socket.SetTimeout(0x30d40); Socket.PreAuthenticate = false; log.Info($"Connecting to {uriQuest.Host}:{uriQuest.Port}"); for (int i = 0; i < 5; i++) { try { Socket.Connect(uriQuest.Host, uriQuest.Port); log.Info("Connected Successfully"); break; } catch (Exception ex) { log.Warn(ex); log.Warn("Failed connection attempt: " + i); } } if (!Socket.Connected) { log.Error("Unable to connect. Quitting..."); return(null); } log.Info("======== Sending Command to Tracker ========"); string cmd = "GET " + uriQuest.PathAndQuery + " " + httpProtocol + "\r\n" + headers.Replace("{host}", uriQuest.Host) + "\r\n"; Socket.Send(encoder.GetBytes(cmd)); try { byte[] data = new byte[32 * 1024]; using (MemoryStream memStream = new MemoryStream()) { int dataLen = Socket.Receive(data); while (dataLen > 0) { memStream.Write(data, 0, dataLen); dataLen = Socket.Receive(data); } if (memStream.Length == 0) { log.Info("Error : Tracker Response is empty"); return(null); } TrackerResponse trackerResponse = new TrackerResponse(memStream); memStream.Close(); Socket.Close(); if (trackerResponse.doRedirect) { return(MakeWebRequest(new Uri(trackerResponse.RedirectionURL), httpProtocol, headers)); } log.Info("======== Tracker Response ========"); log.Info(trackerResponse.Headers.ToString()); if (trackerResponse.Dico == null) { log.Warn("*** Failed to decode tracker response :"); log.Warn(trackerResponse.Body); } return(trackerResponse); } } catch (Exception ex) { Socket.Close(); log.Error(ex); return(null); } }