Hey folks!! Hope you can help me with my client code.
Först I debugg the Server which is an consoleapplication and the server starts, secondly I debugg the Client, I put a nickname value to the nickNameTextBox and click on Connect the compiler stops at this code line on the getMessage()
serverStream.Read(inStream, 0, buffSize);The Clientusing System.Windows.Forms;using System.Net.Sockets;using System.Threading;namespace Client{public partial class Form1 : Form{System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();NetworkStream serverStream = default(NetworkStream);string readData = null;public Form1(){InitializeComponent();}//Connect to the Serverprivate void connectButton_Click(object sender, EventArgs e){clientSocket.Connect("127.0.0.1", 8888);serverStream = clientSocket.GetStream();byte[] outStream = System.Text.Encoding.ASCII.GetBytes(nickNameTextBox.Text + "$");serverStream.Write(outStream, 0, outStream.Length);serverStream.Flush();//else//{// MessageBox.Show("Connect to the server");//}}private void sendButton_Click(object sender, EventArgs e){if (serverStream == null){MessageBox.Show("Please connect to a server.");return;}else{readData = "Conected to Chat Server ...";msg();//clientSocket.Connect("127.0.0.1", 8888);serverStream = clientSocket.GetStream();byte[] outStream = System.Text.Encoding.ASCII.GetBytes(sendTextBox.Text + "$");serverStream.Write(outStream, 0, outStream.Length);serverStream.Flush();Thread ctThread = new Thread(getMessage);ctThread.Start();}}private void getMessage(){while (true){serverStream = clientSocket.GetStream();int buffSize = 0;byte[] inStream = new byte[10025];buffSize = clientSocket.ReceiveBufferSize;serverStream.Read(inStream, 0, buffSize);string returndata = System.Text.Encoding.ASCII.GetString(inStream);readData = "" + returndata;msg();}}private void msg(){if (this.InvokeRequired){this.Invoke(new MethodInvoker(msg));}else{loggTextBox.Text = loggTextBox.Text + Environment.NewLine + " >> " + readData;}}}}The Servernamespace Server{class Program{public static Hashtable clientsList = new Hashtable();static void Main(string[] args){Int32 port = 8888;IPAddress localAddr = IPAddress.Parse("127.0.0.1");TcpListener serverSocket = new TcpListener(localAddr, port);TcpClient clientSocket = default(TcpClient);int counter = 0;serverSocket.Start();Console.WriteLine("Chat Server Started ....");counter = 0;while ((true)){counter += 1;clientSocket = serverSocket.AcceptTcpClient();byte[] bytesFrom = new byte[10025];string dataFromClient = null;NetworkStream networkStream = clientSocket.GetStream();try{networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);}catch (Exception ex){Console.WriteLine(ex.ToString());}finally{Console.WriteLine("klient ansluten");Console.ReadLine();dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));clientsList.Add(dataFromClient, clientSocket);broadcast(dataFromClient + " Joined ", dataFromClient, false);Console.WriteLine(dataFromClient + " Joined chat room ");handleClinet client = new handleClinet();client.startClient(clientSocket, dataFromClient, clientsList);serverSocket.Stop();}//clientSocket.Close();//serverSocket.Stop();//Console.WriteLine("exit");//Console.ReadLine();}}public static void broadcast(string msg, string uName, bool flag){foreach (DictionaryEntry Item in clientsList){TcpClient broadcastSocket;broadcastSocket = (TcpClient)Item.Value;NetworkStream broadcastStream = broadcastSocket.GetStream();Byte[] broadcastBytes = null;if (flag == true){broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg);}else{broadcastBytes = Encoding.ASCII.GetBytes(msg);}broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length);broadcastStream.Flush();}} //end broadcast function}//end Main classpublic class handleClinet{TcpClient clientSocket;string clNo;Hashtable clientsList;public void startClient(TcpClient inClientSocket, string clineNo, Hashtable cList){this.clientSocket = inClientSocket;this.clNo = clineNo;this.clientsList = cList;Thread ctThread = new Thread(doChat);ctThread.Start();}private void doChat(){int requestCount = 0;byte[] bytesFrom = new byte[10025];string dataFromClient = null;// Byte[] sendBytes = null;//string serverResponse = null;string rCount = null;requestCount = 0;while ((true)){try{requestCount = requestCount + 1;NetworkStream networkStream = clientSocket.GetStream();networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));Console.WriteLine("From client - " + clNo + " : " + dataFromClient);rCount = Convert.ToString(requestCount);Program.broadcast(dataFromClient, clNo, true);}catch (Exception ex){Console.WriteLine(ex.ToString());}
Replies
Know the answer? Post it — somebody with the same question will find it here.