Click here to Skip to main content
15,886,110 members
Home / Discussions / C#
   

C#

 
Questionwhat exactly below code do Pin
anil42010-Jul-14 21:24
anil42010-Jul-14 21:24 
SuggestionRe: what exactly below code do Pin
Hemant Singh Rautela10-Jul-14 21:33
professionalHemant Singh Rautela10-Jul-14 21:33 
AnswerRe: what exactly below code do Pin
OriginalGriff10-Jul-14 21:39
mveOriginalGriff10-Jul-14 21:39 
SuggestionRe: what exactly below code do Pin
ZurdoDev11-Jul-14 1:47
professionalZurdoDev11-Jul-14 1:47 
QuestionC# insert command error Pin
PJeffrey10-Jul-14 16:11
PJeffrey10-Jul-14 16:11 
AnswerRe: C# insert command error Pin
Dave Kreskowiak10-Jul-14 18:20
mveDave Kreskowiak10-Jul-14 18:20 
AnswerRe: C# insert command error Pin
jldavis515-Jul-14 8:13
jldavis515-Jul-14 8:13 
QuestionPrivate chat Pin
Member 1076298010-Jul-14 11:15
Member 1076298010-Jul-14 11:15 
hi,
I wrote a chat program with private and public chat,but i have a problem,for example when one user want to have a private chat with other,his first message send to server not to specific user and other messages send for all users that ON now,
Now I want to close the public chat server connection with this user,because the program i wrote in private form can be server and client.

In client program I have one form that has 2 buttons and one datagridview, one button is for "private chat" and other is for "public",the datagridview shows friends.when i click "public chat" button i go to Public form that has one "send button" and 2 text boxes one is "txtMessage" and other is"textbox2".Now my "send button" code is :
try
{
if (connectionstatus)
{
string TimeOfConnect = " Connected at :" + ConectTime;
string firstmessage = label2.Text.Trim();
byte[] buffer = PadMessage(string.Format("{0} {1}", firstmessage, TimeOfConnect));
server.Send(buffer, 0, MessageLength, SocketFlags.None);
connectionstatus = false;
}
else
{
byte[] buffer = PadMessage(string.Format("{0} : {1}", label2.Text.Trim(), txtMessage.Text));
server.Send(buffer, 0, MessageLength, SocketFlags.None);
textBox2.Text += string.Format("Me : {0}\r\n", txtMessage.Text);
txtMessage.Text = "";
txtMessage.Focus();
}
}
catch (Exception)
{
if (!tfconnect)
return;
server.Close();
tRecive.Abort();
server.Close();
if (tfconnect)
RoomForm_Load(sender, e);
txtMessage.Text = "";

}

}

private byte[] PadMessage(string message)
{
while (message.Length < MessageLength)
message += " ";

byte[] buffer = Encoding.ASCII.GetBytes(message);
return buffer;
}

and my form load code is

if (tfconnect)
{

txtMessage.Enabled = false;
Send_btn.Enabled = false;
tfconnect = false;
connectionstatus = false;

try
{

tRecive.Abort();
server.Close();
}
catch { }
}
else
{

DTime = DateTime.Now;
ConectTime = " " + DTime;
string show = label2.Text + "join at" + ConectTime;
// listView1.Items.Add(show);

txtMessage.Enabled = true;
Send_btn.Enabled = true;
txtMessage.Focus();
tfconnect = true;
connectionstatus =true ;
ConectToServer();
button1_Click_1(sender, e);
connectionstatus = false;



}



}
private void ConectToServer()
{
try
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
IPAddress ipAddress = IPAddress.Parse(ServerIPAddress);
server.Connect(ipAddress, ServerPortNo);
}
catch
{
MessageBox.Show("ip can't identified");

}

tRecive = new Thread(new ParameterizedThreadStart(Startclient));
tRecive.Start(server);

}
catch (SocketException)
{
txtMessage.Enabled = false;
Send_btn.Enabled = false;
MessageBox.Show("can't connect to server");
tfconnect = true;
RoomForm_Load(null, null);
return;

}
}
public bool beclose = true;
public void Startclient(object client1)
{
while (beclose)
{


byte[] ReceivedBuffer = new byte[1024];

int a = 0;
try
{
a = ((Socket)client1).Receive(ReceivedBuffer);
if (a == 0)
throw new Exception();
}
catch
{
Thread.CurrentThread.Abort();
((Socket)client1).Close();
RoomForm_Load(null, null);
return;
}
string Data = Encoding.UTF8.GetString(ReceivedBuffer).Replace("\0", "").Trim();
System.Threading.ThreadStart todo = delegate
{
if (Data.Substring(0, 3) != "***")
{
textBox2.Text += string.Format("{0}\r\n", Data);
}
else
{
Form_Load(null, null);
}

};
textBox2.Invoke(todo);
}
}

My server has one button "btnListen"
also My server code is

