
16-05-2006, 11:11
|
|
|
|
חבר מתאריך: 14.11.05
הודעות: 56
|
|
|
בעיה בSocket ב c#!
תכנתתי תוכנית של שרת ולקוח וכל הזמן הלקוח אומר לי "לא היתה אפשרות לבצע התקשרות מאחר שמחשב היעד דחה אותך באופן פעיל". אני מקווה לעזרה.. הנה הקוד:
Server:
קוד PHP:
TcpListener TCPListener = new TcpListener(4000); Socket LoginSocket; NetworkStream LoginStream; StreamReader LoginReader; StreamWriter LoginWriter; System.Windows.Forms.Timer Timer1 = new System.Windows.Forms.Timer(); private System.Windows.Forms.Label label1; int PortIndex = 4000; public ServerF() { // // Required for Windows Form Designer support // InitializeComponent(); ThreadStart LTStart = new ThreadStart(CreateLogin); Thread LThread = new Thread(LTStart); } private void CreateLogin() { //Closing Timer Timer1.Stop(); while(true) { //Waiting For Login Connection TCPListener.Start(); LoginSocket = TCPListener.AcceptSocket(); //Checking Connection if (LoginSocket.Connected) { //Initialize Network Variables LoginStream = new NetworkStream(LoginSocket); LoginReader = new StreamReader(LoginStream); LoginWriter = new StreamWriter(LoginStream); //Reading Message string Message = CheckCommand(LoginReader.ReadLine()); //Sending Message if (Message != string.Empty) { LoginWriter.WriteLine(Message); LoginWriter.Flush(); CreateNewConnection(); } else LoginWriter.WriteLine("Wrong Command"); } } } private void CreateNewConnection() { //Initialize Thread ThreadStart ThreadS = new ThreadStart(PrivateConnection); Thread NThread = new Thread(ThreadS); //Thread Start NThread.Start(); } private void PrivateConnection() { bool Playing = true; TcpListener MyTCP = new TcpListener(PortIndex); MyTCP.Start(); Socket MySocket = MyTCP.AcceptSocket(); NetworkStream MyStream = new NetworkStream(MySocket); StreamWriter MyWriter = new StreamWriter(MyStream); StreamReader MyReader = new StreamReader(MyStream); if (MySocket.Connected) { while (Playing) { label1.Text = MyReader.ReadLine(); } } } private string CheckCommand(string Command) { switch(Command) { case "GMP": PortIndex++; return "P"+PortIndex; break; default: return string.Empty; } }
Client:
קוד PHP:
TcpClient MyTCP = new TcpClient("localhost",4000); NetworkStream MyStream = MyTCP.GetStream(); StreamReader MyReader = new StreamReader(MyStream); StreamWriter MyWriter = new StreamWriter(MyStream); MyWriter.WriteLine("GMP"); MyWriter.Flush(); string Port = MyReader.ReadLine(); if (Port.Length == 5) { MyTCP.Close(); string MyPort = Port.Substring(1); int RPort = int.Parse(MyPort); label1.Text = Port; TcpClient NewTCP = new TcpClient("localhost",RPort); NetworkStream NewStream = NewTCP.GetStream(); StreamReader NewReader = new StreamReader(NewStream); StreamWriter NewWriter = new StreamWriter(NewStream); NewWriter.WriteLine("Connection Is Ok!!"); NewWriter.Flush(); }
|