Click here to Skip to main content
15,894,646 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi
i trying To Creat Server Client Application Using .Net Sockets

With The BeginXXX & EndXXX Or SocketAsyncEventArgs

The Server Only Push The data To Clients

i Used The Socket Class To Create Client & Server But I All Worked Fine But I Have One Problem
the Data Is Confilect When Sending Fast

Ex
When I Send 1000 Message Some Message may Be lost Or Arrived in The Same Time

Thank
Posted
Comments
fjdiewornncalwe 7-Dec-10 21:00pm    
Do you need to create this application as an assignment of some sort. If this is for a professional client, then have you considered MSMQ (Message Queuing)?

1 solution

Server.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
using System.Net.Sockets;

namespace ConsoleApplication1
{
class Server
{
public void Chat(object o)
{
TcpClient srv = (TcpClient)o;
StreamReader read;
StreamWriter write;
String msg;
read = new StreamReader(srv.GetStream());
write = new StreamWriter(srv.GetStream());

while (true)
{

msg = read.ReadLine();
Console.WriteLine("From Client {0}:{1}",Thread.CurrentThread.Name,msg);
write.WriteLine(msg);
write.Flush();
if (msg.Equals("Exit"))
break;
}
Console.WriteLine("Client {0} Disconnected....", Thread.CurrentThread.Name, msg);
read.Close();
write.Close();
srv.Close();
}
}
public class Test
{
static void Main(string[] args)
{
// IPAddress ip = new IPAddress();
TcpListener list = new TcpListener(IPAddress.Loopback, 9999);
int count = 0;
while (true)
{
list.Start();
Console.WriteLine("Server Ready....Waiting for Clients!");
TcpClient srv = list.AcceptTcpClient();
Console.WriteLine("Client {0} connected", ++count);
Server s = new Server();
ParameterizedThreadStart del = new ParameterizedThreadStart(s.Chat);
Thread t = new Thread(del);
t.Name = "" + count;
t.Start(srv);
}
}
}
}

Client.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace ConsoleApplication11
{
class Client
{
public static void Main(String[] arg)
{
//IPEndPoint ip = new IPEndPoint(
// IPAddress ip = new IPAddress();
TcpClient cl = new TcpClient("localhost", 9999);
String msg;
StreamReader read;
StreamWriter write;
read = new StreamReader(cl.GetStream());
write = new StreamWriter(cl.GetStream());
while (true)
{
msg = Console.ReadLine();
write.WriteLine(msg);
write.Flush();
msg=read.ReadLine();
Console.WriteLine(msg);
if (msg.Equals("Exit"))
break;
}
read.Close();
write.Close();
cl.Close();
}
}
}
 
Share this answer
 
Comments
Sandeep Mewara 6-Dec-10 14:16pm    
Please use PRE tags from next time to format code part.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900