public void Main() { try { TcpClient tcpclnt = new TcpClient(); FileProcesor fileProcesor = new FileProcesor(); String str; Stream stm; byte[] ba, bb; int k; ASCIIEncoding asen = new ASCIIEncoding(); // Connecting witch server and sending clientIP String serverIP; Console.WriteLine("Czy połączenie jest pośredniczone przez server? (Y/N)"); if (Console.ReadLine() == "Y") { Console.WriteLine("Podaj nazwe Servera:"); serverIP = Console.ReadLine(); Console.WriteLine("Connecting....."); tcpclnt.Connect(HostNameToIP(serverIP), connectionport); // use the ipaddress as in the server program Console.WriteLine("Connected"); //This part is only walid when connectiong external port Console.WriteLine("PodajIP clienta do transferu : "); str = Console.ReadLine(); stm = tcpclnt.GetStream(); asen = new ASCIIEncoding(); ba = asen.GetBytes(str); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); bb = new byte[byteBuffer]; k = stm.Read(bb, 0, 1024); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(bb[i])); } } else { Console.WriteLine("Podaj adres IPServera:"); serverIP = Console.ReadLine(); Console.WriteLine("Connecting....."); tcpclnt.Connect(IPAddress.Parse(serverIP), connectionport); // use the ipaddress as in the server program Console.WriteLine("Connected"); } //Sending name and extension String filePath; Console.WriteLine("Podaj sciezke pliku do wyslania:"); filePath = Console.ReadLine(); fileProcesor = new FileProcesor(filePath); Console.WriteLine("Sending name and extension..."); str = fileProcesor.getNameAndExtension(); stm = tcpclnt.GetStream(); Console.WriteLine(str); asen = new ASCIIEncoding(); ba = asen.GetBytes(str); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); bb = new byte[byteBuffer]; k = stm.Read(bb, 0, byteBuffer); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(bb[i])); } // Sending package number Console.WriteLine("Sending package number..."); str = fileProcesor.numOfPacket.ToString(); stm = tcpclnt.GetStream(); Console.WriteLine(str); asen = new ASCIIEncoding(); ba = asen.GetBytes(str); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); bb = new byte[byteBuffer]; k = stm.Read(bb, 0, byteBuffer); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(bb[i])); } //Sending file var packages = fileProcesor.GetPackages(); Console.WriteLine("Sending " + fileProcesor.numOfPacket + " packages..."); foreach (var package in packages) { //Sending key ==> Console.WriteLine("Sending key value..."); str = package.Key.ToString(); stm = tcpclnt.GetStream(); Console.WriteLine(str); asen = new ASCIIEncoding(); ba = asen.GetBytes(str); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); bb = new byte[byteBuffer]; k = stm.Read(bb, 0, byteBuffer); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(bb[i])); } // <== Sending key // Sending package ==> Console.WriteLine("Sending package " + package.Key); stm = tcpclnt.GetStream(); ba = package.Value; Console.WriteLine(ba); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); bb = new byte[byteBuffer]; k = stm.Read(bb, 0, byteBuffer); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(bb[i])); } // <== Sending package } } catch (Exception e) { Console.WriteLine("Error..... " + e.StackTrace); } }
public void Main() { try { // Setting client reciver IP IPAddress ipAd = IPAddress.Parse(GetLocalIPAddress()); // use local m/c IP address, and // use the same in the client TcpListener myList = new TcpListener(ipAd, connectionport); Console.WriteLine("Starting ..."); myList.Start(); Console.WriteLine("The ReciveClient is running at port " + connectionport.ToString() + "..."); Console.WriteLine("The local End point is :" + myList.LocalEndpoint); Console.WriteLine("Waiting for a connection....."); Socket s = myList.AcceptSocket(); Console.WriteLine("Connection accepted from " + s.RemoteEndPoint); // Reciving nameand Extension String nameAndExtension = ""; byte[] b = new byte[byteBuffer]; int k = s.Receive(b); Console.WriteLine("Recieved..."); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(b[i])); nameAndExtension += Convert.ToChar(b[i]); } ASCIIEncoding asen = new ASCIIEncoding(); s.Send(asen.GetBytes("The string was recieved by the server.")); Console.WriteLine("\nSent Acknowledgement"); //Reciving num of packages String numPackageString = ""; b = new byte[byteBuffer]; k = s.Receive(b); Console.WriteLine("Recieved..."); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(b[i])); numPackageString += Convert.ToChar(b[i]); } asen = new ASCIIEncoding(); s.Send(asen.GetBytes("The string was recieved by the server.")); Console.WriteLine("\nSent Acknowledgement"); //Creating instance of FileProcessor FileProcesor fileProcesor = new FileProcesor(nameAndExtension, Int32.Parse(numPackageString)); //Main package recive loop for (int j = 0; j < Int32.Parse(numPackageString); j++) { //Reciving key String key = ""; b = new byte[byteBuffer]; k = s.Receive(b); Console.WriteLine("Recieved..."); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(b[i])); key += Convert.ToChar(b[i]); } asen = new ASCIIEncoding(); s.Send(asen.GetBytes("The string was recieved by the server.")); Console.WriteLine("\nSent Acknowledgement"); //Reciving package b = new byte[byteBuffer]; k = s.Receive(b); Console.WriteLine("Recieved..."); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(b[i])); } asen = new ASCIIEncoding(); s.Send(asen.GetBytes("The string was recieved by the server.")); Console.WriteLine("\nSent Acknowledgement"); //Adding package to file processor fileProcesor.insertPackage(Int32.Parse(key), b); } //Combining packages Console.WriteLine("All packages recived. Attempting to combine file..."); fileProcesor.combineFile(Int32.Parse(numPackageString)); /* clean up */ s.Close(); myList.Stop(); Console.WriteLine("Procedure compleated"); } catch (Exception e) { Console.WriteLine("Error..... " + e.Message + e.StackTrace); } }