برگزیده های پرشین تولز

چطور میشه بین یک سرور و کلاینت متن ارسال و دریافت کرد؟(سوکت پروگرمینگ)

brr

کاربر تازه وارد
تاریخ عضویت
27 آپریل 2011
نوشته‌ها
1
لایک‌ها
0
سلام.
تو یه پروژه سوکت پروگرمینگ، میخوام بین یک برنامه کلاینت و یک سرور ارتباط برقرار کنم و شبیه یک برنامه چت ساده بینشون متن رد و بدل کنم. هر دو برنامه روی یه سیستم اجرا میشه و آیپی 127.0.0.1 برای سرور تنطیم میشه. متن چیزی که نوشتم ولی کار نمیکنه اینجوریه:
SERVER

System.Net.Sockets.TcpClient client = null;
private void button1_Click(object sender, EventArgs e)
{
if (ServerPort.Text.Trim() != "")
{
int SPort = Convert.ToInt32(ServerPort.Text);
System.Net.Sockets.TcpListener listener = new System.Net.Sockets.TcpListener(SPort);
listener.Start();
client = listener.AcceptTcpClient();
MessageBox.Show("The Client Connected!");

//byte[] hi = System.Text.Encoding.UTF8.GetBytes("Hello");
//client.Client.Send(hi);

//while (true)
//{
// client.Client.Send(hi);
// while (client.Available == 0)
// continue;
// byte[] rcvdata = new byte[client.Available];
// client.Client.Receive(rcvdata);

// string rcvString = System.Text.Encoding.UTF8.GetString(rcvdata);
// ReceiveComment.Text = rcvString;
//}
}
}

private void button2_Click(object sender, EventArgs e)
{
byte[] SComment = System.Text.Encoding.UTF8.GetBytes(SendComment.Text);
client.Client.Send(SComment);
SendComment.Clear();
}



CLIENT

System.Net.Sockets.TcpClient client = null;

private void button1_Click(object sender, EventArgs e)
{
if (LocalPortNumber.Text.Trim() != "" && ServerPort.Text.Trim() != "" && ServerIP.Text.Trim() != "")
{
int LPNumber = Convert.ToInt32(LocalPortNumber.Text);
int SPort = Convert.ToInt32(ServerPort.Text);
System.Net.IPEndPoint ipe = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ServerIP.Text), LPNumber);
client = new System.Net.Sockets.TcpClient(ipe);
client.Connect(System.Net.Dns.GetHostName(), SPort);

//while (true)
//{
// byte[] rcvData = new byte[client.Available];
// client.Client.Receive(rcvData);
// string rcvString = System.Text.Encoding.UTF8.GetString(rcvData);
// TBReceiveComment.Text = rcvString;

// byte[] SendCmt = System.Text.Encoding.UTF8.GetBytes("hello");
// client.Client.Send(SendCmt);
//}
}
}

private void button2_Click(object sender, EventArgs e)
{
byte[] SendCmt = System.Text.Encoding.UTF8.GetBytes(TBSendComment.Text);
client.Client.Send(SendCmt);
TBSendComment.Clear();
}

برنامه باید تو محیط windows form application نوشته بشه. اگه کسی میتونه کمک کنه دریغ نکنه خواهشا.

هردوتا سولوشن را هم اینجا آپلود کردم، لطف کنید ببینید و مشکلشا بهم بگید. صحبت 2 نمره مستقیم پایان ترمه.
یادم رفت بگم با #C باید بنویسمش.
 
Last edited:

arya67

Registered User
تاریخ عضویت
7 نوامبر 2006
نوشته‌ها
227
لایک‌ها
48
محل سکونت
Iran
داداش اگه مطمئنی برنامت درسته Run as admin کن و فایروال رو خاموش کن ببین جواب میگیری یا نه
 

razavix

Registered User
تاریخ عضویت
24 فوریه 2013
نوشته‌ها
199
لایک‌ها
23
محل سکونت
تهران
نمونه این برنامه رو قبلا در سایت برنامه نویس گذاشتم، می تونید دانلود کنید و توضیحاتش رو هم بخونین
برنامه Client-server ساده

موفق و پیروز باشید
 

aminbrlee

Registered User
تاریخ عضویت
18 سپتامبر 2007
نوشته‌ها
115
لایک‌ها
15
برنامه به نظرم ایرادی نداره حتما چک کن فایروال رو
 
بالا