hi
This project uses the Windows service uses to connect to the client.
But i when the install & run service, that are not doing nothing.
windows service
socket programing (socket server)
my code project is:
static void Main()
{
db_connection ob_db = new db_connection();
ob_db.get_ip_port();
activator_service_01.activator_srv_Service.ip_srv = activator_service_01.db_connection.ip_srv_db;
activator_service_01.activator_srv_Service.port_srv = activator_service_01.db_connection.port_srv_db;
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[]
{
new activator_srv_Service()
};
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
partial class activator_srv_Service : System.ServiceProcess.ServiceBase
{
public static string ip_srv;
public static int port_srv;
private static string res_req_client;
Thread srv_t;
public activator_srv_Service()
{
InitializeComponent();
this.AutoLog = true;
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog_ActivatorService.Source = "MySource";
eventLog_ActivatorService.Log = "MyNewLog";
}
protected override void OnStart(string[] args)
{
start_socket();
eventLog_ActivatorService.WriteEntry("In OnStart");
}
protected override void OnStop()
{
eventLog_ActivatorService.WriteEntry("In onStop.");
srv_t.Abort();
}
protected override void OnContinue()
{
eventLog_ActivatorService.WriteEntry("In OnContinue.");
}
void start_socket()
{
try
{
srv_t = new Thread(new ThreadStart
(activator_srv_Service.AsynchronousSocketListener.StartListening));
srv_t.IsBackground = true;
srv_t.Start();
return;
}
catch
{
return;
}
}
public class StateObject
{
public Socket workSocket = null;
public const int BufferSize = 1024;
public byte[] buffer = new byte[BufferSize];
public StringBuilder sb = new StringBuilder();
}
public class AsynchronousSocketListener
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
public AsynchronousSocketListener()
{
}
public static string check_user_reg_fetch(string client_str)
{
string[] tmp_client_info = client_str.Split('#');
string active_code = tmp_client_info[0];
active_code = active_code.Replace("'", "''");
active_code = active_code.Trim();
string ip_client = tmp_client_info[1];
ip_client = ip_client.Replace("'", "''");
ip_client = ip_client.Trim();
string port_client = tmp_client_info[2];
port_client = port_client.Replace("'", "''");
port_client = port_client.Trim();
string con_str_client = tmp_client_info[3];
con_str_client = con_str_client.Replace("'", "''");
con_str_client = con_str_client.Trim();
db_connection ob_db = new db_connection();
string sub_active_code = active_code.Substring(0, 5);
string query_check;
if (sub_active_code == "IR04R")
{
query_check = "SELECT active_code_r FROM tbl_srv_1 WHERE active_code_r= '" + active_code + "' ";
ob_db.check_active_code(query_check, sub_active_code, ip_client, port_client, con_str_client);
res_req_client = ob_db.result_req_client;
}
else if (sub_active_code == "IR04M")
{
query_check = "SELECT active_code_m FROM tbl_srv_2 WHERE active_code_m= '" + active_code + "' ";
ob_db.check_active_code(query_check, sub_active_code, ip_client, port_client, con_str_client);
res_req_client = ob_db.result_req_client;
}
else if (sub_active_code == "IR04S")
{
query_check = "SELECT active_code_s FROM tbl_srv_3 WHERE active_code_s= '" + active_code + "' ";
ob_db.check_active_code(query_check, sub_active_code, ip_client, port_client, con_str_client);
res_req_client = ob_db.result_req_client;
}
else if (sub_active_code == "IR04C")
{
query_check = "SELECT active_code_c FROM tbl_4 WHERE active_code_c= '" + active_code + "' ";
ob_db.check_active_code(query_check, sub_active_code, ip_client, port_client, con_str_client);
res_req_client = ob_db.result_req_client;
}
return res_req_client;
}
public static void StartListening()
{
byte[] recvDataBytes = new byte[1024];
IPHostEntry ipHost = Dns.Resolve(ip_srv);
IPAddress serverAdd = ipHost.AddressList[0];
IPEndPoint ep = new IPEndPoint(serverAdd, port_srv);
Socket listenerSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
listenerSock.Bind(ep);
listenerSock.Listen(10);
while (true)
{
allDone.Reset();
listenerSock.BeginAccept(new AsyncCallback(AcceptCallback), listenerSock);
allDone.WaitOne();
}
}
catch
{
return;
}
}
public static void AcceptCallback(IAsyncResult ar)
{
allDone.Set();
Socket listener = (Socket)ar.AsyncState;
Socket handler = listener.EndAccept(ar);
StateObject state = new StateObject();
state.workSocket = handler;
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state);
}
public static void ReadCallback(IAsyncResult ar)
{
string content = string.Empty;
StateObject state = (StateObject)ar.AsyncState;
Socket handler = state.workSocket;
int bytesRead = handler.EndReceive(ar);
if (bytesRead > 0)
{
state.sb.Append(System.Text.UTF8Encoding.UTF8.GetString(state.buffer, 0, bytesRead));
content = state.sb.ToString();
if (content == "" || content == "Data to the remote device.")
{
content = "Hi, I'm wating for your request...";
}
else
{
content = check_user_reg_fetch(content);
}
if (content.IndexOf("") > -1)
{
Send(handler, content);
}
else
{
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state);
}
}
}
private static void Send(Socket handler, string data)
{
byte[] byteData = System.Text.UTF8Encoding.UTF8.GetBytes(data);
handler.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), handler);
}
private static void SendCallback(IAsyncResult ar)
{
try
{
Socket handler = (Socket)ar.AsyncState;
int byteSent = handler.EndSend(ar);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
catch (Exception e)
{
}
}
}
}
}
class db_connection
{
public static string[] pool_info;
SqlConnection con;
SqlCommand cmd;
public string result_req_client;
public static string ip_srv_db;
public static int port_srv_db;
public static string strCon_sysDb = (@"Data Source=.;Initial Catalog=_ServerDb;Integrated Security=True");
private void con_db()
{
con = new SqlConnection(strCon_sysDb);
con.Open();
}
protected void del_update_insert(string query)
{
con_db();
cmd = new SqlCommand(query, con);
cmd.ExecuteNonQuery();
con.Close();
SqlConnection.ClearPool(con);
}
public void get_ip_port()
{
con_db();
string query = "SELECT ip_set , port_set FROM tbl_set_service WHERE srv_call = 'activator_srv'";
cmd = new SqlCommand(query, con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.Read())
{
ip_srv_db = (dr["ip_set"].ToString()).Trim();
port_srv_db =Convert.ToInt32((dr["port_set"].ToString()).Trim());
}
else {
ip_srv_db = "127.0.0.1";
port_srv_db =6363 ;
}
dr.Close();
con.Close();
SqlConnection.ClearPool(con);
}
protected void get_req(string query, string check_db)
{
con_db();
cmd = new SqlCommand(query, con);
pool_info = new string[8];
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.Read())
{
if (check_db == "IR04R")
{
pool_info[0] = dr["root"].ToString();
pool_info[1] = dr["name_base"].ToString();
pool_info[2] = dr["state"].ToString();
pool_info[3] = dr["city"].ToString();
pool_info[4] = dr["collectionName"].ToString();
result_req_client = pool_info[0] + "#" + pool_info[1] + "#" + pool_info[2] + "-" + pool_info[3]
+ "#" + pool_info[4];
}
else if (check_db == "IR04M")
{
pool_info[0] = dr["root"].ToString();
pool_info[1] = dr["name_base"].ToString();
pool_info[2] = dr["name_m"].ToString();
pool_info[3] = dr["state"].ToString();
pool_info[4] = dr["city"].ToString();
pool_info[5] = dr["collectionName"].ToString();
result_req_client = pool_info[0] + "#" + pool_info[1] + "#" + pool_info[2] + "#" + pool_info[3]
+ "-" + pool_info[4] + "#" + pool_info[5];
}
else if (check_db == "IR04S")
{
pool_info[0] = dr["root"].ToString();
pool_info[1] = dr["name_base"].ToString();
pool_info[2] = dr["name_m"].ToString();
pool_info[3] = dr["name_s"].ToString();
pool_info[4] = dr["state"].ToString();
pool_info[5] = dr["city"].ToString();
pool_info[6] = dr["collectionName"].ToString();
result_req_client = pool_info[0] + "#" + pool_info[1] + "#" + pool_info[2] + "#" + pool_info[3]
+ "#" + pool_info[4] + "-" + pool_info[5] + "#" + pool_info[6];
}
else if (check_db == "IR04C")
{
pool_info[0] = dr["root"].ToString();
pool_info[1] = dr["name_base"].ToString();
pool_info[2] = dr["name_m"].ToString();
pool_info[3] = dr["name_s"].ToString();
pool_info[4] = dr["name_c"].ToString();
pool_info[5] = dr["state"].ToString();
pool_info[6] = dr["city"].ToString();
pool_info[7] = dr["collectionName"].ToString();
result_req_client = pool_info[0] + "#" + pool_info[1] + "#" + pool_info[2] + "#" + pool_info[3]
+ "#" + pool_info[4] + "#" + pool_info[5] + "-" + pool_info[6] + "#" + pool_info[7];
}
}
dr.Close();
con.Close();
SqlConnection.ClearPool(con);
}
public void check_active_code(string query, string check_db, string _ip, string _port, string _conStr)
{
{
con_db();
cmd = new SqlCommand(query, con);
pool_info = new string[1];
SqlDataReader dr;
string query_fetch;
dr = cmd.ExecuteReader();
if (dr.Read())
{
if (check_db == "IR04R")
{
del_update_insert("UPDATE tbl_srv_1 SET active_flag_r = 'True' , ip_r = '"
+ _ip + "' , port_r = '" + _port + "' , con_str_r = '" + _conStr
+ "' WHERE active_code_r = '" + (dr["active_code_r"].ToString()) + "'");
query_fetch = "SELECT root , name_base , state , city , collectionName FROM view_sub_1 WHERE active_code_r = '" + (dr["active_code_r"].ToString()) + "'";
get_req(query_fetch, check_db);
}
else if (check_db == "IR04M")
{
del_update_insert("UPDATE tbl_srv_2 SET active_flag_m = 'True' , ip_m = '"
+ _ip + "' , port_m = '" + _port + "' , con_str_m = '" + _conStr
+ "' WHERE active_code_m = '" + (dr["active_code_m"].ToString()) + "'");
query_fetch = "SELECT root , name_base , name_m , state , city , collectionName FROM view_sub_master WHERE active_code_m = '" + (dr["active_code_m"].ToString()) + "'";
get_req(query_fetch, check_db);
}
else if (check_db == "IR04S")
{
del_update_insert("UPDATE tbl_srv_3 SET active_flag_s = 'True' , ip_s = '"
+ _ip + "' , port_s = '" + _port + "' , con_str_s = '" + _conStr
+ "' WHERE active_code_s = '" + (dr["active_code_s"].ToString()) + "'");
query_fetch = "SELECT root , name_base , name_m , name_s , state , city , collectionName FROM view_sub_slave WHERE active_code_s = '" + (dr["active_code_s"].ToString()) + "'";
get_req(query_fetch, check_db);
}
else if (check_db == "IR04C")
{
del_update_insert("UPDATE tbl_4 SET active_flag_c = 'True' , ip_c = '"
+ _ip + "' , port_c = '" + _port + "' , con_str_c = '" + _conStr
+ "' WHERE active_code_c = '" + (dr["active_code_c"].ToString()) + "'");
query_fetch = "SELECT root , name_base , name_m , name_s , name_c , state , city , collectionName FROM view_sub_client WHERE active_code_c = '" + (dr["active_code_c"].ToString()) + "'";
get_req(query_fetch, check_db);
}
}
else
{
result_req_client = "your requst is incorrect...";
}
dr.Close();
con.Close();
SqlConnection.ClearPool(con);
}
}
}
please help me!