need help in multi-threaded client server communication

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bushramemon
    New Member
    • Jun 2010
    • 4

    need help in multi-threaded client server communication

    hello,,now i m working on multi-threaded client server socket program in which there is one server and multiple clients........ .these both are just giving acknowledge to each other that server started and client 1 started ,client 2 started but these programs are not communicating with each other,,means i want proper communication between both,,what should i do????also i want to know how to do this using udp protocol?

    server program is

    Code:
    using System;
    using System.Threading;
    using System.Net.Sockets;
    using System.Text;
    
    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    TcpListener serverSocket = new TcpListener(8888);
    TcpClient clientSocket = default(TcpClient);
    int counter = 0;
    
    serverSocket.Start();
    Console.WriteLine(" >> " + "Server Started");
    
    counter = 0;
    while (true)
    {
    counter += 1;
    clientSocket = serverSocket.AcceptTcpClient();
    Console.WriteLine(" >> " + "Client No:" + Convert.ToString(counter) + " started!");
    handleClinet client = new handleClinet();
    client.startClient(clientSocket, Convert.ToString(counter));
    }
    
    clientSocket.Close();
    serverSocket.Stop();
    Console.WriteLine(" >> " + "exit");
    Console.ReadLine();
    }
    }
    
    //Class to handle each client request separatly
    public class handleClinet
    {
    TcpClient clientSocket;
    string clNo;
    public void startClient(TcpClient inClientSocket, string clineNo)
    {
    this.clientSocket = inClientSocket;
    this.clNo = clineNo;
    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);
    serverResponse = "Server to clinet(" + clNo + ") " + rCount;
    sendBytes = Encoding.ASCII.GetBytes(serverResponse);
    networkStream.Write(sendBytes, 0, sendBytes.Length);
    networkStream.Flush();
    Console.WriteLine(" >> " + serverResponse);
    }
    catch (Exception ex)
    {
    Console.WriteLine(" >> " + ex.ToString());
    }
    }
    }
    }
    }
    
    
    
    
    
    and client program is,
    
    using System;
    using System.Windows.Forms;
    using System.Net.Sockets;
    using System.Text;
    
    namespace WindowsApplication1
    {
    public partial class Form1 : Form
    {
    System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
    NetworkStream serverStream;
    
    public Form1()
    {
    InitializeComponent();
    }
    
    private void Form1_Load(object sender, EventArgs e)
    {
    msg("Client Started");
    clientSocket.Connect("127.0.0.1", 8888);
    label1.Text = "Client Socket Program - Server Connected ...";
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    NetworkStream serverStream = clientSocket.GetStream();
    byte[] outStream = System.Text.Encoding.ASCII.GetBytes("Message from Client$");
    serverStream.Write(outStream, 0, outStream.Length);
    serverStream.Flush();
    
    byte[] inStream = new byte[10025];
    serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
    string returndata = System.Text.Encoding.ASCII.GetString(inStream);
    msg("Data from Server : " + returndata);
    }
    
    public void msg(string mesg)
    {
    textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + mesg;
    }
    }
    }
    Last edited by Niheel; Jul 2 '10, 07:39 PM. Reason: please use code tags to display code
Working...