PDA

View Full Version : خطا در اتصال



maryam_87
دوشنبه 08 شهریور 1389, 13:16 عصر
در هنگام برقراری اتصال به آی پی و پورت خطای زیر رو میده
نمی دونم چی کار باید انجام بدم؟!!!!!!!/؟
ممنون از کمکهاتون
خطا

No connection could be made because the target machine actively refused it 127.0.0.1:2345
کد:

sock.Connect(serverEndPoint);

maryam_87
دوشنبه 08 شهریور 1389, 14:01 عصر
حتی با متد بایند هم ایراد می گیره:متفکر:

maryam_87
دوشنبه 08 شهریور 1389, 14:24 عصر
یعنی هیچ کس نیست کمک کنه!!!!!!!!!!!!!!!!!!!!؟؟؟؟؟؟؟؟!!!!!!!! !!!!:گریه:

reza_program
سه شنبه 09 شهریور 1389, 10:23 صبح
احتمالا ی نسخه از برنامه در حال اجراست
و روی اون IP و PORT داره گوش میده
یه بررسی کنید ببینید چی میشه!

اگه نشد کدتون رو بذارید!

maryam_87
سه شنبه 09 شهریور 1389, 10:56 صبح
احتمالا ی نسخه از برنامه در حال اجراست
و روی اون IP و PORT داره گوش میده
یه بررسی کنید ببینید چی میشه!

اگه نشد کدتون رو بذارید!
من با این پورت و آی پی برنامه دیگه که خیلی هم ساده است اجرا میکنم و جواب می ده ولی وقتی برنامه خودم رو اجرا می کنم این خطا رو می ده!!!!!!!!
با تل نت هم که این آی پی و پورت رو میزنم کانکت نمیشه!!!!!
چی کار کنم؟

reza_program
سه شنبه 09 شهریور 1389, 11:07 صبح
میتونید PORT رو عوض کنید؟

چون کاملا از پیغام خطا مشخصه

من قبلا با این پیغام برخورد کردم و دلیلش همونی بود که گفتم

تو سایت بگردید example زیاد هست
و همینطور بحث های مختلف

از MSDN محترم هم میتونید کمک بگیرید!

در هر صورت خوشحال میشم کمکی کرده باشم!

maryam_87
سه شنبه 09 شهریور 1389, 11:11 صبح
میتونید PORT رو عوض کنید؟

چون کاملا از پیغام خطا مشخصه

من قبلا با این پیغام برخورد کردم و دلیلش همونی بود که گفتم

تو سایت بگردید example زیاد هست
و همینطور بحث های مختلف

از MSDN محترم هم میتونید کمک بگیرید!

در هر صورت خوشحال میشم کمکی کرده باشم!
نزدیک به 10 تا پورت رو امتحان کردم ولی همین نتیجه بوده
البته این نکته رو هم بگم که کامپیونذم توی یک شبکه لن هست ولی کارت شبکه که رو غیر فعال کردم از شبکه بیرون اومدم ولی نتیجه هم همون بود
اگه لازم بود بگین تا کدها رو بزارم
ممنون از کمکتون

reza_program
سه شنبه 09 شهریور 1389, 11:33 صبح
میشه گفت ربطی به شبکه نداره
ولی کدتون رو بذارید ببینم چطوریه؟

maryam_87
سه شنبه 09 شهریور 1389, 11:58 صبح
میشه گفت ربطی به شبکه نداره
ولی کدتون رو بذارید ببینم چطوریه؟
خودمم سر در نمیارم

class client
{
private const int buffersize=8*1024;
String server = "127.0.0.1";
byte[] byteBuffer =new byte[buffersize];
int servPort = 3175;
Socket sock = null;
int totalBytesRcvd = 0;
private Encoding m_Encoding = Encoding.ASCII ;

public void start()
{
try
{
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(server), servPort);
sock.Connect(serverEndPoint);
}

finally
{
sock.Close();
}
}

public void send(string msg)
{
if (String .IsNullOrEmpty (msg))
return;
byteBuffer = this.m_Encoding.GetBytes(msg);
sock .Send(byteBuffer ,0,byteBuffer .Length,SocketFlags .None );
int bytesRcvd = 0;

while (totalBytesRcvd < byteBuffer.Length)
{
if ((bytesRcvd =sock.Receive(byteBuffer, totalBytesRcvd,
byteBuffer.Length - totalBytesRcvd, SocketFlags.None)) == 0)
{
break;
}
totalBytesRcvd += bytesRcvd;
}
}
سرور

