Probleme mit Socket



  • Also ich bin dabei einen Kleinen ChatClient zu Schreiben nur er bekommt keine verbindung zum server ⚠ . Es gibt antscheinend probleme mit dem Socket, wenn ich versuche zu verbinden. Ich habe den server mit einer Consolenanwenung mehrmals geprüft an ihn kann es nicht liegen! ⚠ (denke ich)
    Kann mir jmd weiterhelfen 😕
    (sry für die schlechte namens gebung)

    ClientCode:

    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Text;
    using System.Net.Sockets;
    using System.Net;
    using System.IO;
    using System.Threading;
    
    namespace MainNameSpace
    {
    	class MainClass
    	{
    		public static void Main()
    		{
    			CHauptfenster ChatWindow = new CHauptfenster(Dns.GetHostName(), 305);
    			Application.Run(ChatWindow);
    		}
    	}
    	class CHauptfenster : Form
    	{
    		//Windows.Forms
    		Button 		bt_Start;				//Button um die Verbindung zu öffen bzw. zu Beenden!
    		Label 		lb_Text;				//Textfeld für die ausgabe
    		TextBox 	tb_ToSend;				//Für die Eingabe!
    		//Net
    		Stream 		s_MainStream;			//Für den Datenstrom vom Server
    		TcpClient 	tcpc_Client;			//Für die verbindung zum Server
    		//Sonstiges
    		bool		b_isConnectet;
    		string 		str_Address;			//Speichert die Server Addresse
    		int			i_ConnectionPort;		//Speichert den Port vom Server
    
    		//Konstruktor!
    		public CHauptfenster(string ServerAddress, int ServerPort)
    		{
    			//net
    			tcpc_Client = new TcpClient();
    			//Sonstiges
    			b_isConnectet		= false;
    			str_Address			= ServerAddress;
    			i_ConnectionPort	= ServerPort;
    			//Fenster
    			this.Text 			= "Chat Client By IcEcrEaM";
    			this.MaximizeBox 	= false;
    			this.MinimizeBox 	= true;
    			this.ControlBox		= true;
    			this.Width			= 670;
    			this.Height			= 400;
    			this.Top			= 180;
    			this.Left			= 180;
    			//Button
    			bt_Start 			= new Button();
    			bt_Start.Width		= 100;
    			bt_Start.Height 	= 30;
    			bt_Start.Top 		= 325;
    			bt_Start.Left 		= 540;
    			bt_Start.Text		= "Send";
    			//TextBox
    			tb_ToSend			= new TextBox();
    			tb_ToSend.Text		= "";
    			tb_ToSend.Width		= 435;
    			tb_ToSend.Height	= 100;
    			tb_ToSend.Top		= 330;
    			tb_ToSend.Left		= 95;
    			//Label
    			lb_Text				= new Label();
    			lb_Text.Width		= 100;
    			lb_Text.Height		= 30;
    			lb_Text.Top			= 330;
    			lb_Text.Left		= 14;
    			lb_Text.Font		= new System.Drawing.Font("SimHei", 12);
    			lb_Text.Text		= "You Write:";
    			//Register Controls
    			Controls.Add(bt_Start);
    			Controls.Add(tb_ToSend);
    			Controls.Add(lb_Text);
    			//Envent Reg.
    			bt_Start.Click		+= new EventHandler(On_Activated);
    			tb_ToSend.KeyPress 	+= new System.Windows.Forms.KeyPressEventHandler(On_tb_ToSend_KeyPress);
    			Click 				+= new EventHandler(On_Click);
    		}
    		protected void StartConnection()
    		{
    			while(true)
    			{
    				try
    				{
    					tcpc_Client.Connect(Dns.Resolve(str_Address).AddressList[0], i_ConnectionPort);
    				}
    				catch
    				{
    					DialogResult MsgbResult = MessageBox.Show("Die Verbindung zu " + str_Address + ":" + Convert.ToString(i_ConnectionPort) + " konnte nicht hergestellt werden!", "Fehler", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
    					if(MsgbResult == DialogResult.Retry) 
    					{
    						continue;
    					}
    					else
    					{
    						break;
    					}
    				}
    				b_isConnectet = true;
    			}
    		}
    		protected void Send(string str_ToSend)
    		{
    			if(b_isConnectet == false)
    			{
    				StartConnection();
    			}
    			else if(b_isConnectet)
    			{
    				while(true)
    				{
    					try
    					{
    						s_MainStream = tcpc_Client.GetStream();
    
    					}
    					catch (InvalidOperationException) 
    					{
    						DialogResult MsgbResult = MessageBox.Show("Der Stream zu " + str_Address + ":" + Convert.ToString(i_ConnectionPort) + " konnte nicht hergestellt werden!\nSoll der Versuch wiederholt werden", "Fehler", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
    						if(MsgbResult == DialogResult.Retry) 
    						{
    							continue;
    						}
    						else
    						{
    							return;;
    						}
    					}
    					byte[] BytesToSend	= Encoding.ASCII.GetBytes(str_ToSend);
    					s_MainStream.Write(BytesToSend, 0, BytesToSend.Length);
    					s_MainStream.Close();
    				}
    			}
    		}
    		//Events
    		protected void On_Click(object sender, System.EventArgs e)
    		{
    			StartConnection();
    		}
    		protected void On_bt_Click(object sender, System.EventArgs e)
    		{
    			Send(tb_ToSend.Text);
    			tb_ToSend.Text = "";
    		}
    		protected void On_tb_ToSend_KeyPress(object sender, KeyPressEventArgs e)
    		{
    			if(e.KeyChar == (char)13)
    			{
    				Send(tb_ToSend.Text);
    				tb_ToSend.Text = "";
    			}
    		}
    
    	}
    }
    

    Und hier ist der Server Code:

    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ServerNameSpace
    {
    	class MainClass
    	{
    		static void Main()
    		{
    			Server muh = new Server(305);
    			muh.Run();
    		}
    	}
    	class Server
    	{
     		TcpListener tcpl;
    		Socket s;
    
    		public Server(int ServerPort)
    		{
    			tcpl = new TcpListener(Dns.Resolve(Dns.GetHostName()).AddressList[0], ServerPort);
    			tcpl.Start();
    			Console.WriteLine("Server running now on {0}:{1}", Dns.Resolve("212.204.13.135").AddressList[0], ServerPort);
    		}
    		public void Run()
    		{
    			Thread Star = new Thread(new ThreadStart(Start));
    			Star.Start();
    		}
    		public void Start()
    		{
    			while(true)
    			{
    				s = tcpl.AcceptSocket();
    				byte[] ReceivedBytes = new byte[100];
    				s.Receive(ReceivedBytes, 0, SocketFlags.None);
    				s.Send(ReceivedBytes);
    				checked
    				{
    					Console.WriteLine(Encoding.ASCII.GetString(ReceivedBytes));
    				}
    			}
    		}
    	}
    }
    

Anmelden zum Antworten