Example #1
0
        static void Main(string[] args)
        {
            Client server = new Client("127.0.0.1", 10001);

            server.Connect         += Server_Connect;
            server.Receive         += Server_Receive;
            server.Exit            += Server_Exit;
            server.FileInfoReceive += Server_FileInfoReceive;
            server.Start();


            NetworkFile file = new NClientFile(server, "./3.png");

            file.Process += delegate(NetworkFile file56)
            {
                Console.WriteLine("보낸 바이트" + ((double)file56.FinishByte / (double)file56.FileSize));
            };
            JObject json = new JObject();

            json["himessage"] = "ㅋㅋ";

            Console.WriteLine("서버로 요청을 해볼게!");
            server.SendFile(json, file);

            while (true)
            {
                System.Threading.Thread.Sleep(1000);
            }
        }
 void OnFiles(List <string> aFiles, POINT aPos)
 {
     foreach (string path in aFiles)
     {
         NClientFile file = new NClientFile(NetworkMain.server, path);
         SocketFile.NewFile(file);
         NetworkMain.server.SendFile(new JObject(), file);
     }
     // do something with the dropped file names. aPos will contain the
     // mouse position within the window where the files has been dropped.
     //Debug.Log("Dropped "+aFiles.Count+" files at: " + aPos + "\n"+
     //    aFiles.Aggregate((a, b) => a + "\n" + b));
 }
Example #3
0
 public void Update()
 {
     while (true)
     {
         String  message = null;
         JObject json    = null;
         try
         {
             message = SR.ReadLine();
             if (message == null)
             {
                 break;
             }
             try
             {
                 json = JObject.Parse(message);
                 if (json["type"] == null)
                 {
                     throw new Exception();
                 }
             }
             catch (Exception e) // 파싱중 에러 발생시 올바르지 않은 패킷이라 판단하고 소켓연결을 종료시킨다.
             {
                 Dispose();
                 return;
             }
             if (Receive != null)
             {
                 if ((int)json["type"] == -1) // 처음에 물어보는 과정 (클라 -> 서버 업로드 요청, 서버 -> 클라 다운로드 명령)
                 {
                     NetworkFile file = null;
                     if (this is Client) // 클라이언트단에서 처리하는 메세지
                     {
                         file = new NClientFile((Client)this, (JObject)json["file"]);
                     }
                     else if (this is UserSocket) // 서버단에서 처리하는 메세지
                     {
                         file = new NServerFile(this, (JObject)json["file"]);
                     }
                     FileInfoReceive?.Invoke(this, (JObject)json["message"], file);
                 }
                 else if ((int)json["type"] == -2)
                 {
                     if (this is Client) // 클라이언트단에서 처리하는 메세지
                     {
                         Console.WriteLine((int)json["no"]);
                         NClientFile file = (NClientFile)NetworkFile.NetFiles[(int)json["no"]];
                         Console.WriteLine(json.ToString());
                         file.ServerKey = (int)json["serverkey"];
                         Console.WriteLine((int)file.ServerKey);
                         file.ConnectFileServer();
                     }
                     //NetworkFile.NetFiles[(int)json["no"]].StartInSender((int)json["serverkey"]);
                 }
                 else
                 {
                     Receive(this, json);
                 }
             }
         }
         catch (IOException e) // e.InnerException.GetType().Name == SocketException
         {
             // 소켓통신에서 오류가 발생할경우 커넥션 강제 종료 (Ex 연결이 끊긴경우)
             break;
         }
     }
     Dispose();
 }