private void SetButtonEnable(Button btn, bool SetEnabled)
{
System.Threading.ThreadStart todo = delegate
{
btn.Enabled = SetEnabled;
};
btn.Invoke(todo);
}
private void clientListRefresh()
{
try
{
System.Threading.ThreadStart todo = delegate
{
txt_showclients.Text = "";

};
txt_showclients.Invoke(todo);
foreach (var client in clients)
{
System.Threading.ThreadStart todo1 = delegate
{
txt_showclients.Text += client.Value + "\r\n";


};
txt_showclients.Invoke(todo1);
}
}
catch { }
}
private void startServer()
{
while (serverStart)
{
try
{
var client = server.Accept();
// server wait
// get name that client send
byte[] recivedBuffer = new byte[1024];
int testconnection = 0;
try
{
testconnection = client.Receive(recivedBuffer);
if (testconnection == 0)
throw new Exception();
else
{
string data = Encoding.UTF8.GetString(recivedBuffer).Replace("\0", "").Trim();
clients.Add(client, data);
clientListRefresh();
Thread clientThread = new Thread(new ParameterizedThreadStart(clientconnection));
clientThread.Start(client);
}

}
catch (Exception ex)
{
MessageBox.Show("client close");
client.Close();
}

}
catch
{
}
}

}
private void clientconnection(object object1)
{
var client = ((Socket)object1);
while (serverStart)
{
byte[] recivedBuffer = new byte[1024];
int testconnection = 0;
try
{
testconnection = client.Receive(recivedBuffer);
if (testconnection == 0)
throw new Exception();
}
catch (Exception)
{
clients.Remove(client);
client.Close();
if (refreshListIfServerIsStart)
clientListRefresh();
return;
}

string data = Encoding.UTF8.GetString(recivedBuffer).Replace("\0", "").Trim();
Thread broadcastThread = new Thread(new ParameterizedThreadStart(broadCast));
broadcastThread.Start(new object[] { client, data });
}
}
private void broadCast(object object1)
{
var Senderclient = ((Socket)((object[])object1)[0]);
var data = ((string)((object[])object1)[1]);
byte[] broadCastBuffer = padMessage(data);
foreach (var client in clients)
{
if (client.Key.Equals(Senderclient))
continue;
System.Threading.ParameterizedThreadStart breadCastSend = delegate(object clientX)
{
((Socket)clientX).Send(broadCastBuffer, 0, messageLength, SocketFlags.None);
};
new Thread(breadCastSend).Start(client.Key);
}
}
private byte[] padMessage(string message)
{
while (message.Length < messageLength)
message += " ";
byte[] buffer = Encoding.UTF8.GetBytes(message);
return buffer;
}
private void clientsLogout()
{
try
{
string data = "***";
byte[] broadCastBuffer = padMessage(data);
foreach (var client in clients)
{
System.Threading.ParameterizedThreadStart breadCastSend = delegate(object clientX)
{
((Socket)clientX).Send(broadCastBuffer, 0, messageLength, SocketFlags.None);
};
new Thread(breadCastSend).Start(client.Key);
}
}
catch { }
}



private void btnListen_Click(object sender, EventArgs e)
{
refreshListIfServerIsStart = true;
try
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
EndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);
server.Bind(ipendpoint);
server.Listen(maxConnection);
serverStart = true;
Thread startServerThread = new Thread(new ThreadStart(startServer));
startServerThread.Start();
}
catch { }
SetButtonEnable(btnListen, false);
// SetButtonEnable(btn, true);
txtIp.Enabled = false;

}

Now I want to write Private Chat that use this server,for exp when user want has private chat with one of friends click his name in datagridview and open private chat form,so he can has private chat with that friend,
Now what should i do?Confused | :confused:


modified 11-Jul-14 5:48am.

AnswerRe: Private chat Pin
Dave Kreskowiak10-Jul-14 12:11
mveDave Kreskowiak10-Jul-14 12:11 
QuestionRe: Private chat Pin
ZurdoDev11-Jul-14 1:49
professionalZurdoDev11-Jul-14 1:49 
QuestionButton within a gridvew that clicking opens a form Pin
Member 1092277510-Jul-14 5:01
Member 1092277510-Jul-14 5:01 
AnswerRe: Button within a gridvew that clicking opens a form Pin
Mycroft Holmes10-Jul-14 14:22
professionalMycroft Holmes10-Jul-14 14:22 
QuestionProblem Encode Base 64 Pin
KaKoten10-Jul-14 2:42
KaKoten10-Jul-14 2:42 
AnswerRe: Problem Encode Base 64 Pin
OriginalGriff10-Jul-14 2:59
mveOriginalGriff10-Jul-14 2:59 
GeneralRe: Problem Encode Base 64 Pin
KaKoten10-Jul-14 18:03
KaKoten10-Jul-14 18:03 
GeneralRe: Problem Encode Base 64 Pin
Dave Kreskowiak10-Jul-14 18:16
mveDave Kreskowiak10-Jul-14 18:16 
GeneralRe: Problem Encode Base 64 Pin
KaKoten10-Jul-14 19:00
KaKoten10-Jul-14 19:00 
GeneralRe: Problem Encode Base 64 Pin
Bernhard Hiller10-Jul-14 21:07
Bernhard Hiller10-Jul-14 21:07 
GeneralRe: Problem Encode Base 64 Pin
Dave Kreskowiak11-Jul-14 1:31
mveDave Kreskowiak11-Jul-14 1:31 
GeneralRe: Problem Encode Base 64 Pin
KaKoten12-Jul-14 15:40
KaKoten12-Jul-14 15:40 
QuestionCombobox.SelectedValue and Combobox.Text Pin
JCompiler10-Jul-14 1:45
JCompiler10-Jul-14 1:45 
AnswerRe: Combobox.SelectedValue and Combobox.Text Pin
Mycroft Holmes10-Jul-14 14:25
professionalMycroft Holmes10-Jul-14 14:25 
GeneralRe: Combobox.SelectedValue and Combobox.Text Pin
JCompiler10-Jul-14 23:39
JCompiler10-Jul-14 23:39 
AnswerRe: Combobox.SelectedValue and Combobox.Text Pin
Dilan Shaminda14-Jul-14 7:43
professionalDilan Shaminda14-Jul-14 7:43 
QuestionC# Pin
livhuone9-Jul-14 23:04
livhuone9-Jul-14 23:04 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.