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