class server
{
private const int bufsize = 8*1024;
private const int backlog = 5;
public int port = 3175;
public Socket serv=null;
byte[] rcvBuffer = new byte[bufsize];
int bytesRcvd;
public void start()
{
try
{
serv = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serv.Bind(new IPEndPoint(IPAddress.Any, port));
serv.Listen(backlog);
}
catch (SocketException se)
{
Console .WriteLine (se.ErrorCode + ": " + se.Message);
Environment.Exit(se.ErrorCode);
}
}

public string receive()
{
string msg;
for (; ; )
{
Socket client = null;
int totalBytes = 0;
try
{
client = serv.Accept();
int totalBytesEchoed = 0;
while ((bytesRcvd = client.Receive(rcvBuffer, 0, rcvBuffer.Length, SocketFlags.None)) > 0)
{
client.Send(rcvBuffer, 0, rcvBuffer.Length, SocketFlags.None);
totalBytes += bytesRcvd;
}
client.Close();
}

catch (Exception e)
{
Console.WriteLine(e.Message);
}
msg = Encoding.ASCII.GetString(rcvBuffer, 0, bytesRcvd);
return msg;
}
}
فرم

private void button1_Click(object sender, EventArgs e)
{
this.Hide();
Form3 f3 = new Form3();
client clnt = new client();
clnt.start();
clnt.send(textBox6.Text);
f3.ShowDialog();
this.Close();

}

reza_program
چهارشنبه 10 شهریور 1389, 13:44 عصر
من با یکمی تغییر برنامه رو اجرا کردم

سمت کلاینت ی مشکل کوچک داره که باید سوکت رو همون بالا new کنی
نه توی تابع start
این کد سمت کلاینت



private void button1_Click(object sender, EventArgs e)
{
Client cln = new Client();
cln.start();
}

public class Client
{
private const int buffersize = 8 * 1024;
String server = "127.0.0.1";
byte[] byteBuffer = new byte[buffersize];
int servPort = 10000;
public Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
int totalBytesRcvd = 0;
private Encoding m_Encoding = Encoding.ASCII;

public void start()
{
try
{

IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(server), servPort);
sock.Connect(serverEndPoint);
if (sock.Connected)
{
MessageBox.Show("U r CONCT");
byteBuffer = this.m_Encoding.GetBytes("Salam");
sock.Send(byteBuffer, 0, byteBuffer.Length, SocketFlags.None);
}
}

finally
{
sock.Close();
}
}

public void send(string msg)
{
if (String.IsNullOrEmpty(msg))
return;
byteBuffer = this.m_Encoding.GetBytes(msg);
if (sock.Connected)
sock.Send(byteBuffer, 0, byteBuffer.Length, SocketFlags.None);
else
return;
int bytesRcvd = 0;

while (totalBytesRcvd < byteBuffer.Length)
{
if ((bytesRcvd = sock.Receive(byteBuffer, totalBytesRcvd,
byteBuffer.Length - totalBytesRcvd, SocketFlags.None)) == 0)
{
break;
}
totalBytesRcvd += bytesRcvd;
}
}
}


سمت سرور هم تغییری احتیاج نیست
فقط همین کد رو بنویس:



Server srv = new Server();
srv.start();
MessageBox.Show(srv.receive());


اگه سوالی داشتی خبر بده!:لبخندساده:

maryam_87
پنج شنبه 11 شهریور 1389, 10:20 صبح
من با یکمی تغییر برنامه رو اجرا کردم

سمت کلاینت ی مشکل کوچک داره که باید سوکت رو همون بالا new کنی
نه توی تابع start
این کد سمت کلاینت



private void button1_Click(object sender, EventArgs e)




{

Client cln = new Client();
cln.start();
}


public class Client
{
private const int buffersize = 8 * 1024;
String server = "127.0.0.1";
byte[] byteBuffer = new byte[buffersize];
int servPort = 10000;
public Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
int totalBytesRcvd = 0;
private Encoding m_Encoding = Encoding.ASCII;


public void start()
{
try
{


IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(server), servPort);
sock.Connect(serverEndPoint);
if (sock.Connected)
{
MessageBox.Show("U r CONCT");
byteBuffer = this.m_Encoding.GetBytes("Salam");
sock.Send(byteBuffer, 0, byteBuffer.Length, SocketFlags.None);
}
}


finally
{
sock.Close();
}
}


public void send(string msg)
{
if (String.IsNullOrEmpty(msg))
return;
byteBuffer = this.m_Encoding.GetBytes(msg);
if (sock.Connected)
sock.Send(byteBuffer, 0, byteBuffer.Length, SocketFlags.None);
else
return;
int bytesRcvd = 0;


while (totalBytesRcvd < byteBuffer.Length)
{
if ((bytesRcvd = sock.Receive(byteBuffer, totalBytesRcvd,
byteBuffer.Length - totalBytesRcvd, SocketFlags.None)) == 0)
{
break;
}
totalBytesRcvd += bytesRcvd;
}
}
}






