123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using AggregatorFinal.DataAggregator;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Net.Sockets;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- namespace AggregatorFinal.Rec
- {
- class MainThread
- {
- Thread _thread;
- String ip;
- string port;
- public MainThread(String ip, string port)
- {
- this.port = port;
- this.ip = ip;
- _thread = new Thread(threadFunction);
- _thread.Start();
- }
- private void threadFunction()
- {
- try
- {
- char[] splitter = { '#' };
- UDP_Receiver _udp_Receiver = new UDP_Receiver(port);
- while (true)
- {
- string text = _udp_Receiver.receiveMessage();
- String[] parts2 = text.Split(splitter, StringSplitOptions.None);
- String senderIp = parts2[0];
- String senderPort = parts2[1];
- String fileName = parts2[2];
- DirectoryInfo di = Directory.CreateDirectory(Aggregator.resultFolder + "/" + senderIp);
- int freePort = FreeTcpPort();
- new RecThread(di.FullName + "/" + fileName, freePort);
- Console.WriteLine("Rec file: " + fileName + ", from: " + senderIp);
- UDP_Sender.forwardMessage(senderIp, senderPort, "RequestFile" + "#" + fileName + ":" + ip + ":" + freePort);
- }
- }
- catch (Exception es)
- {
- Console.WriteLine(es.Message);
- }
- }
- static int FreeTcpPort()
- {
- TcpListener l = new TcpListener(IPAddress.Loopback, 0);
- l.Start();
- int port = ((IPEndPoint)l.LocalEndpoint).Port;
- l.Stop();
- return port;
- }
- }
- }
|