/// <summary> /// 파일 수신 /// </summary> /// <param name="pData"></param> private void Received_DataOnly(byte[] pData) { Invoke(new ReceivedDataOnly(delegate { // 수신받은 데이터(바이트배열) 복사 위치 int packageLength = 0; if (packetCnt > 0) { packageLength = (packetCnt * 1024); } // 마지막 패킷일 경우 마지막으로 받은 패킷 크기 지정 if (2 > ReceivedFile._PacketCnt) { Array.Copy(pData, 0, ReceivedFile._Data, packageLength, ReceivedFile._RemainPacket); } else { Array.Copy(pData, 0, ReceivedFile._Data, packageLength, pData.Length); } // 받은 패킷 카운트 증가, 남은 패킷 수 계산 packetCnt += 1; ReceivedFile._PacketCnt -= 1; // 파일 전송 완료 if (1 > ReceivedFile._PacketCnt) { packetCnt = 0; frm_Alarm frm_Alarm = new frm_Alarm(ReceivedFile._sender, ReceivedFile._FileName); frm_Alarm.Show(); } })); }
private void Received_DATA(string sender, string[] msg) { Invoke(new ReceivedData(delegate { if (msg[0] == "DATA") { var fileInfo = msg[3].Split('/'); ReceivedFile._sender = msg[1]; ReceivedFile._Receiver = msg[2]; ReceivedFile._FileName = fileInfo[0]; ReceivedFile._Size = int.Parse(fileInfo[1]); ReceivedFile._PacketCnt = int.Parse(fileInfo[2]); ReceivedFile._Data = new byte[ReceivedFile._Size]; ReceivedFile._RemainPacket = int.Parse(fileInfo[3]); // 서버 관리용 파일 관리 정보 StoredPackage SPakage = new StoredPackage(ReceivedFile._sender, ReceivedFile._Receiver, ReceivedFile._FileName, ReceivedFile._Size); if (isServer) { if (ReceivedFile._Receiver == myIP) { // 서버가 수신인 frm_Alarm frmAlarm = new frm_Alarm(ReceivedFile._sender, ReceivedFile._FileName); frmAlarm.Show(); } else { // 클라이언트 -> 서버 -> 수신인 clsMSG.sSender = ReceivedFile._sender; clsMSG.sReceiver = ReceivedFile._Receiver; clsMSG.sHeader = SocketMSG.MESSAGE_TYPE.DATA; FileStream fileStr = new FileStream(ReceivedFile._FileName, FileMode.Create, FileAccess.Write); BinaryWriter writer = new BinaryWriter(fileStr); writer.Write(ReceivedFile._Data, 0, ReceivedFile._Size); fileStr.Close(); // 보낼 파일 SockFileTransfer sockFileTransfer = new SockFileTransfer(); var o_Packet = sockFileTransfer.FileSelect(ReceivedFile._FileName); clsServer.FileSend(clsMSG, o_Packet); } } } })); }