[c#] סוקטים - עמוד 3 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

[c#] סוקטים


-LosNir-

Recommended Posts

  • תגובות 35
  • נוצר
  • תגובה אחרונה


public static void SendMSG(string msg)
{
try
{
NetworkStream NS = client.GetStream();
StreamWriter SW = new StreamWriter(NS);

SW.WriteLine(msg);
}
catch { MessageBox.Show("Failed to send message","Error",MessageBoxButtons.OK,MessageBoxIcon.Error); }
}

כל פעם שאני רוצה לשלוח הודעה אני רושם

SendMessage("bla...");

* זה רץ בת'ראד הראשי

עריכה:

לא משנה הצלחתי :)

הינה הקוד לכל מי שחפץ בו:


public static void SendMSG(string msg)
{
try
{
NetworkStream NS = client.GetStream();
byte[] data = System.Text.Encoding.ASCII.GetBytes(msg);
NS.Write(data, 0, data.Length);
}
catch { MessageBox.Show("Failed to send message","Error",MessageBoxButtons.OK,MessageBoxIcon.Error); }
}

תודה :)

אוקיי עכשיו יש לי שאלה אחרת חח

איך אני שולח לכל המשתמשים? כי לא ממש הבנתי? איפה אני רושם לאיזה משתמש לשלוח?

קישור לתוכן
שתף באתרים אחרים

1) כדאי לך מדוק להשתמש בSTREAMWRITER. אם תתחיל להלוח הרבה הודעות, אתה תשים לב שהן מתערבבות לך. אתה צריך כל פעם לשלוח את האורך של המחרוזת ואז את המחרוזת ולקרוא בהתאם. את זה הSTREAMWRITER עושה לבד, ולא תצטרך לדאוג לזה.

2) עשית client.GetStream();. אתה צריך לשמור מערך של משתמשים, לרוץ עליהם בלולאה ולעשות לכל אחד ככה.

3) אמרת שלא הצלחת לעשות את זה בתראדים נפרדים, ולא רשמת את הקוד שיוצר את התראדים. התכוונת למשהו אחר?

קישור לתוכן
שתף באתרים אחרים

1) זה לא הצליח לי עם StreamWriter.. אני מעדיף להישאר עם stream.Write..

2) יש לי את המשתמשים ב Arraylist, איך אני עובר עליו עם לולאה?

3) יש לי רק ת'ראד אחד נוסף, שהוא הליסטן, השליחת הודעות הוא לא ב thread משלו.. אלא ב Main.

קישור לתוכן
שתף באתרים אחרים

תפתח ת'רד חדש...


foreach(tcpClient client in arrayList)
{
try
{
NetworkStream NS = client.GetStream();
byte[] data = System.Text.Encoding.ASCII.GetBytes(msg);
NS.Write(data, 0, data.Length);
}
catch { MessageBox.Show("Failed to send message","Error",MessageBoxButtons.OK,MessageBoxIcon.Error); }
}


אם הקוד שלך עבד לך אז זה ישלח לכל המשתמשים (שוב, רצוי שיהיה בת'רד נפרד)

קישור לתוכן
שתף באתרים אחרים



newClients = new ArrayList();
foreach(TcpClient client in clients)
{
try
{
NetworkStream NS = client.GetStream();
byte[] data = System.Text.Encoding.ASCII.GetBytes(msg);
NS.Write(data, 0, data.Length);
newClient.Add(client);
}
catch { }
}
clients = newClients;

תשים לב שאם נזרק אקספשן הלקוח לא יתווסף לרשימה החדשה, ובעצם יוסר מהרשימה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...