private int GetPort( CommandResponse response ) { int port = 0; int pos1 = response.Message.IndexOf("("); int pos2 = response.Message.IndexOf(","); for( int i =0; i<3; i++ ) { pos1 = pos2 + 1; pos2 = response.Message.IndexOf( ",",pos1 ); } pos1 = pos2 + 1; pos2 = response.Message.IndexOf( ",",pos1 ); string PortSubstr1 = response.Message.Substring( pos1, pos2 - pos1 ); pos1 = pos2 + 1; pos2 = response.Message.IndexOf( ")",pos1 ); string PortSubstr2 = response.Message.Substring( pos1, pos2 - pos1 ); //evaluate port number port = Convert.ToInt32( PortSubstr1 ) * 256; port = port + Convert.ToInt32( PortSubstr2 ); return port; }
private CommandResponse SendCommand( string method, string parameter ) { // Building the request and writing it to the controolStream string request = method; if( parameter != null && parameter.Length > 0 ) { request += " "+parameter; } request += "\r\n"; byte[] rawBuffer = Encoding.ASCII.GetBytes( request ); controlStream.Write( rawBuffer, 0, rawBuffer.Length ); // Reading in our CommandResponse from our controlStream CommandResponse retVal = new CommandResponse(); int bufferSize = 256; byte[] buffer = new byte[ bufferSize+1 ]; while( true ) { // We need to "keep" the buffer and not flush it, therefor using the "secret" read function which preserves the stream and doesn't // increase the "stream pointer" int bytesRead = controlStream.ReadButDontClear( buffer, 0, bufferSize ); retVal.message += Encoding.ASCII.GetString( buffer, 0, bytesRead ); if( bytesRead == 0 ) break; } retVal.status = controlStream.StatusCode; return retVal; }
private string GetIP( CommandResponse response ) { StringBuilder ip = new StringBuilder(); string tmp = null; int pos1 = response.Message.IndexOf("(")+1; int pos2 = response.Message.IndexOf(","); for( int i =0; i < 3; i++ ) { tmp = response.Message.Substring( pos1, pos2 - pos1 ) + "."; ip.Append( tmp ); pos1 = pos2 + 1; pos2 = response.Message.IndexOf( ",", pos1 ); } tmp = response.Message.Substring(pos1,pos2-pos1); ip.Append( tmp ); return ip.ToString(); }