سمت سرور هم تغییری احتیاج نیست



فقط همین کد رو بنویس:






Server srv = new Server();








srv.start();


MessageBox.Show(srv.receive());









اگه سوالی داشتی خبر بده!:لبخندساده:











سلام
من تمام تغييراتي رو كه گفتين انجام دادم ولي بازم خطا داد؟!!!!!!؟؟!!!!

reza_program
پنج شنبه 11 شهریور 1389, 11:08 صبح
اینا رو اجرا کن

ببین اجرا میشه؟

ببین جواب میگیری یا نه؟

maryam_87
پنج شنبه 11 شهریور 1389, 11:16 صبح
اینا رو اجرا کن

ببین اجرا میشه؟

ببین جواب میگیری یا نه؟
سلام
شد يعني كانكت ميشم
ولي نمي دونم چرا وقتي مي خواد فرم 3 رو باز كنه از برنامه خارج مي شه

reza_program
پنج شنبه 11 شهریور 1389, 16:16 عصر
چرا فرم 3؟
دیگه فرم 3 رو میخوای چکار؟
اگه میخوای از یه فرم دیگه استفاده کنی
بهتره که خود فرم کلاینت یا سرور رو صدا بزنی

ولی کلا متوجه نشدم :اشتباه:
می تونی کلا بگی میخوای چکار کنی؟

maryam_87
پنج شنبه 11 شهریور 1389, 20:51 عصر
چرا فرم 3؟
دیگه فرم 3 رو میخوای چکار؟
اگه میخوای از یه فرم دیگه استفاده کنی
بهتره که خود فرم کلاینت یا سرور رو صدا بزنی

ولی کلا متوجه نشدم :اشتباه:
می تونی کلا بگی میخوای چکار کنی؟
ببين من ميخوام اطلاعات از فرم توي فرم 3 نمايش داده بشه
اگه توجه كرده باشي توي رويداد كليلك دكمه فرم 3 را فراخواني كردم حالا كانكت ميشه ولي فرم رو نشون نمي ده

reza_program
شنبه 13 شهریور 1389, 11:08 صبح
فرم 3 کدوم سمت باشه؟

کلاینت ؟
سرور؟

تو اگه بخوای بصورت واقعی کار کنی باید کلاینت و سرور رو از هم جدا کنی!

حالا اگه بتونی بشتر توضیح بدی بهتره!

اگه هم تونستی پروژه تو بذار!

maryam_87
شنبه 13 شهریور 1389, 16:12 عصر
فرم 3 کدوم سمت باشه؟

کلاینت ؟
سرور؟

تو اگه بخوای بصورت واقعی کار کنی باید کلاینت و سرور رو از هم جدا کنی!

حالا اگه بتونی بشتر توضیح بدی بهتره!

اگه هم تونستی پروژه تو بذار!
سمت سرور
نه واقعي كه نمي خوام اين يه پروژه نمونه است
اطلاعات رو نشون نمي ده!!!!
اينم پروژه
توضيح خواستي بگو

reza_program
شنبه 13 شهریور 1389, 19:10 عصر
پروژه رو دیدم
تقریبا فهمیدم میخوای چکار کنی

بهتره ی کم در مورد شی گرایی و شی گرایی در سی شارپ مطالعه کنی
تو سایت هم مطلب هست

اما مشکل پروژه
شما هر وقت یه شی از ی کلاس ایجاد میکنی
همه اجزا اون شی جدید میشه (متغیر ها و کلیه اجزا)

بعد میخوای سمت سرور اطلاعات رو دریافت کنی باید از قبل منتظر دریافت اطلاعات باشی

شما تو همون فرمی میخوای اطلاعات رودریافت کنی دوباره ی نمونه از کلاس سرور رو ایجاد میکنی
که نباید این کار رو کنی
همیشه این نکته رو داشته باش که سرور باید قبل از کلاینت اجرا بشه
و منتظر دریافت اطلاعات باشه

برای جابجایی تحت شبکه
میتونی اطلاعات رو هم تو دیتا بیس ذخیره کنی و جای دیگه استفاده کنی
که کارت سخت نشه


اما اگه میخوای شبکه کار کنی همون برنامه ای برات فرستادم رو میتونی تعمیم بدی

maryam_87
سه شنبه 16 شهریور 1389, 09:54 صبح
پروژه رو دیدم
تقریبا فهمیدم میخوای چکار کنی

