Hak cipta dan penggunaan kembali:
Lisensi ini mengizinkan setiap orang untuk menggubah,
memperbaiki, dan membuat ciptaan turunan bukan untuk
kepentingan komersial, selama anda mencantumkan nama
penulis dan melisensikan ciptaan turunan dengan syarat
yang serupa dengan ciptaan asli.
Copyright and reuse:
This license lets you remix, tweak, and build upon work
non-commercially, as long as you credit the origin creator
and license it on your new creations under the identical
terms.
DAFTAR LAMPIRAN
Lampiran I FORM BIMBINGAN
Lampiran II USE CASE DIAGRAM SISTEM
Lampiran III CLASS DIAGRAM PROGRAM AGENT
Lampiran IV CLASS DIAGRAM PROGRAM CLIENT
Lampiran V FLOWCHART PROGRAM AGENT
a. Flowchart Program
b. Flowchart broadcast
c. Flowchart dbchecker
d. Flowchart listen10111
e. Flowchart Thread ChatHandler : doChat
f. Flowchart listen11111
g. Flowchart Thread DBConnector: doChat
h. Flowchart DBConnector : getAPlist
i. Flowchart DBConnector : getPlist
j. Flowchart DBConnector : getPIPlist
k. Flowchart listen11113
l. Flowchart Thread FileDataServer: doChat
m. Flowchart listen11114
n. Flowchart Thread FileByteServer: doChat
Lampiran VI FLOWCHART PROGRAM CLIENT
e. Flowchart Thread Listener
f. Flowchart Chat
g. Flowchart Thread listening10011
h. Flowchart Thread listener2
i. Flowchart MsgRcvr
j. Flowchart Aroom
k. Flowchart RDBForm
l. Flowchart Getdata
m. Flowchart Thread listenclient
n. Flowchart chat_init
o. Flowchart Thread listeningto10011
Lampiran VII KODE SUMBER 1 PROGRAM AGENT
a. Program.cs
Lampiran VIII KODE SUMBER 2 PROGRAM CLIENT
a. Form1.cs
b. Chat_init.cs
c. Chat.cs
d. Form_AProom.cs
e. RDBForm.cs
f. Msgrcvr.cs
Lampiran IX DATABASE DBAC
a. Entity Relationship Diagram (ERD)
b. Tabel ap
c. Tabel client
d. Tabel message
e. Instalasi MySQL
Lampiran XI TAMPILAN PROGRAM CLIENT
LAMPIRAN I
LAMPIRAN II
LAMPIRAN III
Class diagram dari program agent adalah sebagai berikut.
LAMPIRAN IV
Class diagram dari program client adalah sebagai berikut.
LAMPIRAN V
Pada aplikasi agent, flowchart dibagi dalam lima bagian besar berdasarkan class-nya.
Lima flowchart class tersebut diuraikan sebagai berikut.
d. Flowchart listen10111
e.
Flowchart New
h. Flowchart DBConnector :
getAPlist
i. Flowchart DBConnector :
getPlist
j. Flowchart DBConnector :
getPIPlist
k. Flowchart listen11113
l. Flowchart Thread
FileDataServer: doChat
m. Flowchart listen11114
n. Flowchart Thread
FileByteServer: doChat
LAMPIRAN VI
Pada aplikasi client, flowchart dibagi dalam enam bagian besar berdasarkan form-nya.
Enam bagian flowchart tersebut diuraikan sebagai berikut.
LAMPIRAN VII
a. FILE NAME : Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; using System.Threading; using MySql.Data.MySqlClient; using System.Collections; using System.IO; using System.Diagnostics; using System.Net.NetworkInformation; namespace Agent { class Program {public static void Main(string[] args) {
Thread t_listen10111, t_broadcast, t_dbchecker, t_listen11111, t_listen10112; bool live = false;
string livestr = null;
Agent AP = new Agent (); AP.getAPname();
AP.getIPserver(); AP.getIPkomputer();
MySqlCommand command;
MySqlConnection conn = new MySqlConnection("Server=" + AP.SIP + ";Port=3306;Database=DBPAP;Uid=root;Password=;default command timeout=20;"); conn.Open();
conn.CreateCommand();
command = conn.CreateCommand();
command.CommandText = "INSERT INTO agent VALUES ('" + AP.APname + "', '" + AP.APIP + "', '")";
command.ExecuteNonQuery(); conn.Close();
t_listen10111 = new Thread(new ThreadStart(AP.l_function1)); t_listen10111.Start();
t_dbchecker = new Thread(new ThreadStart(AP.messagecheckerinDBS)); t_dbchecker.Start();
t_broadcast = new Thread(new ThreadStart(AP.broadcast)); t_broadcast.Start();
t_listen11111 = new Thread(new ThreadStart(AP.l_function2)); t_listen11111.Start();
t_listen10112 = new Thread(new ThreadStart(AP.l_function3)); t_listen10112.Start();
while (live != true) { livestr = Console.ReadLine(); if (livestr == "pts") { handleClinet.count_elapsed_time(); conn.Open();
command.CommandText = "DELETE FROM agent WHERE AP_name = '" + AP.APname + "'";
command.ExecuteNonQuery(); conn.Close();
conn.Open();
command.CommandText = "DELETE FROM message WHERE APnameDest = '" + AP.APname + "' AND readstatus = '0'";
command.ExecuteNonQuery(); conn.Close();
conn.Open();
command.CommandText = "DELETE FROM client WHERE user_APname = '" + AP.APname + "'";
command.ExecuteNonQuery(); conn.Close();
live = true;
Console.WriteLine("---You can now shut agent---"); }
else {
Console.WriteLine("Type 'pts' before terminate!"); } } Console.Read(); } } class Agent {
public string APname, APIP, SIP; string PinAPtosend = "2|"; public static int conncount; public bool listenflag = false; IPHostEntry ipEntry;
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); TcpListener ap_listener10111, ap_listener11111, ap_listener10112; TcpClient ap_client10111, ap_client11111, ap_client10112;
public static Hashtable Listname = new Hashtable(); public static Hashtable Listname2 = new Hashtable(); public static Hashtable listIP = new Hashtable(); MySqlConnection conn1, conn2, conn3;
MySqlCommand command1;
MySqlDataReader reader1;
private string[] PinAP = new string[100];
public void getAPname() {
Console.Write("Agent name : "); APname = Console.ReadLine(); }
public void getIPserver() { Console.Write("IP DBS : "); SIP = Console.ReadLine(); try { Console.WriteLine("Pinging DBS..."); TcpClient cek = new TcpClient(); cek.Connect(SIP, 3306);
if (cek.Connected == true) {
cek.Close();
conn1 = new MySqlConnection("Server=" + SIP +
";Port=3306;Database=DBPAP;Uid=root;Password=;default command timeout=20;"); conn2 = new MySqlConnection("Server=" + SIP +
";Port=3306;Database=DBPAP;Uid=root;Password=;default command timeout=20;"); conn3 = new MySqlConnection("Server=" + SIP +
";Port=3306;Database=DBPAP;Uid=root;Password=;default command timeout=20;"); }
}
catch(Exception) {
Console.WriteLine("IP Server not valid. Please insert valid IP."); getIPserver();
} }
public void getIPkomputer() {
byte[] data = Encoding.ASCII.GetBytes(tekstosend);
sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); Console.WriteLine("Type 'pts' before terminate!");
Console.WriteLine("Agent Started!\nSending message : " + tekstosend); for (; ; ) { sock.SendTo(data, iep1); Thread.Sleep(250); } }
public void l_function1() {
IPAddress my_ipaddr = Dns.Resolve(APIP).AddressList[0]; ap_listener10111 = new TcpListener(my_ipaddr, 10111); ap_client10111 = default(TcpClient);
ap_listener10111.Start();
Console.WriteLine("Chat server started..."); while ((listenflag != true))
{
ap_client10111 = ap_listener10111.AcceptTcpClient();
byte[] bytesFrom = new byte[1048576]; string dataFromClient = null;
NetworkStream ap_stream = ap_client10111.GetStream();
ap_stream.Read(bytesFrom, 0, (int)ap_client10111.ReceiveBufferSize); dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom); dataFromClient = dataFromClient.TrimEnd('\n', '\0', '\r'); string[] splitchar = dataFromClient.Split('|');
string appcode = Convert.ToString(splitchar[0]); string data = Convert.ToString(splitchar[1]);
if (appcode == "4") //P data {
string[] nameandip = data.Split('^');
string tempname = Convert.ToString(nameandip[0]); string tempIP = Convert.ToString(nameandip[1]); //checklist(tempname, tempIP);
registeringtoDBandlist(tempname, tempIP); }
} }
public void l_function2() {
IPAddress my_ipaddr = Dns.Resolve(APIP).AddressList[0]; ap_listener11111 = new TcpListener(my_ipaddr, 11111); ap_client11111 = default(TcpClient);
ap_listener11111.Start();
Console.WriteLine("RDB server started..."); while ((listenflag != true))
{
ap_client11111 = ap_listener11111.AcceptTcpClient(); handleClinet2 client = new handleClinet2();
client.startClient(ap_client11111, Listname); }
}
private void registeringtoDBandlist(string tempname, string tempIP) { try { Listname.Add(tempname, ap_client10111); listIP.Add(tempname, tempIP); conncount++; //register to database conn1.Open(); command1 = conn1.CreateCommand();
command1.CommandText = "INSERT INTO client VALUES ('" + tempname + "', '" + tempIP + "', '" + APname + "')";
command1.ExecuteNonQuery(); conn1.Close();
Console.WriteLine("Client - " + tempname + " join."); handleClinet client = new handleClinet();
client.startClient(ap_client10111, tempname, Listname, APname);
conn1.Open();
command1.CommandText = "SELECT user_name FROM client WHERE user_APname = '" + APname + "'";
reader1 = command1.ExecuteReader();
while (reader1.Read()) {
for (int i = 0; i < reader1.FieldCount; i++) { PinAP[i] = reader1.GetValue(i).ToString(); PinAPtosend += PinAP[i] + "^"; } } reader1.Close(); conn1.Close(); messforward(PinAPtosend); PinAPtosend = "2|"; } catch { } }
public static void messforward(string message) {
foreach (DictionaryEntry Item in Listname) {
TcpClient messforwardSocket;
messforwardSocket = (TcpClient)Item.Value;
NetworkStream messforwardStream = messforwardSocket.GetStream(); Byte[] messforwardBytes = null;
messforwardBytes = Encoding.ASCII.GetBytes(message);
messforwardStream.Write(messforwardBytes, 0, messforwardBytes.Length); for (int i = 0; i < messforwardBytes.Length; i++)
{ messforwardBytes[i] = 000; } messforwardStream.Flush(); } }
public void messagecheckerinDBS() {
string APNameDest, PNameDest, PdestIP, PsenderIP, message, APNameSender, PNameSender;
MySqlCommand commandDB, commandDB2; bool dbcheckerflag = false;
MySqlDataReader reader2;
while (dbcheckerflag != true) {
conn2.Open();
commandDB = conn2.CreateCommand(); commandDB2 = conn3.CreateCommand();
commandDB.CommandText = "SELECT APNameDest, PNameDest, PdestIP, PsenderIP, message, APNameSender, PNameSender FROM message WHERE APnameDest = '" + APname + "' AND readstatus ='1'";
reader2 = commandDB.ExecuteReader();
if (APNameDest != null) {
try {
string messagetomyP = "3|" + APNameDest + "^" + PNameDest + "^" + PdestIP + "^" + PsenderIP + "^" + message + "^" + APNameSender + "^" + PNameSender;
//messforward(messagetomyP);//SALAH!!!!connect ke PdestIP lalu kirim message
TcpClient clientsend = new TcpClient();
NetworkStream streamsend = default(NetworkStream);
clientsend.Connect(PdestIP, 10002); streamsend = clientsend.GetStream();
//sending message
byte[] outStream = new byte[1048576];
outStream = System.Text.Encoding.ASCII.GetBytes(messagetomyP); streamsend.Write(outStream, 0, outStream.Length);
for (int j = 0; j < outStream.Length; j++) { outStream[j] = 000; } //closing connection streamsend.Flush(); Thread.Sleep(3000); streamsend.Dispose(); streamsend.Close(); clientsend.Close(); } catch { } //change readstatus conn3.Open();
//"UPDATE readstatus = '0' WHERE message = '...'"
commandDB2.CommandText = "UPDATE message SET readstatus = '0' WHERE message = '" + message + "'"; commandDB2.ExecuteNonQuery(); conn3.Close(); } else { } } conn2.Close(); Thread.Sleep(250); } }
public class handleClinet {
int count = 0; int counter = 0; TcpClient clientSocket; string clName, apname;
public static List<TimeSpan> ts = new List<TimeSpan>(); Hashtable clientsList;
bool flag = false; MySqlCommand commandHC; MySqlConnection connHC = new
MySqlConnection("Server=localhost;Port=3306;Database=DBPAP;Uid=root;Password=;default command timeout=20;");
public void startClient(TcpClient inClientSocket, string clientName, Hashtable cList, string APnamein) { this.clientSocket = inClientSocket; this.clName = clientName; this.apname = APnamein; this.clientsList = cList;
Thread ctThread = new Thread(doChat); ctThread.Start();
}
private void doChat() {
byte[] bytesFrom = new byte[1048576]; string dataFromClient = null;
string rCount = null;
Console.WriteLine("Client - " + clName + " in HC1.");
while (flag != true) {
try {
Stopwatch stw = new Stopwatch(); stw.Start();
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize); dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom); dataFromClient = dataFromClient.TrimEnd('\n', '\r', '\0');
string[] splitchar = dataFromClient.Split('|'); string tcode = Convert.ToString(splitchar[1]); if (tcode == "*&*")
{
string tPname = Convert.ToString(splitchar[2]); endChat(tPname);
break; }
rCount = Convert.ToString(requestCount);
for (int i = 0; i < bytesFrom.Length; i++) { bytesFrom[i] = 000; } Agent.messforward(dataFromClient); //networkStream.Dispose(); //networkStream.Close(); networkStream.Flush(); stw.Stop();
string path = @"D:\Skripsi\Agent\Agent\bin\Debug\LogResponseTime.txt"; string path2 = @"D:\Skripsi\Agent\Agent\bin\Debug\LogData.txt"; try { if (count == 0) { File.Delete(path); File.Delete(path2); count++;
using (StreamWriter sw = File.CreateText(path)) {
sw.WriteLine("APname : " + apname);
sw.WriteLine(counter + " Response time : " + stw.Elapsed); }
using (StreamWriter sw2 = File.CreateText(path2)) {
sw2.WriteLine("APname : " + apname);
sw2.WriteLine(counter + " Data : " + dataFromClient); }
counter++; }
else {
using (StreamWriter sw = File.AppendText(path)) {
sw.WriteLine(counter + "Response time : " + stw.Elapsed); ts.Add(stw.Elapsed);
}
Console.WriteLine(e); }
} }
private void endChat(string tPname) {
try {
//matikan client dan stream, ubah flag, hapus database //flag = true;
Agent.Listname.Remove(tPname); Agent.listIP.Remove(tPname); connHC.Open();
commandHC = connHC.CreateCommand();
commandHC.CommandText = "DELETE FROM client WHERE user_name = '" + clName + "' and user_APname = '" + apname + "'";
commandHC.ExecuteNonQuery(); connHC.Close();
Console.WriteLine(clName + " leave room."); string farewell = "6|" + clName + " leave room"; Agent.messforward(farewell); } catch //(Exception e) { //Console.WriteLine(e); } }
public static void count_elapsed_time() {
TimeSpan sum = new TimeSpan(); Console.Write("counting..."); for (int i = 0; i < ts.Count;i++ ) {
sum += ts[i]; }
Console.Write("Done.\n");
string path = @"D:\Skripsi\Agent\Agent\bin\Debug\LogCount.txt"; using (StreamWriter sw = File.CreateText(path))
{ try {
sw.WriteLine("count : " + ts.Count); sw.WriteLine("sum elapse time : " + sum);
TimeSpan avg = TimeSpan.FromTicks(sum.Ticks / ts.Count); sw.WriteLine("avg elapse time : " + avg);
}
catch { } }
}
} //end class handleClinet
public class handleClinet2 {
TcpClient clientSocket; Hashtable clientsList; bool flag = false; MySqlCommand commandHC2; MySqlConnection connHC2 = new
MySqlConnection("Server=localhost;Port=3306;Database=DBPAP;Uid=root;Password=;default command timeout=20;");
MySqlDataReader readerHC2;
string APtexttosend, Ptexttosend, PIPtexttosend;
public void startClient(TcpClient inClientSocket, Hashtable cList) {
this.clientSocket = inClientSocket; this.clientsList = cList;
Thread ctThread = new Thread(doChat); ctThread.Start();
}
private void doChat() {
byte[] bytesFrom = new byte[1048576]; string dataFromClient = null;
while (flag != true) {
try {
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize); dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom); dataFromClient = dataFromClient.TrimEnd('\n', '\r', '\0'); //Console.WriteLine(dataFromClient); if (dataFromClient == "1|*&*") { networkStream.Dispose(); networkStream.Close(); clientSocket.Close(); }
string[] splitchar = dataFromClient.Split('|'); string appcode = Convert.ToString(splitchar[0]); string data = Convert.ToString(splitchar[1]);
if (appcode == "5") {
string[] minorsplitchar = data.Split('^');
string minorappcode = Convert.ToString(minorsplitchar[0]); string minordata = Convert.ToString(minorsplitchar[1]);
if (minorappcode == "0") //this is AP list request {
getAPlist();
Byte[] sendBytes = null;
sendBytes = Encoding.ASCII.GetBytes(APtexttosend); networkStream.Write(sendBytes, 0, sendBytes.Length); //clean for next reuse
for (int i = 0; i < sendBytes.Length; i++) {
sendBytes[i] = 000; }
networkStream.Flush(); }
else if (minorappcode == "1") //this is P list in AP choosen {
getPlist(minordata); Byte[] sendBytes = null;
sendBytes = Encoding.ASCII.GetBytes(Ptexttosend); networkStream.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{ sendBytes[i] = 000; } networkStream.Flush(); getPIPlist(minordata); sendBytes = Encoding.ASCII.GetBytes(PIPtexttosend); networkStream.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{
sendBytes[i] = 000; }
networkStream.Flush(); }
else if (minorappcode == "2") //this is message and the attribute to write in DBS
{
} }
private void insertindatabase(string minordata) {
string[] atributmsg = minordata.Split('#');
string APNameDest = Convert.ToString(atributmsg[0]); string PNameDest = Convert.ToString(atributmsg[1]); string PDestIP = Convert.ToString(atributmsg[2]); string PSenderIP = Convert.ToString(atributmsg[3]); string message = Convert.ToString(atributmsg[4]); string APNameSender = Convert.ToString(atributmsg[5]); string PNameSender = Convert.ToString(atributmsg[6]); string readstatus = Convert.ToString(atributmsg[7]);
connHC2.Open();
commandHC2 = connHC2.CreateCommand();
commandHC2.CommandText = "INSERT INTO message VALUES ('" + APNameDest + "', '" + PNameDest + "', '" + PDestIP + "', '" + PSenderIP + "', '" + message + "', '" + APNameSender + "', '" + PNameSender + "', '1')";
commandHC2.ExecuteNonQuery(); connHC2.Close();
}
private void getPIPlist(string minordata) {
//take PIP ini DBS connHC2.Open();
commandHC2.CommandText = "SELECT user_IP FROM client WHERE user_APname = '" + minordata + "'";
readerHC2 = commandHC2.ExecuteReader();
PIPtexttosend = null; while (readerHC2.Read()) {
for (int i = 0; i < readerHC2.FieldCount; i++) { PIPtexttosend += readerHC2.GetString(i) + "#"; } } readerHC2.Close(); connHC2.Close(); }
private void getPlist(string minordata) {
connHC2.Open();
commandHC2 = connHC2.CreateCommand(); //take usernames ini DBS
commandHC2.CommandText = "SELECT user_name FROM client WHERE user_APname = '" + minordata + "'";
readerHC2 = commandHC2.ExecuteReader();
Ptexttosend = null; while (readerHC2.Read()) {
for (int i = 0; i < readerHC2.FieldCount; i++) { Ptexttosend += readerHC2.GetString(i) + "#"; } } readerHC2.Close(); connHC2.Close(); }
private void getAPlist() {
connHC2.Open();
commandHC2 = connHC2.CreateCommand();
commandHC2.CommandText = "SELECT AP_name FROM agent"; readerHC2 = commandHC2.ExecuteReader();
while (readerHC2.Read()) {
for (int i = 0; i < readerHC2.FieldCount; i++) {
APtexttosend += readerHC2.GetString(i) + "#"; }
}
readerHC2.Close(); connHC2.Close(); }
} //end class handleClinet2 }//end namespace
LAMPIRAN VIII
a. FILE NAME : Chat.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using System.Threading; namespace Client {public partial class Chat : Form {
TcpClient client10011; NetworkStream stream10011; string namedest, ipdest; Form1 form1;
Thread listening;
public Chat(Form1 form1_in, string namedest_in, string ipdest_in) { InitializeComponent(); form1 = form1_in; ipdest = ipdest_in; namedest = namedest_in; grp_chat.Text += namedest;
client10011 = new TcpClient();
writeinhistory("Establishing connection..."); Thread.Sleep(3000);
connecting();
listening = new Thread(new ThreadStart(listening10011)); listening.Start();
}
private void connecting() {
client10011.Connect(ipdest, 10011); writeinhistory("Connected!"); }
private void listening10011() {
for (; ; ) {
byte[] inStream = new byte[10025]; stream10011 = client10011.GetStream();
stream10011.Read(inStream, 0, (int)client10011.ReceiveBufferSize); string texttowrite = System.Text.Encoding.ASCII.GetString(inStream); texttowrite = texttowrite.TrimEnd('\0','\r','\n'); if (texttowrite == "*&*") { closethis(); } else { writeinhistory(texttowrite); } }
txb_histori.SelectionStart = txb_histori.Text.Length; txb_histori.ScrollToCaret();
txb_histori.Refresh(); }
private void btn_send_Click(object sender, EventArgs e) {
stream10011 = client10011.GetStream(); string texttosend;
texttosend = form1.P1.Pname + " : " + txb_write.Text + Environment.NewLine;
Byte[] sendBytes = Encoding.ASCII.GetBytes(texttosend); stream10011.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{ sendBytes[i] = 000; } stream10011.Flush(); writeinhistory(texttosend); txb_write.Text = ""; txb_write.Focus(); } void closethis() { form1.chatflag = false; invokeclosethis(); }
private void invokeclosethis() { if (InvokeRequired) { this.Invoke(new Action(invokeclosethis)); return; } this.Close(); }
private void btn_end_Click(object sender, EventArgs e) {
try {
string texttosend = "*&*";
stream10011 = client10011.GetStream();
Byte[] sendBytes = Encoding.ASCII.GetBytes(texttosend); stream10011.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{ sendBytes[i] = 000; } stream10011.Flush(); Thread.Sleep(1000); closethis(); } catch {
MessageBox.Show("Error exit chat form"); }
} } }
b. FILE NAME : Chat_init.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;
using System.Windows.Forms; using System.Net.Sockets; using System.Threading;
namespace Client {
public partial class Chat_init : Form { TcpListener listener10011; TcpClient client10011; TcpClient client10001; NetworkStream stream10011; NetworkStream stream10001; Form1 form1; string IPdest;
public bool listenflag, listenflag2; Thread t_listening10011;
public Chat_init(Form1 form1_in, string IPdest_in, string namedest_in) { InitializeComponent(); IPdest = IPdest_in; form1 = form1_in; grp_chat.Text += namedest_in; calldest(); Thread.Sleep(500);
listener10011 = new TcpListener(form1.P1.localIPs[0], 10011); client10011 = new TcpClient();
listener10011.Start();
writeinhistory("Establishing connection...");
t_listening10011 = new Thread(listeningto10011); t_listening10011.Start();
}
private void listeningto10011() {
string texttowrite = null;
while ((listenflag != true)) {
client10011 = listener10011.AcceptTcpClient(); writeinhistory("Connected!");
byte[] bytesFrom = new byte[10025]; while (listenflag2 != true)
{ try { stream10011 = client10011.GetStream(); stream10011.Read(bytesFrom, 0, (int)client10011.ReceiveBufferSize); texttowrite = Encoding.ASCII.GetString(bytesFrom); texttowrite = texttowrite.TrimEnd('\0', '\r', '\n'); if (texttowrite == "*&*") {
bytesFrom[i] = 000; } stream10011.Flush(); } catch { } } } }
private void writeinhistory(string texttowrite) {
if (InvokeRequired) {
this.Invoke(new Action<string>(writeinhistory), new object[] { texttowrite}); return;
}
txb_histori.Text += texttowrite + Environment.NewLine; txb_histori.Select(txb_histori.Text.Length - 1, 0); txb_histori.SelectionStart = txb_histori.Text.Length; txb_histori.ScrollToCaret();
txb_histori.Refresh(); }
private void calldest() {
try {
client10001 = new TcpClient(); client10001.Connect(IPdest, 10001); stream10001 = client10001.GetStream();
string texttosend = form1.P1.Pname + "|" + form1.P1.PIP;
Byte[] sendBytes = Encoding.ASCII.GetBytes(texttosend); stream10001.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{ sendBytes[i] = 000; } stream10001.Flush(); Thread.Sleep(500); client10001.Close(); }
catch { MessageBox.Show("Error calling destination"); } }
private void btn_send_Click(object sender, EventArgs e) {
stream10011= client10011.GetStream(); string texttosend;
texttosend = form1.P1.Pname + " : " + txb_write.Text + Environment.NewLine;
Byte[] sendBytes = Encoding.ASCII.GetBytes(texttosend); stream10011.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{ sendBytes[i] = 000; } stream10011.Flush(); writeinhistory(texttosend); txb_write.Text = ""; txb_write.Focus(); } void closethis() {
t_listening10011.Interrupt(); t_listening10011.Abort(); listener10011.Stop(); form1.chatflag = false; this.Close(); }
private void btn_end_Click(object sender, EventArgs e) {
try {
string texttosend = "*&*";
stream10011 = client10011.GetStream();
Byte[] sendBytes = Encoding.ASCII.GetBytes(texttosend); stream10011.Write(sendBytes, 0, sendBytes.Length); for (int i = 0; i < sendBytes.Length; i++)
{ sendBytes[i] = 000; } stream10011.Flush(); Thread.Sleep(7000); closethis(); } catch { } } } }
c. FILE NAME : Form_AProom.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; using System.Diagnostics; namespace Client {
public partial class Form_AProom : Form {
public Form1 mainForm; bool flag = false;
System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient(); NetworkStream Stream = default(NetworkStream);
Thread t_listenclient;
string plaintext, kript1, kript2, texttosend;
public Form_AProom(Form1 imainForm) {
InitializeComponent(); mainForm = imainForm;
texttosend = "4|" + plaintext; sendmess(texttosend);
texttosend = mainForm.P1.Pname;
t_listenclient = new Thread(new ThreadStart(listenclient)); t_listenclient.Start();
}
private void btn_end_Click(object sender, EventArgs e) { sendmess("1|*&*|"+mainForm.P1.Pname); mainForm.Visible = true; try { flag = true; Stream.Close(); t_listenclient.Interrupt(); t_listenclient.Abort(); } catch {
//MessageBox.Show("Exiting AP not succesfully"); }
this.Close(); }
private void invokelsbroommember(string data) {
if (InvokeRequired) {
this.Invoke(new Action<string>(invokelsbroommember), new object[] { data }); return;
}
string[] dataarr = data.Split('^'); string str;
lsb_room_member.Items.Clear();
for (int i = 0; i < dataarr.Length; i++) {
str = dataarr[i];
lsb_room_member.Items.Add(str); }
}
public void writeinhistory(string mesg) {
if (InvokeRequired) {
this.Invoke(new Action<string>(writeinhistory), new object[] { mesg }); return;
}
txb_histori.Text += mesg + Environment.NewLine; txb_histori.Select(txb_histori.Text.Length - 1, 0); txb_histori.SelectionStart = txb_histori.Text.Length; txb_histori.ScrollToCaret();
txb_histori.Refresh(); }
private void btn_send_Click(object sender, EventArgs e) {
plaintext = mainForm.P1.Pname + " : " + txb_write.Text; texttosend = "1|" + plaintext;
sendmess(texttosend); txb_write.Text = ""; txb_write.Focus(); }
private void sendmess(string mess) {
byte[] outStream = new byte[1048576];
outStream = System.Text.Encoding.ASCII.GetBytes(mess); Stream.Write(outStream, 0, outStream.Length);
Stream.Flush();
for (int i = 0; i < outStream.Length; i++) {
outStream[i] = 000; }
private void listenclient() {
while (flag != true) {
try {
int buffSize = 0;
byte[] inStream = new byte[1048576]; buffSize = clientSocket.ReceiveBufferSize; Stream.Read(inStream, 0, buffSize);
string textfromAP = System.Text.Encoding.ASCII.GetString(inStream); textfromAP = textfromAP.TrimEnd('\n', '\r', '\0');
//MessageBox.Show("textfromAP : " + textfromAP); try
{
string[] splitchar = textfromAP.Split('|'); string appcode = Convert.ToString(splitchar[0]); string data = Convert.ToString(splitchar[1]); if (appcode == "1") { if (data == "*&*") { } else { writeinhistory(data); } } else if (appcode == "2") { //"2|"=ke lsb member invokelsbroommember(data); } else if (appcode == "6") { //"6|"=leave room writeinhistory(data); } } catch (Exception e) { MessageBox.Show(e + ""); } } catch {
//MessageBox.Show("Error in listenclient : Not closed properly"); }
} }
private void btn_browse_Click(object sender, EventArgs e) {
RDBForm rdbf = new RDBForm(this); rdbf.Show();
}
private void Form_AProom_FormClosing(object sender, FormClosingEventArgs e) {
this.Dispose(); }
} }
using System.Net; using System.Threading;
using System.Runtime.CompilerServices;
namespace Client {
public partial class Form1 : Form {
public Client P1 = new Client();
Thread t_getBC, t_sendBC, t_listen, t_listen2; Socket socksend, sockget;
public TcpListener socklisten, socklisten2; NetworkStream sockstream, sockstream2; public TcpClient sockclient, sockclient2; IPEndPoint iep;
List<string> listPname = new List<string>(); List<string> listPIP = new List<string>(); List<string> listAPname = new List<string>(); List<string> listAPIP = new List<string>();
string tempAPsname, tempAPsIP, tempPsname, tempPsIP; public int index;
public bool listenflag, listenflag2, chatflag; private System.Object lockthis = new System.Object();
public Form1() {
InitializeComponent();
this.Size = new System.Drawing.Size(290,135); }
private void btn_login_Click(object sender, EventArgs e) {
//input data dan setting parameter P1.Pname = txb_nama.Text;
P1.mode = 1;
grp_Login.Visible = false; grp_pilihAP.Visible = true;
this.grp_pilihAP.Location = new System.Drawing.Point(12, 12); this.Text = "Choose AP here";
this.Size = new System.Drawing.Size(290,250); lbl_welcomeAP.Text += P1.Pname;
lbl_welcomeP.Text += P1.Pname;
//jalankan servis socket P1.getIPkomputer();
t_getBC = new Thread(getbroadcast); t_getBC.Start();
t_sendBC = new Thread(sendbroadcast); t_sendBC.Start();
t_listen = new Thread(listener); t_listen.Start();
t_listen2 = new Thread(listener2); t_listen2.Start();
}
private void btn_users_Click(object sender, EventArgs e) {
this.Text = "Choose someone to chat"; grp_pilihAP.Visible = false;
grp_pilihP.Visible = true;
this.grp_pilihP.Location = new System.Drawing.Point(12, 12); P1.mode = 2;
listAPname.Clear(); btn_join.Enabled = false; }
private void btn_APs_Click(object sender, EventArgs e) {
this.Text = "Choose AP here"; grp_pilihAP.Visible = true; grp_pilihP.Visible = false;
this.grp_pilihAP.Location = new System.Drawing.Point(12, 12); P1.mode = 1; lsb_Plist.Items.Clear(); listPname.Clear(); listPIP.Clear(); btn_chat.Enabled = false; }
private void btn_join_Click(object sender, EventArgs e) {
P1.APdestIP = listAPIP[index]; P1.APname = listAPname[index];
//buka form AP
Form_AProom AProom = new Form_AProom(this); AProom.Show();
this.Visible = false; }
private void btn_chat_Click(object sender, EventArgs e) {
//ambil IP tujuan string IPdest, namedest;
IPdest = listPIP[lsb_Plist.SelectedIndex]; namedest = listPname[lsb_Plist.SelectedIndex];
//buka form
if (chatflag != true) {
Chat_init Chatting = new Chat_init(this, IPdest, namedest); Chatting.Show();
chatflag = true; }
else { } }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { t_getBC.Interrupt(); t_getBC.Abort(); t_sendBC.Abort(); t_listen.Interrupt(); t_listen.Abort(); t_listen2.Interrupt(); t_listen2.Abort();
catch { } }
public void sendbroadcast() {
//kirim broadcast di jaringan lokal
socksend = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep1 = new IPEndPoint(IPAddress.Broadcast, 10001); string tekstosend = "2|" + P1.Pname + "|" + P1.PIP;
byte[] data = Encoding.ASCII.GetBytes(tekstosend);
socksend.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); for (; ; ) { socksend.SendTo(data, iep1); Thread.Sleep(750); } }
public void getbroadcast() {
sockget = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
iep = new IPEndPoint(IPAddress.Any, 10001); sockget.Bind(iep);
EndPoint ep = (EndPoint)iep; byte[] data = new byte[1024];
for (; ; ) {
int recv = sockget.ReceiveFrom(data, ref ep);
P1.stringData = Encoding.ASCII.GetString(data, 0, recv); data = new byte[1024];
recv = sockget.ReceiveFrom(data, ref ep);
P1.stringData= Encoding.ASCII.GetString(data, 0, recv); P1.stringData = P1.stringData.TrimEnd('\0');
string[] splitchar = P1.stringData.Split('|'); P1.code = Convert.ToString(splitchar[0]); checkBCmessage();
} }
private void checkBCmessage() {
if (P1.code == "1" && P1.mode == 1) //untuk menerima dan menganalisa BC message dari AP
{
string[] splitchar = P1.stringData.Split('|'); tempAPsname = Convert.ToString(splitchar[1]); tempAPsIP = Convert.ToString(splitchar[4]);
cekAP(tempAPsname); }
else if (P1.code == "2" && P1.mode == 2) //untuk menerima dan menganalisa BC message dari P
{
string[] splitchar = P1.stringData.Split('|'); tempPsname = Convert.ToString(splitchar[1]); tempPsIP = Convert.ToString(splitchar[2]); if (tempPsname != P1.Pname) { cekP(tempPsname); } else { } } else { }
}
private void cekP(string tempPsname) {
lock (this) {
//jika listPname masih kosong maka yang diterima pertama langsung diinisialisasi if (listPname.Count == 0) { inserttolsbPlist(tempPsname); } bool b = listPname.Any(tempPsname.Contains); if (b == false) { inserttolsbPlist(tempPsname); } } }
private void inserttolsbPlist(string tempPsname) {
//proses invoke untuk menulis di UI thread lsb_Plist if (InvokeRequired)
{
this.Invoke(new Action<string>(inserttolsbPlist), new object[] { tempPsname });
return; }
lsb_Plist.Items.Add(tempPsname); //masukkan data lainnya di list listPname.Add(tempPsname); listPIP.Add(tempPsIP); }
private void cekAP(string tempAPsname) {
//jika listAPname masih kosong maka yang pertama langsung diinisialisasi if (listAPname.Count == 0) { inserttolsbAPlist(tempAPsname); } bool b = listAPname.Any(tempAPsname.Contains); if (b == false) { inserttolsbAPlist(tempAPsname); } }
private void inserttolsbAPlist(string tempAPsname) {
//proses invoke untuk menulis di UI thread di lsbAPlist if (InvokeRequired)
{
this.Invoke(new Action<string>(inserttolsbAPlist), new object[] { tempAPsname });
//membuat listener untuk menerima koneksi tcp socklisten = new TcpListener(P1.localIPs[0], 10001); sockclient = default(TcpClient);
socklisten.Start();
string dataFromClient = null;
while ((listenflag != true)) {
sockclient = socklisten.AcceptTcpClient(); byte[] bytesFrom = new byte[10025];
try { sockstream = sockclient.GetStream(); sockstream.Read(bytesFrom, 0, (int)sockclient.ReceiveBufferSize); dataFromClient = Encoding.ASCII.GetString(bytesFrom); dataFromClient = dataFromClient.TrimEnd('\0'); //flush bytesFrom
for (int i = 0; i < dataFromClient.Length; i++) { bytesFrom[i] = 000; } sockstream.Flush(); invokingchat(dataFromClient); } catch { } } }
public void listener2() {
//membuat listener untuk menerima koneksi tcp
socklisten2 = new TcpListener(P1.localIPs[0], 10002); sockclient2 = default(TcpClient);
socklisten2.Start();
string dataFromClient2 = null;
while ((listenflag2 != true)) {
sockclient2 = socklisten2.AcceptTcpClient(); byte[] bytesFrom2 = new byte[10025];
try { sockstream2 = sockclient2.GetStream(); sockstream2.Read(bytesFrom2, 0, (int)sockclient2.ReceiveBufferSize); dataFromClient2 = Encoding.ASCII.GetString(bytesFrom2); dataFromClient2 = dataFromClient2.TrimEnd('\0'); //flush bytesFrom2
for (int i = 0; i < dataFromClient2.Length; i++) { bytesFrom2[i] = 000; } sockstream2.Flush(); invokingmessagereceiverform(dataFromClient2); } catch { } } }
private void invokingmessagereceiverform(string dataFromClient2) {
{
this.Invoke(new Action<string>(invokingmessagereceiverform), new object[] { dataFromClient2 });
return; }
MessageBox.Show("Got a message");
MsgRcvr msgreceiver = new MsgRcvr(dataFromClient2, this); msgreceiver.Show();
}
private void invokingchat(string dataFromClient) {
if (InvokeRequired) {
this.Invoke(new Action<string>(invokingchat), new object[] { dataFromClient });
return; }
string tempIPdest = null; string tempnamedest = null;
string[] splitchar = P1.stringData.Split('|'); tempIPdest = Convert.ToString(splitchar[2]); tempnamedest = Convert.ToString(splitchar[1]);
Chat chatting = new Chat(this, tempnamedest, tempIPdest); chatting.Show();
}
private void lsb_APlist_SelectedIndexChanged(object sender, EventArgs e) { btn_join.Enabled = true; if (lsb_APlist.SelectedIndex == -1) { btn_join.Enabled = false; } index = lsb_APlist.SelectedIndex; }
private void lsb_Plist_SelectedIndexChanged(object sender, EventArgs e) { btn_chat.Enabled = true; if (lsb_Plist.SelectedIndex == -1) { btn_chat.Enabled = false; } index = lsb_Plist.SelectedIndex; } }
public class Client {
//inisialisasi atribut class
public string Pname, PIP, stringData, code, APdestIP, APname; IPHostEntry ipEntry;
public IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
} }
e. FILE NAME : Msgrcvr.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; namespace Client {public partial class MsgRcvr : Form {
string APNameDest, PNameDest, PdestIP, PsenderIP, message, APNameSender, PNameSender; Form1 frm1;
public MsgRcvr(string dataFromClient, Form1 form1_in) {
InitializeComponent(); frm1 = form1_in;
messagesplitandcheck(dataFromClient); }
private void messagesplitandcheck(string dataFromClient) {
//string messagetomyP = "3|" + APNameDest + "^" + PNameDest + "^" + PdestIP + "^" +
//PsenderIP + "^" + message + "^" + APNameSender + "^" + PNameSender; string[] splitchar = dataFromClient.Split('|');
string datas = Convert.ToString(splitchar[1]); string[] splitchar2 = datas.Split('^');
APNameDest = Convert.ToString(splitchar2[0]); PNameDest = Convert.ToString(splitchar2[1]); PdestIP = Convert.ToString(splitchar2[2]); PsenderIP = Convert.ToString(splitchar2[3]); message = Convert.ToString(splitchar2[4]); APNameSender = Convert.ToString(splitchar2[5]); PNameSender = Convert.ToString(splitchar2[6]); lbl_msgto.Text += PNameSender; lbl_inAP.Text += APNameSender; txb_msgfrom.Text += message; }
private void btn_replyask_Click(object sender, EventArgs e) { txb_write.Visible = true; btn_cancel_msg.Visible = true; btn_send_msg.Visible = true; btn_replyask.Enabled = false; btn_cancelask.Enabled = false;
this.Size = new System.Drawing.Size(500, 335);
this.grp_message.Size = new System.Drawing.Size(470, 290); }
private void btn_cancelask_Click(object sender, EventArgs e) {
this.Dispose(); this.Close(); }
private void btn_cancel_msg_Click(object sender, EventArgs e) { txb_write.Visible = false; btn_send_msg.Visible = false; btn_cancel_msg.Visible = false; btn_cancelask.Enabled = true; btn_replyask.Enabled = true;
this.Size = new System.Drawing.Size(500, 200);
this.grp_message.Size = new System.Drawing.Size(470, 150); }
private void btn_send_msg_Click(object sender, EventArgs e) {
if (txb_write.Text != null) {
string texttosend = "5|2^" + APNameDest + "#" + PNameDest + "#" + PsenderIP + "#" + PdestIP + "#" + txb_write.Text + "#" + frm1.P1.APname + "#" + frm1.P1.Pname + "#1";
TcpClient client = new TcpClient();
NetworkStream stream = default(NetworkStream);
client.Connect(frm1.P1.APdestIP, 11111); stream = client.GetStream();
byte[] outStream = new byte[10025];
outStream = System.Text.Encoding.ASCII.GetBytes(texttosend); stream.Write(outStream, 0, outStream.Length);
stream.Flush();
for (int i = 0; i < outStream.Length; i++) { outStream[i] = 000; } texttosend = null; MessageBox.Show("Message sent."); stream.Close(); this.Close(); } else {
MessageBox.Show("Write something please."); }
} } }
f. FILE NAME : RDBForm.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;
public TcpClient client = new TcpClient();
public NetworkStream stream = default(NetworkStream); public string attAPdest, attPdest, attPIPdest;
public RDBForm(Form_AProom aproom_in) {
InitializeComponent(); aproom = aproom_in;
//request get data mode = 0 from DBS via AP
client.Connect(aproom.mainForm.P1.APdestIP, 11111); stream = client.GetStream();
this.Text = "AP list"; getdata(mode);
}
private void getdata(int mode) {
if (mode == 0) //request get data of all existing AP from DBS via AP {
string texttosend = "5|" + mode + "^"; sendmess(texttosend);
texttosend = null;
try {
byte[] inStream = new byte[10025];
stream.Read(inStream, 0, (int)client.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream); for (int i = 0; i < inStream.Length; i++)
{ inStream[i] = 000; } stream.Flush(); invoketolsb_ap(returndata); } catch {
MessageBox.Show("Error getting data of existing AP. This form will close.");
this.Close(); }
}
else if (mode == 1) //request get data of all existing P in AP choosen from DBS via AP
{
string texttosend = "5|" + mode + "^" + attAPdest; sendmess(texttosend);
texttosend = null;
try {
byte[] inStream = new byte[10025];
stream.Read(inStream, 0, (int)client.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream); returndata = returndata.TrimEnd('\n', '\0', '\r');
for (int i = 0; i < inStream.Length; i++) {
inStream[i] = 000; }
stream.Flush();
stream.Read(inStream, 0, (int)client.ReceiveBufferSize);
string returndata2 = System.Text.Encoding.ASCII.GetString(inStream); returndata2 = returndata2.TrimEnd('\n', '\0', '\r');
invoketolsb_p(returndata); invoketolistPIP(returndata2); }
catch {
MessageBox.Show("Error getting existing P in " + attAPdest + ". Maybe AP is inactive.");
this.Close(); }
} }
private void invoketolistPIP(string returndata2) {
string[] splitchar = returndata2.Split('#'); string temp = null;
for (int i = 0; i < splitchar.Length - 1; i++) {
temp = splitchar[i].ToString(); list_PIP.Add(temp);
} }
private void invoketolsb_p(string returndata) {
string[] splitchar = returndata.Split('#'); string temp = null;
for (int i = 0; i < splitchar.Length; i++) { temp = splitchar[i].ToString(); if (temp != null) { lsb_Plist.Items.Add(temp); } } }
private void invoketolsb_ap(string returndata) {
string[] splitchar = returndata.Split('#'); string temp = null;
for (int i = 0; i < splitchar.Length; i++) {
temp = splitchar[i].ToString(); lsb_APlist.Items.Add(temp); }
}
private void sendmess(string mess) {
byte[] outStream = new byte[10025];
outStream = System.Text.Encoding.ASCII.GetBytes(mess); stream.Write(outStream, 0, outStream.Length);
stream.Flush();
for (int i = 0; i < outStream.Length; i++) {
mode = 1; //mode = 1 for Plist mode this.Text = " Client list";
getdata(mode);
btn_OKAP.Enabled = false; }
private void btn_CancelAP_Click(object sender, EventArgs e) {
//close this form this.Close(); }
private void btn_OKP_Click(object sender, EventArgs e) {
//show grp_message
attPdest = lsb_Plist.SelectedItem.ToString(); int index = lsb_Plist.SelectedIndex;
attPIPdest = list_PIP[index].ToString(); grp_RDB2.Visible = false;
grp_message.Visible = true;
this.grp_message.Location = new System.Drawing.Point(12, 12); this.Size = new System.Drawing.Size(500, 210);
this.Text = "Send message here";
mode = 2; //mode = 2 for message mode btn_OKP.Enabled = false;
}
private void btn_CancelP_Click(object sender, EventArgs e) {
//show grp_RDB1
grp_RDB1.Visible = true; grp_RDB2.Visible = false;
this.grp_RDB1.Location = new System.Drawing.Point(12, 12); this.Text = "AP list";
mode = 0; //mode = 0 for APlist mode getdata(mode);
lsb_APlist.Items.Clear(); btn_OKP.Enabled = false; }
private void btn_cancel_msg_Click(object sender, EventArgs e) {
//show grp_RDB2
grp_message.Visible = false; grp_RDB2.Visible = true;
this.grp_RDB2.Location = new System.Drawing.Point(12, 12); this.Size = new System.Drawing.Size(265, 250);
this.Text = " Client list";
mode = 1; //mode = 1 for Plist mode lsb_Plist.Items.Clear();
getdata(mode); }
private void btn_send_msg_Click(object sender, EventArgs e) {
if (txb_write.Text != null) {
string texttosend = "5|" + mode + "^" + attAPdest + "#" + attPdest + "#" + attPIPdest + "#" + aproom.mainForm.P1.PIP + "#" + txb_write.Text + "#" +
aproom.mainForm.P1.APname + "#" + aproom.mainForm.P1.Pname + "#1"; sendmess(texttosend); texttosend = null; } else { } MessageBox.Show("Message sent."); this.Close(); }
private void lsb_APlist_SelectedIndexChanged(object sender, EventArgs e) { btn_OKAP.Enabled = true; if (lsb_APlist.SelectedIndex == -1) { btn_OKAP.Enabled = false; } }
private void lsb_Plist_SelectedIndexChanged(object sender, EventArgs e) { btn_OKP.Enabled = true; if (lsb_Plist.SelectedIndex == -1) { btn_OKP.Enabled = false; } }
private void RDBForm_FormClosing(object sender, FormClosingEventArgs e) {
string texttosend = "1|*&*"; sendmess(texttosend); texttosend = null; try { stream.Close(); } catch { } } } }