static void Main(string[] args) { Console.WriteLine("___________________ CLIENT ________________"); Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ep; Console.Write("Please Choose mode <1> Receive Mode, <2> Send Mode : "); int t = int.Parse(Console.ReadLine()); if (t == 1) //receive mode { Console.WriteLine("______________< RECEIVE MODE >_______________"); //____________ Dong vai tro server nhan du lieu ___________________ ep = new IPEndPoint(IPAddress.Any, 9999); sck.Bind(ep); sck.Listen(5); Console.WriteLine("San sang ket noi.."); Socket sckClient = sck.Accept(); Console.WriteLine("Da ket noi! San sang nhan file"); //________________ receive _____________________ int size; while (true) { byte[] data = new byte[1024]; size = sckClient.Receive(data); string[] s = Encoding.ASCII.GetString(data, 0, size).Split(new char[] { ',' }); // nhan ten file, duong dan, size. Console.WriteLine("file Name: {0} ", s[0]); Console.WriteLine("Path to store: {0} ", s[1]); long length = long.Parse(s[2]); byte[] buffer = new byte[1024]; byte[] fsize = new byte[length]; //khai bao mang byte de chua du lieu long n = length / buffer.Length; // tính số frame sẽ được gửi qua for (int i = 0; i < n; i++) { size = sckClient.Receive(fsize, fsize.Length, SocketFlags.None); Console.WriteLine("Received frame {0}/{1}", i, n); } FileStream fs = new FileStream(s[1] + "/" + s[0], FileMode.Create); // luu file s[0] vao duong dan s[1] fs.Write(fsize, 0, fsize.Length); fs.Close(); Console.WriteLine("Done."); break; } sckClient.Close(); //______________________________________________ } else if (t == 2) { Console.WriteLine("______________< SEND MODE >_______________"); //__________________ Dong vai tro client gui du lieu ____________________ Console.Write("Enter file to send : "); //nhap đường dẫn tên file string path = Console.ReadLine(); FileInfo file = new FileInfo(path); if (!file.Exists) //kiểm tra file có tồn tại k { Console.WriteLine("Not exist file {0}!", path); } string filename = path.Substring(path.LastIndexOf("/") + 1); // tách tên file khỏi đường dẫn Console.Write("Path on store to server : "); // nhập đường dẫn lưu file string save = Console.ReadLine(); Console.Write("Send to IP : "); string ip = Console.ReadLine(); ep = new IPEndPoint(IPAddress.Parse(ip), 9999); sck.Connect(ep); Console.WriteLine("Connected! Sending file {0} to {1} on Server {2}", path, save, ip); //________________ send ________________________ byte[] data = new byte[1024]; byte[] fsize = new byte[file.Length]; // tạo mảng chứa dữ liệu FileStream fs = new FileStream(path, FileMode.Open); // đọc thông tin file đã nhập fs.Read(fsize, 0, fsize.Length); fs.Close(); while (true) { string s = filename + "," + save + "," + file.Length.ToString(); sck.Send(Encoding.ASCII.GetBytes(s)); long n = file.Length / data.Length; //tính số frame phải gửi for (int i = 0; i < n; i++) { Console.WriteLine("Sending frame {0}/{1}", i, n); sck.Send(fsize, fsize.Length, 0); } Console.WriteLine("Done."); break; } //______________________________________________ } else { Console.WriteLine("Wrong request!!"); } sck.Close(); Console.ReadLine(); }
static void Main(string[] args) { const string ip = "127.0.0.1"; const int port = 8082; #region TCP //var tcpEndPoint = new IPEndPoint(IPAddress.Parse(ip), port); //var tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //Console.WriteLine("Write down your message:"); //var message = Console.ReadLine(); //var data = Encoding.UTF8.GetBytes(message); //tcpSocket.Connect(tcpEndPoint); //tcpSocket.Send(data); //var buffer = new byte[256]; //var size = 0; //var answer = new StringBuilder(); //do //{ // size = tcpSocket.Receive(buffer); // answer.Append(Encoding.UTF8.GetString(buffer, 0, size)); //} //while (tcpSocket.Available > 0); //Console.WriteLine(answer.ToString()); //tcpSocket.Shutdown(SocketShutdown.Both); //tcpSocket.Close(); //Console.ReadKey(); #endregion #region UDP var udpEndPoint = new IPEndPoint(IPAddress.Parse(ip), port); var udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); udpSocket.Bind(udpEndPoint); while (true) { Console.WriteLine("Write your message: "); var message = Console.ReadLine(); EndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(ip), 8081); udpSocket.SendTo(Encoding.UTF8.GetBytes(message), serverEndPoint); var buffer = new byte[256]; var size = 0; var data = new StringBuilder(); do { size = udpSocket.ReceiveFrom(buffer, ref serverEndPoint); data.Append(Encoding.UTF8.GetString(buffer)); }while (udpSocket.Available > 0); Console.WriteLine(data); //Console.ReadLine(); } #endregion }