Following code can be used to communicate with internet from a console application.
using System;
using System.Security.Cryptography;
using System.Text;
using System.Net.Sockets;
using System.IO;
namespace GirderInternetEventClient
{
public class GirderInternetEventClient
{
public GirderInternetEventClient()
{
}
public static void Main(string[] args)
{
if (args.Length == 4)
{
sendEventString(args[0], int.Parse(args[1]), args[2], args[3]);
return;
}
Console.WriteLine("Girder Internet Event Client");
Console.Write("Enter host [localhost]: ");
string host = Console.ReadLine();
if (host.Equals("")) host = "localhost";
Console.Write("Enter port [1024]: ");
string port = Console.ReadLine();
if (port.Equals("")) port = "1024";
Console.Write("Enter password [NewDefPWD]: ");
string password = Console.ReadLine();
if (password.Equals("")) password = "NewDefPWD";
Console.Write("Enter event [CR ends]: ");
string event_string = Console.ReadLine();
while (!event_string.Equals(""))
{
sendEventString(host, int.Parse(port), password, event_string);
Console.Write("Enter event [CR ends]: ");
event_string = Console.ReadLine();
}
Console.WriteLine("Done");
}
public static String getHexString(byte[] bytes)
{
String hex_string = "";
byte[] item = { 0 };
for (int i = 0; i < bytes.Length; i++)
{
item[0] = bytes[i];
hex_string += BitConverter.ToString(item);
}
return hex_string;
}
public static String getMD5String(String str)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash((new UTF8Encoding()).GetBytes(str));
return getHexString(result);
}
public static void sendEventString(String hostname, int port, String password, String event_string)
{
TcpClient tcpClient = new TcpClient();
try
{
tcpClient.Connect(hostname, port);
NetworkStream networkStream = tcpClient.GetStream();
StreamReader input = new StreamReader(networkStream);
StreamWriter output = new StreamWriter(networkStream);
output.AutoFlush = true;
output.WriteLine("quintessence");
String cookie = input.ReadLine();
output.WriteLine(getMD5String(cookie + ":" + password));
String accept_result = input.ReadLine();
if (accept_result.Equals("accept"))
{
output.WriteLine(event_string);
output.WriteLine("close");
}
}
finally
{
tcpClient.Close();
}
}
}
}
No comments:
Post a Comment