بهتره ی کم در مورد شی گرایی و شی گرایی در سی شارپ مطالعه کنی
تو سایت هم مطلب هست

اما مشکل پروژه
شما هر وقت یه شی از ی کلاس ایجاد میکنی
همه اجزا اون شی جدید میشه (متغیر ها و کلیه اجزا)

بعد میخوای سمت سرور اطلاعات رو دریافت کنی باید از قبل منتظر دریافت اطلاعات باشی

شما تو همون فرمی میخوای اطلاعات رودریافت کنی دوباره ی نمونه از کلاس سرور رو ایجاد میکنی
که نباید این کار رو کنی
همیشه این نکته رو داشته باش که سرور باید قبل از کلاینت اجرا بشه
و منتظر دریافت اطلاعات باشه

برای جابجایی تحت شبکه
میتونی اطلاعات رو هم تو دیتا بیس ذخیره کنی و جای دیگه استفاده کنی
که کارت سخت نشه


اما اگه میخوای شبکه کار کنی همون برنامه ای برات فرستادم رو میتونی تعمیم بدی
آره می دونم از نظر شی گرایی داغونه
اما چون بعد می خام ببرمش توworkflow دیگه اینجا همین طوری نوشتم
تو workflowفقط باشی گرایی باید برنامه نوشت
مشکل برنامه رو برطرف کردم و اتصال برقرار میشه ولی داده ای بهم نشون نمیده و خطای زیر رو می ده

object refrence not set an instance of an object
ولی هر چی نگاه کردم نفهمیدم مشکلش چیه؟!!!!!؟؟

maryam_87
چهارشنبه 17 شهریور 1389, 12:36 عصر
ترا خدا کمک کنید تا تحویل پروژه ام خیلی نمونده:گریه:

reza_program
پنج شنبه 18 شهریور 1389, 09:49 صبح
از کدوم خط ارور میگیره؟

maryam_87
پنج شنبه 18 شهریور 1389, 10:09 صبح
وقتي ميخاد اطلاعات را ارسال كنه اين خطا رو مي ده

reza_program
جمعه 19 شهریور 1389, 09:28 صبح
نمیشه اینطوری گفت که ایراد از کجاست!

اگه میشه خطی که خطا داره رو بذارید

چون من برنامه رو ندارم!!

Mohandes2009
جمعه 19 شهریور 1389, 12:23 عصر
به احتمال زیاد پورت اشغاله!! بزن به یه پرت دیگه و تست کن یبار که ست کردی قاطی کرده هی اشغال فررض میکنه!:لبخند:

Kurdia
جمعه 19 شهریور 1389, 12:30 عصر
به احتمال زیاد پورت اشغاله!! بزن به یه پرت دیگه و تست کن یبار که ست کردی قاطی کرده هی اشغال فررض میکنه!:لبخند:

امتحانش ضرر ندارم
ممکنه پورت ها بسته نیم شن
اما قبلا این سوال شده و جواب منفیه
حتی پورت های جدید هم جواب ندادن، پست های قبلی رو بخون

maryam_87
جمعه 19 شهریور 1389, 21:33 عصر
نمیشه اینطوری گفت که ایراد از کجاست!

اگه میشه خطی که خطا داره رو بذارید

چون من برنامه رو ندارم!!

clnt.send(textBox6.Text);
برنامه رو كه واستون گذاشتم!!!!

reza_program
چهارشنبه 24 شهریور 1389, 08:21 صبح
سلام
شما میتونید
برنامه رو خط به خط اجرا کنید
ببینید که مقادیر به طور صحیح اعمال میشن یا نه

همین روش میتونه کمکتون کنه

maryam_87
چهارشنبه 24 شهریور 1389, 13:24 عصر
سلام
شما میتونید
برنامه رو خط به خط اجرا کنید
ببینید که مقادیر به طور صحیح اعمال میشن یا نه

همین روش میتونه کمکتون کنه
سلام
من هم همين كار رو كردم ولي عمل خاصي انجام نمي ده
ازروي خط به راحتي رد ميشه!!!!
با اين كه از كلاينت و سرور شي ساخته شده است:عصبانی++::گریه:
--------------------

سلام
شما میتونید
برنامه رو خط به خط اجرا کنید
ببینید که مقادیر به طور صحیح اعمال میشن یا نه

همین روش میتونه کمکتون کنه
سلام
من اين كاررو انجام دادم ولي به راحتي از روي اين خط رد ميشه بدون اين كه كاري انجام بده
با اين كه هم از كلاينت و هم از سرور شي ساخته شده اند:عصبانی++::گریه: