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)); } } } } }