Chat Client Problem...

FastProg

Erfahrenes Mitglied
Hi Leute,

nen Freund und Ich sind dabei einen Chat Client zu programmieren, es gab einige pannen, doch diese lösten wir, doch jetzt hängen wir vor einen Problem und Wissen nicht wieso es so ist.

Es geht darum... Unser Client kann auf LokalenServer connecten (127.0.0.1), doch wenn mein Freund auf mich Connecten will mit meiner IP, dann spinnt der Client rum... auch wenn ich zu mir connecten will mit meiner Internet IP, dann spinnt es herrum...

Diese Meldung bekommen wir beide wenn wir eine Internet IP nutzen... bei LokalenServern funktioniert alles ohne Probleme
Eine nicht behandelte Ausnahme des Typs 'System.Net.Sockets.SocketException' ist in system.dll aufgetreten.

Zusätzliche Informationen: Der angegebene Host ist unbekannt

Code:
		private void frmChatClient_Load(object sender, System.EventArgs e)
		{
			Name = ini.iniRead("Benutzer","Name");
			IP = ini.iniRead("Server","IP");
			Port = ini.iniRead("Server","Port");

			if(Name == "")
			{
				Name = "NewUser";
			}
			if(IP == "")
			{
				MessageBox.Show("Bitte geben Sie eine Server IP ein!");
				F.Show();
			}
			else
			{
				//verbindung zum Server herstellen!
				myClient = new TcpClient(IP, Convert.ToInt32(Port));
				myThread = new Thread(new ThreadStart(ReceiveData));
				myThread.Start();
			}
		}


		private void ReceiveData()
		{
			int i;
			string sStreamString;
			byte[] baData = new byte[1024];
			myStream = myClient.GetStream();

			while (true)
			{
				baData = new byte[1024];
				i = myStream.Read(baData, 0, baData.Length);
				sStreamString = Encoding.ASCII.GetString(baData);

				if (sStreamString.IndexOf("/close") == 0)
				{
					break;
				}
				txtScreen.Text = txtScreen.Text + "\r\n" + sStreamString;

			}
			myStream.Close();
			myClient.Close();
		}

		private void cmdSend_Click(object sender, System.EventArgs e)
		{
			byte[] baData = Encoding.ASCII.GetBytes(Name + ":" + txtMsg.Text);
			myStream.Write(baData, 0, baData.Length);
		}

Und bei dieser Stelle zeigt er den Fehler an...

Code:
myClient = new TcpClient(IP, Convert.ToInt32(Port));

Hoffe ihr könnt helfen...


mfg.
FastProg
 
Hi.

Die Fehlermeldung ist eh schön aussagekräftig. Ihr habt eine IP-Adresse bzw. einen Hostnamen eingegeben, der nicht gefunden wird.

Das verbinden solltet ihr übrigens in einen Try/Catch block geben - Also sowieso ein bisserl Fehlerbehandlung betreiben.

MfG,
Alex
 
Könntest du das genauer Erklären oder mir ein Beispiel dazu geben? Da wir noch nicht sehr lange mit C# programmieren...

Wir geben eine IP an, kein Hostname...
Falls das weiter hilft...

mfg.
FastProg
 
Wenn die IP die ihr angebt aber nicht existiert, oder nicht erreichbar ist. Dann kann der auch nicht verbinden. Also entweder ist der Port oder die IP zu der du verbindest falsch.

*edit*
Vielleicht stimmt was mit dem ini read nicht. Lass dir mal den Port und die IP in einer MessageBox ausgeben und guck damit nach ob es die richtigen Angaben sind.
 
Zuletzt bearbeitet:
FastProg hat gesagt.:
Könntest du das genauer Erklären oder mir ein Beispiel dazu geben? Da wir noch nicht sehr lange mit C# programmieren...

Wir geben eine IP an, kein Hostname...
Falls das weiter hilft...

mfg.
FastProg

Eine IP Adresse zeigt trotzdem auf einen PC, einen Host. Es ist jetzt egal ob du eine IP Adresse nimmst, oder irgendeinen Hostnamen der zu einer IP Adresse aufgelöst wird.
 
Zurück