I used UDP protocol for sending Video files and by using streaming I m sending.At first Server Rcv one message for sending files then send file,the Code for sending file is as following using threads. private void liveVideoToolStripMenuItem_Click(object sender, EventArgs e) { try { Control.CheckForIllegalCrossThreadCalls = false; thvideo = new Thread(new ThreadStart(transmitVideo)); thvideo.IsBackground = true; thvideo.Start(); } catch (ThreadStartException thre) { MessageBox.Show(thre.Message); } } void transmitVideo() { /////////////////////////////////UDP //////////////////////////*/ filesndsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); ipd = new IPEndPoint(IPAddress.Any, 7090); filesndsock.Bind(ipd); MulticastOption moi = new MulticastOption(IPAddress.Parse("224.0.0.1")); filesndsock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, moi); ipep = (EndPoint)ipd; while (true) { try { filesndsock.ReceiveFrom(rcvbuf, ref ipep); // Encoding and Viewing The Received Message msg = Encoding.ASCII.GetString(rcvbuf); //Server here receive msg from client for sending file MessageBox.Show(msg); try { thvideofile = new Thread(new ThreadStart(sendfile)); thvideofile.IsBackground = true; thvideofile.Start(); } catch (ThreadStartException thre) { MessageBox.Show(thre.Message); } } catch (Exception ee) { MessageBox.Show(this, ee.Message, "Unknown Exception"); } } } void sendfile() { if (dlgOpen.ShowDialog() == DialogResult.OK) { // create the raw streams inStream = File.OpenRead(dlgOpen.FileName); bufInStream = new BufferedStream(inStream); int bytesRead = 0; while ((bytesRead = bufInStream.Read(buf, 0, 16384)) > 0) { Thread.Sleep(20); filesndsock.SendTo(buf, bytesRead, SocketFlags.None, ipep); } } MessageBox.Show("File is completely transfered"); bufInStream.Close(); inStream.Close(); } But for sending same time to