안녕하세요  랑 입니다.
이번에 들고온 게임은 TAP!DIG! MY MUSEUM!의  인디게임입니다.


게임을 시작하면 화면이 이렇게 나옵니다


이게임은  생각보다 간단하고 단순합니다.
저곳의 화살표 모양을  누르면 땅을 팔수있는데요

위의 녹색게이지 저건  버튼을 누를수있는 횟수입니다. 횟수가 다되면 게임이끝나게됩니다.

그리고  유적지 탐사를 한번할때마다  입장비가 존재하는데  제가하고있는단계에선 아직까지는 100원만 내고 게임을  시작합니다


유적지에서 공룡의 뼈부위를 발견할때마다  저렇게 수집이되는데요 완성이되면  다음것도 캘수있습니다.

이후  돈이떨어지면 어떻게 돈을벌까요?


이렇게  전시되있는곳에  사람들이 찾아와서  구경을 하고  돈을  뿌리고  갑니다.

저렇게  하나하나  공룡조각들을 채워서  하나의 박물관은 만드는게  이게임의 끝자락으로 보이는데요

이게임이 생각보다  쉽고 간단해서 시간가는지 모르고 게임하게됩니다.

플레이타임은  길진않구요  어떤분은 하루만에  뚝딱 끝낸분도 계신거 같더라구요

여러분들도  공룡의 조각들을 하나하나 모으면서  자신만의  박물관을 만들어보심이 어떤신가요?

이상  신작 TAP!DIG! MY MUSEUM! 모바일 앱 인디게임  입니다.

감사합니다.

*이 게시글에 문제가 있을시  신고보단 지적을 먼저 부탁드립니다. 빠른시간안으로  수정하겠습니다. 감사합니다
제글을  재밌게 봐주셨다면  ♥(공감)한번씩 눌러주시면 감사합니다 좋은하루 되세요!



안녕하세요 랑입니다
이번엔  랜덤 디펜스 게임을 가지고왔습니다.

일단  이게임은  완전 강추 입니다. 
디펜스 게임을 좋아하는사람은 믿고 게임 해보시길바랍니다.

제가이게임을  종종하지만  시간가는줄  모릅니다 하하

맵 구성 자체는   종류가  그렇게 많이있진않습니다.
이지부터 헬까지는  약간의 운만  받쳐준다면야  하루면  다깨고 남지요

이후  인피니티 모드 즉 무한모드 여기서부터가 게임스타트 지점입니다  그전까지는 그냥 튜툐 한번한다고 생각하세요


등급은  커먼 레어 슈퍼 레전드  간단하죠?
같은것끼리  한쌍으로 조합하면  한단계씩 올라갑니다.

각  속성별로  강화도 가능합니다.

나중에  열심히 하다보면  레전드는 기본이됩니다.
(전최대 110라운드가 끝이더군요 
참고로  1등은 200라운드 대를 넘습니다.)

이게임에 공략법은 없지만 무한 모드를 작정하고 하시는분들께는  시작부터 슈퍼 또는 레전드가 나올때까지  리셋 돌리시면  크게 도움이됩니다.
( 중간중간  손도눈도 쉴겸  광고봐주면  깨알같은  다이아 2개씩 킵할수있습니다.)

또한 다이아 돈으로 안바꾸는걸 추천합니다
이상  랑 이 강추하는  랜덤 디펜스  게임이였습니다.


참고로 여성분들도 쉽게 즐길수있습니다.


감사합니다.

*이 게시글에 문제가 있을시  신고보단 지적을 먼저 부탁드립니다. 빠른시간안으로  수정하겠습니다. 감사합니다
제글을  재밌게 봐주셨다면  ♥(공감)한번씩 눌러주시면 감사합니다 좋은하루 되세요!




 안녕하세요 랑 입니다.
인디게임 하나를 들고와봤습니다~!.

이번에나온  따끈따끈한  신작  인데요
첫시작화면은  아래와같습니다


굉장히 심플하고  깔끔합니다 
저렇게  지렁이한마리가 꿈틀꿈틀 하고있는데
조작법은  생각보다  간단합니다
위로올리면 위로가고 아래로내리면 아래로 내려가고  양옆 도 이동이 가능합니다
꾸욱  누르고잇으면  꾹 눌린것마냥  눌려서  물체를 피할수잇습니다.

생각보다 많이심플하고
양옆이동이 좀 불편하지만
묘하게 중독성있어서 재밌습니다.

캐릭터들도 다양하구요
다만 캐릭터는  현금결재로  얻을수있는거 같아보입니다.

킬링타임으로는  나름 좋습니다.
한번  여러분들도  최상층을 향해서  올라가보세요!

이상 랑이였습니다
오늘 하루도  행복하고 즐겁게  보내세요~~~!!

*이 게시글에 문제가 있을시  신고보단 지적을 먼저 부탁드립니다. 빠른시간안으로  수정하겠습니다. 감사합니다
제글을  재밌게 봐주셨다면  ♥(공감)한번씩 눌러주시면 감사합니다 좋은하루 되세요!


TCP/ip Soket data network 
소켓 데이터 구조체 통신

 

// Client.cpp : 구현 파일입니다.
//
#pragma once
#include "stdafx.h"
#include "MFC_TCPSocket.h"
#include "Client.h"
#include "afxdialogex.h"
#include "winsock2.h"
#pragma comment (lib,"ws2_32.lib");


// Client 대화 상자입니다.

IMPLEMENT_DYNAMIC(Client, CDialog)

Client::m_cSendData m_struct;

Client::Client(CWnd* pParent /*=NULL*/)
: CDialog(IDD_D_ClientDlg, pParent)
{
m_hClient = INVALID_SOCKET;
m_hClient = NULL;
m_hcServer = NULL;


}

Client::~Client()
{
}

void Client::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT7, m_ClientEditLog);
DDX_Control(pDX, IDC_L_cState, Client_List);
}


BEGIN_MESSAGE_MAP(Client, CDialog)
ON_BN_CLICKED(IDC_B_cConnect, &Client::OnBnClickedBcconnect)
ON_BN_CLICKED(IDC_B_cSend, &Client::OnBnClickedBcsend)
ON_BN_CLICKED(IDC_B_cDisconnect, &Client::OnBnClickedBcdisconnect)
ON_BN_CLICKED(IDC_B_cClear, &Client::OnBnClickedBcclear)
ON_BN_CLICKED(IDC_B_cLogreset, &Client::OnBnClickedBclogreset)
ON_BN_CLICKED(IDC_B_cClientClear, &Client::OnBnClickedBcclientclear)
ON_BN_CLICKED(IDC_B_cStateClear, &Client::OnBnClickedBcstateclear)
ON_WM_DESTROY()
END_MESSAGE_MAP()


// Client 메시지 처리기입니다.


void Client::OnBnClickedBcconnect()
{
//ip,port 값 받고 시작 
  GetDlgItemText(IDC_E_cOneN, m_icOneN);
GetDlgItemText(IDC_E_cTwoN, m_icTwoN);
  GetDlgItemText(IDC_E_cThreeN, m_icThreeN);
  GetDlgItemText(IDC_E_cFourN, m_icfourN);

if (m_hClient == NULL)
{
OpenClientSocket();
}
else
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[동작중입니다.문제가 있다면 Disconnect 후 사용해주시기 바랍니다.] \r\n");
}

}


void Client::OnBnClickedBcsend()
{
Client_List.ResetContent();
// 값을 받아오고 시작 
GetSendData();

ClientSend();
//서버한테 보내주고 내 state 에 정보 뿌려줌 
Client_List.InsertString(0, L"Model Name");
Client_List.InsertString(1, m_cscModel);
Client_List.InsertString(2, L"Location");
Client_List.InsertString(3, m_cscLocation);
Client_List.InsertString(4, L"X_Axis");
Client_List.InsertString(5, m_cscXaxis);
Client_List.InsertString(6, L"Y_Axis");
Client_List.InsertString(7, m_cscYaxis);
Client_List.InsertString(8, L"Voltage");
Client_List.InsertString(9, m_cscVoltage);
Client_List.InsertString(10, L"Current");
Client_List.InsertString(11, m_cscCurrent);
}


void Client::GetSendData()
{
// edit 의 CString 형 data 저장 .
GetDlgItemText(IDC_E_cModelName, m_cscModel);
GetDlgItemText(IDC_E_cLocation, m_cscLocation);
GetDlgItemText(IDC_E_cXaxis, m_cscXaxis);
GetDlgItemText(IDC_E_cYaxis, m_cscYaxis);
GetDlgItemText(IDC_E_cVoltage, m_cscVoltage);
GetDlgItemText(IDC_E_cCurrent, m_cscCurrent);
}


void Client::OpenClientSocket()
{
WSADATA data;
WSAStartup(0x0202, &data);  //소켓통신을 하기위해 필요한 start 문 정확한 자료는 따로 찾아봐야함.

GetDlgItemText(IDC_E_cPortN, m_icPortN);
u_short uscPortN = NULL;
uscPortN = (u_short)_wtof(m_icPortN);

if (m_icPortN == "")
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[Port에 값을 넣어주세요] \r\n");
return;
}

m_hClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 소켓 생성 

//내 주소 127.0.0.1   
//주소 받아와서 Cstring to char* 변환.
CString csFullAddr = m_icOneN + L"." + m_icTwoN + L"." + m_icThreeN + L"." + m_icfourN;
CStringA csAFullAddr = CStringA(csFullAddr);
const char* cFullAddr = csAFullAddr;
char* cpFullAddr = const_cast<char*>(cFullAddr);



tClientSocket = {0};
ZeroMemory(&tClientSocket, sizeof(tClientSocket));
tClientSocket.sin_family = AF_INET;
tClientSocket.sin_port = htons(uscPortN);
tClientSocket.sin_addr.s_addr = inet_addr(cpFullAddr); //htons(INADDR_ANY);//inet_addr("IP Num");

if (m_hClient == INVALID_SOCKET)
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[소캣이 생성되지 않았습니다. \r\n");
return;
}
else
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[소캣 생성 완료] \r\n");

if (m_hcServer = connect(m_hClient, (struct sockaddr*)&tClientSocket, sizeof(tClientSocket)) == SOCKET_ERROR)
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[연결 실패] \r\n");
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[IP 나 Port 번호를 다시 확인해주세요 ] \r\n");
if (SOCKET_ERROR == WSAEINTR)
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[WSACancelBlockingCall(Wsapiref_704y.asp) 호출로 인해 차단 작업이 중단되었습니다.] \r\n");
closesocket(m_hClient);
}
else if (SOCKET_ERROR == -1)
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[-1 err 타임에러 발생  ] \r\n");
closesocket(m_hClient);
}



return;
}
else
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[연결 성공 \r\n 이제부터 데이터를 보낼수있습니다.] \r\n");







}
return;
}


m_ClientEditLog.LineScroll(m_ClientEditLog.GetLineCount(), 0); //자동으로 스크롤 되도록 
}

void Client::OnBnClickedBcdisconnect()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

WSACleanup();
m_hClient = NULL;
SOCKET(NULL);
closesocket(m_hcServer);
closesocket(m_hClient);
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[클라이언트가 종료되었습니다..] \r\n");
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[바인드 초기화중이니 잠시후 다시 시도해주세요] \r\n");
}


void Client::OnDestroy()
{
CDialog::OnDestroy();
WSACleanup();

// TODO: 여기에 메시지 처리기 코드를 추가합니다.
}


void Client::OnBnClickedBcclear()
{
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[현재의 모든기록과 데이터를 Client 상에서 clear합니다.] \r\n");

m_cscModel.Empty();
m_cscLocation.Empty();
m_cscXaxis.Empty();
m_cscYaxis.Empty();
m_cscVoltage.Empty();
m_cscCurrent.Empty();

SetDlgItemText(IDC_E_cModelName, NULL);
SetDlgItemText(IDC_E_cLocation, NULL);
SetDlgItemText(IDC_E_cXaxis, NULL);
SetDlgItemText(IDC_E_cYaxis, NULL);
SetDlgItemText(IDC_E_cVoltage, NULL);
SetDlgItemText(IDC_E_cCurrent, NULL);
}


void Client::OnBnClickedBclogreset()
{
SetDlgItemText(IDC_E_cLogEdit, NULL);
}


void Client::OnBnClickedBcclientclear()
{
SetDlgItemText(IDC_E_cOneN, NULL);
SetDlgItemText(IDC_E_cTwoN, NULL);
SetDlgItemText(IDC_E_cThreeN, NULL);
SetDlgItemText(IDC_E_cFourN, NULL);
SetDlgItemText(IDC_E_cPortN, NULL);
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[IP,PORT 정보 클리어 ] \r\n");

}


void Client::OnBnClickedBcstateclear()
{
Client_List.ResetContent();
m_ClientEditLog.SetSel(-1, -1);
m_ClientEditLog.ReplaceSel(L"[State 정보 클리어 ] \r\n");
}

void Client::ClientSend()
{


GetSendData(); //데이터 받아오고 
m_struct.cModel    = m_cscModel;
m_struct.cLocation  = m_cscLocation;
m_struct.cXaxis     = m_cscXaxis;
m_struct.cYaxis     = m_cscYaxis;
m_struct.cVoltage   = m_cscVoltage;
m_struct.cCurrent   = m_cscCurrent;



send(m_hClient, (char*)&m_struct, sizeof(m_struct), 0); //위 내용을 보낸다 Send

}

*이 게시글에 문제가 있을시  신고보단 지적을 먼저 부탁드립니다. 빠른시간안으로  수정하겠습니다. 감사합니다
제글을  재밌게 봐주셨다면  ♥(공감)한번씩 눌러주시면 감사합니다 좋은하루 되세요!


TCP/ip Soket data network 
소켓 데이터 구조체 통신 

 

#pragma once
#include "afxwin.h"


// Client 대화 상자입니다.

class Client : public CDialog
{
DECLARE_DYNAMIC(Client)

public:
Client(CWnd* pParent = NULL);   // 표준 생성자입니다.
virtual ~Client();

// 대화 상자 데이터입니다.
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_D_ClientDlg };
#endif

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 지원입니다.
afx_msg void OnBnClickedBcconnect();
afx_msg void OnBnClickedBcsend();
afx_msg void OnBnClickedBcdisconnect();
afx_msg void OnDestroy();
afx_msg void OnBnClickedBcclear();
afx_msg void OnBnClickedBclogreset();
afx_msg void OnBnClickedBcclientclear();
afx_msg void OnBnClickedBcstateclear();
CListBox Client_List;
CEdit m_ClientEditLog;
DECLARE_MESSAGE_MAP()

private:
void GetSendData();
void OpenClientSocket();
void ClientSend();
void CloseClient();
// void SendMsg();



public:
CString m_icOneN;
CString m_icTwoN;
CString m_icThreeN;
CString m_icfourN;
CString m_icPortN;

CString m_cscModel;
CString m_cscLocation;
CString m_cscXaxis;
CString m_cscYaxis;
CString m_cscVoltage;
CString m_cscCurrent;

SOCKET m_hClient;
SOCKET m_hcServer;
SOCKADDR_IN tClientSocket;

/*struct m_cSendData;*/

struct m_cSendData
{
CString cModel = 0;
CString cLocation = 0;
CString cXaxis = 0;
CString cYaxis = 0;
CString cVoltage = 0;
CString cCurrent = 0;

};



};


*이 게시글에 문제가 있을시  신고보단 지적을 먼저 부탁드립니다. 빠른시간안으로  수정하겠습니다. 감사합니다
제글을  재밌게 봐주셨다면  ♥(공감)한번씩 눌러주시면 감사합니다 좋은하루 되세요!

TCP/ip Soket data network 

소켓 데이터 구조체 통신 

// ServerDlg.cpp : 구현 파일입니다.
//

#include "stdafx.h"
#include "MFC_TCPSocket.h"
#include "ServerDlg.h"
#include "afxdialogex.h"
#include "winsock2.h"
#pragma comment (lib,"ws2_32.lib");


// ServerDlg 대화 상자입니다.

IMPLEMENT_DYNAMIC(ServerDlg, CDialog)




ServerDlg::ServerDlg(CWnd* pParent /*=NULL*/)
: CDialog(IDD_D_ServerDlg, pParent)
{
//m_ListenServer = INVALID_SOCKET; // 소켓 초기화 
m_clientdlg = nullptr;
hServer  = INVALID_SOCKET;
hServer  = NULL;
hClient  = NULL;
m_hWaitAccept  = NULL;
m_evhWaitAccServer  = NULL;
m_sRecvData  = NULL;
m_hRecvS  = NULL;
m_evhRecvS  = NULL;
m_evhWaitAccServer  = CreateEvent(NULL, FALSE, FALSE, NULL);
m_evhRecvS = CreateEvent(NULL, FALSE, FALSE, NULL);
m_iClientLen        = 0;
m_iSaveData = 1;
ResetEvent(m_evhWaitAccServer);
ResetEvent(m_hWaitAccept);
ResetEvent(m_evhRecvS);
ResetEvent(m_hRecvS);

}

ServerDlg::~ServerDlg()
{
}

void ServerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_E_sLogEdit, ServerEditLog);
DDX_Control(pDX, IDC_L_sLoadSave, m_ServerSDL);
DDX_Control(pDX, IDC_L_sLoad, m_ServerCDL);

}


BEGIN_MESSAGE_MAP(ServerDlg, CDialog)
ON_BN_CLICKED(IDC_B_sConnecter, &ServerDlg::OnBnClickedBsconnecter)
ON_BN_CLICKED(IDC_B_sDisconnecter, &ServerDlg::OnBnClickedBsdisconnecter)
ON_BN_CLICKED(IDC_B_sLogreset, &ServerDlg::OnBnClickedBslogreset)
ON_BN_CLICKED(IDC_B_sClear, &ServerDlg::OnBnClickedBsclear)
ON_BN_CLICKED(IDC_B_sLoadClear, &ServerDlg::OnBnClickedBsloadclear)
ON_BN_CLICKED(IDC_B_sDataClear, &ServerDlg::OnBnClickedBsdataclear)
ON_BN_CLICKED(IDC_B_sLoad, &ServerDlg::OnBnClickedBsload)
ON_WM_DESTROY()
END_MESSAGE_MAP()


// ServerDlg 메시지 처리기입니다.


void ServerDlg::OnBnClickedBsconnecter()
{

if (hServer == NULL)
{
//소켓 생성 해준다 
OpenSocket();
//그리고 다른송신 대기 시작.
}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[동작중입니다.문제가 있다면 Disconnect 후 사용해주시기 바랍니다.] \r\n");
}
}
void ServerDlg::OpenSocket()
{
WSADATA data;
WSAStartup(0x0202, &data);

int iSzClient = 0 ;

//ip,port 값 받고 시작 
GetDlgItemText(IDC_E_sOneN, m_isOneN);
GetDlgItemText(IDC_E_sTwoN, m_isTwoN);
GetDlgItemText(IDC_E_sThreeN, m_isThreeN);
GetDlgItemText(IDC_E_sFourN, m_isfourN);
GetDlgItemText(IDC_E_sPortN, m_isPortN);

  CString IPNUM = m_isOneN + L"." + m_isTwoN + L"." + m_isThreeN + L"." + m_isfourN;
CStringA aIpnum = CStringA(IPNUM);
const char* ccIpNum = aIpnum;
char* cpIpNum = const_cast<char*>(ccIpNum);

//포트 변환 
u_short usPortN = NULL;
usPortN = (u_short)_wtof(m_isPortN);

// 소켓 생성 
if (m_isPortN == "")
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[Port에 값을 넣어주세요] \r\n");
return;
}

hServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

tServerSocket = {0};
ZeroMemory(&tServerSocket, sizeof(tServerSocket)); //메모리 비우기
tServerSocket.sin_family = AF_INET;
tServerSocket.sin_port = htons(usPortN);
tServerSocket.sin_addr.s_addr = (htons(INADDR_ANY)); //INADDR_ANY 현재의 내 IP 주소로 설정 
//192.168.10.96?

if (hServer == INVALID_SOCKET) {

ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[소캣이 생성되지 않았습니다. \r\n");

return;
}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[소캣 생성 완료] \r\n");

if (bind(hServer, (struct sockaddr*)&tServerSocket, sizeof(tServerSocket)) == SOCKET_ERROR)
{//주소할당이 제대로 되었는지 
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[바인딩 실패 하였습니다.] \r\n");
return;
}
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[클라이언트를 기다립니다.] \r\n");

ResetEvent(m_evhWaitAccServer);
m_hWaitAccept = (HANDLE)_beginthreadex(NULL, 0, _m_WaitAccept, this, 0, NULL);
if (hClient == INVALID_SOCKET)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[신호를 받지 못했습니다. 다시연결해주시기 바랍니다.] \r\n");
return;
}
else
{
//Thread Create
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[신호가 연결되었습니다.] \r\n");
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[Data를 받을준비를 합니다.] \r\n");

ResetEvent(m_evhRecvS);
m_hRecvS = (HANDLE)_beginthreadex(NULL, 0, _m_sRecvThread, this, 0, NULL);
}
}
return;
ServerEditLog.LineScroll(ServerEditLog.GetLineCount(), 0);
}

unsigned ServerDlg::m_WaitAccept()
{
int iSzClient = 0;
iSzClient = sizeof(m_siClientSocket);

while (WaitForSingleObject(m_evhWaitAccServer, 100) == WAIT_TIMEOUT)
{
if (hServer == SOCKET_ERROR)
{//소켓 에러시 .
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[잃어들이기에 실패 하였습니다.] \r\n");
}
else
{  

if (listen(hServer, SOMAXCONN) == SOCKET_ERROR)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[잃어들이기에 실패 하였습니다.] \r\n");

}
else
{
hClient = accept(hServer, (SOCKADDR*)&m_siClientSocket, &iSzClient);

}
}


}
return 0;


}
void ServerDlg::compareMS()
{
if (m_sModel == m_sSubModel) // 두개의 값들이 들어가있나 확인 .
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Model Success==] \r\n");
if (m_sLocation == m_sSubLocation)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Location Success==] \r\n");

if (m_sXaxis == m_sSubXaxis)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Xaxis Success==] \r\n");
if (m_sYaxis == m_sSubYaxis)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Yaxis Success==] \r\n");
if (m_sVoltage == m_sSubVoltage)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Voltage Success==] \r\n");
if (m_sCurrent == m_sSubCurrent)
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Current Success==] \r\n");
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==All Success==] \r\n");
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Wait Data ==] \r\n");
Sleep(700);
ServerEditLog.SetSel(0, -1);
ServerEditLog.ReplaceSel(L"[==Data Success==] \r\n");

}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Current Fail==] \r\n");
}
}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Voltage Fail==] \r\n");
}
}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Yaxis Fail==] \r\n");
}
}
else 
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Xaxis Fail==] \r\n");
}
}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Location Fail==] \r\n");
}
}
else
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[==Model Fail==] \r\n");
}


}

unsigned ServerDlg::m_sRecvThread()  //리시브 스레드.
{

while (WaitForSingleObject(m_evhRecvS, 100) == WAIT_TIMEOUT) //100마다 땅땅 체크 
{

while ((m_iClientLen = recv(hClient, (char*)&m_struct, sizeof(m_struct)*2, 0)) != 0)
{
if (hClient == NULL)
{
send(hClient, m_sRecvData, m_iClientLen, 0); //recv 값을 받았다고 클라이언트 에게 다시 알려줌 .
Sleep(1000);
if (m_sRecvData == NULL)
{//데이터 로딩중에 데이터 받으면 연결확인문 띄우기 


Sleep(300);
ServerEditLog.SetSel(0, -1);
ServerEditLog.ReplaceSel(L"[Data 로딩중입니다.] \r\n");
}
}
else
{

ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[Data를 성공적으로 받았습니다.] \r\n");
//데이터 받고나서 저장하고 저장되는대로 데이터 저장칸 날리고
//저장 
C_DataSave();

if (m_iSaveData == 1)//첫번째 꺼는 Main 이되고 
{
C_DataLoad();
}
else // 두번째 꺼는 Sub 가 된다 . (차후 위내용과 아래내용일 일치하는지 봐야함)
{
C_DataSubLoad();
//두번째 값 받고나서는 꼭 비교 해볼것.
compareMS();




}

// 이제 기존데이터 따로 저장했으니 새로저장할곳을 만들고 
// 통신포트에서 대기중으로 다시 돌아와야한다.
}
}

}


return 0; 
}

// 통신 이후 Data 수신 후 송신 두개의 Part를 만들어줘야함 
//받아온 Data 를 저장해주어야하며 
//비교해주는 문도 만들고 그값 리턴 필요 





void ServerDlg::OnDestroy()
{
CDialog::OnDestroy();

//  //소켓통신을 다썻다면 닫아주는 작업을 해준다 
//  //다이얼로그의 윈도우가 파게될떄 선언
  WSACleanup();
}

void ServerDlg::OnBnClickedBsdisconnecter()  //커넥트 해제 . 
{
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[클라이언트가  종료되었습니다..] \r\n");
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[바인드 초기화중이니 잠시후 다시 시도해주세요] \r\n");
hServer  = NULL;
m_hWaitSocket  = NULL;
m_hWaitAccept  = NULL;
m_evhWaitAccServer  = NULL;
m_hRecvS  = NULL;
m_evhRecvS  = NULL;
SetEvent(m_evhWaitAccServer);
SetEvent(m_hRecvS);
closesocket(hClient);
closesocket(hServer);
closesocket(m_hWaitSocket);
SOCKET(NULL);
WSACleanup();

}


void ServerDlg::OnBnClickedBslogreset()
{
SetDlgItemText(IDC_E_sLogEdit, NULL);
}


void ServerDlg::OnBnClickedBsclear()
{

SetDlgItemText(IDC_E_sOneN, NULL);
SetDlgItemText(IDC_E_sTwoN, NULL);
SetDlgItemText(IDC_E_sThreeN, NULL);
SetDlgItemText(IDC_E_sFourN, NULL);
SetDlgItemText(IDC_E_sPortN, NULL);
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[IP,PORT 정보 클리어 ] \r\n");
}


void ServerDlg::OnBnClickedBsloadclear()
{
m_ServerSDL.ResetContent();
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[SaveList 정보 클리어 ] \r\n");
m_iSaveData = 1;

}


void ServerDlg::OnBnClickedBsdataclear()
{
m_ServerCDL.ResetContent();
ServerEditLog.SetSel(-1, -1);
ServerEditLog.ReplaceSel(L"[CallList 정보 클리어 ] \r\n");
}
void ServerDlg::C_DataSave()  //받아온 데이터 저장 
{
if (m_iSaveData == 1)
{
m_sModel = m_struct.cModel;
m_sLocation = m_struct.cLocation;
m_sXaxis = m_struct.cXaxis;
m_sYaxis = m_struct.cYaxis;
m_sVoltage = m_struct.cVoltage;
m_sCurrent = m_struct.cCurrent;
}
else
{
m_sSubModel = m_struct.cModel;
m_sSubLocation = m_struct.cLocation;
m_sSubXaxis = m_struct.cXaxis;
m_sSubYaxis = m_struct.cYaxis;
m_sSubVoltage = m_struct.cVoltage;
m_sSubCurrent = m_struct.cCurrent;
}

}

void ServerDlg::C_DataLoad()  //값 띄우기 메인값.
{
m_ServerSDL.InsertString(0, L"Model Name");
m_ServerSDL.InsertString(1, m_sModel);
m_ServerSDL.InsertString(2, L"Location");
m_ServerSDL.InsertString(3, m_sLocation);
m_ServerSDL.InsertString(4, L"X_Axis");
m_ServerSDL.InsertString(5, m_sXaxis);
m_ServerSDL.InsertString(6, L"Y_Axis");
m_ServerSDL.InsertString(7, m_sYaxis);
m_ServerSDL.InsertString(8, L"Voltage");
m_ServerSDL.InsertString(9, m_sVoltage);
m_ServerSDL.InsertString(10, L"Current");
m_ServerSDL.InsertString(11, m_sCurrent);
m_iSaveData = 2;
}

void ServerDlg::C_DataSubLoad() //Sub 값 띄우기 
{
m_ServerCDL.InsertString(0, L"Model Name");
m_ServerCDL.InsertString(1, m_sSubModel);
m_ServerCDL.InsertString(2, L"Location");
m_ServerCDL.InsertString(3, m_sSubLocation);
m_ServerCDL.InsertString(4, L"X_Axis");
m_ServerCDL.InsertString(5, m_sSubXaxis);
m_ServerCDL.InsertString(6, L"Y_Axis");
m_ServerCDL.InsertString(7, m_sSubYaxis);
m_ServerCDL.InsertString(8, L"Voltage");
m_ServerCDL.InsertString(9, m_sSubVoltage);
m_ServerCDL.InsertString(10, L"Current");
m_ServerCDL.InsertString(11, m_sSubCurrent);
}


void ServerDlg::OnBnClickedBsload()  //기존값 불러오기 .
{
m_ServerSDL.InsertString(0,  L"Model Name");
m_ServerSDL.InsertString(1, m_sModel);
m_ServerSDL.InsertString(2, L"Location");
m_ServerSDL.InsertString(3, m_sLocation);
m_ServerSDL.InsertString(4, L"X_Axis");
m_ServerSDL.InsertString(5, m_sXaxis);
m_ServerSDL.InsertString(6, L"Y_Axis");
m_ServerSDL.InsertString(7, m_sYaxis);
m_ServerSDL.InsertString(8, L"Voltage");
m_ServerSDL.InsertString(9, m_sVoltage);
m_ServerSDL.InsertString(10, L"Current");
m_ServerSDL.InsertString(11, m_sCurrent);
}



 *이 게시글에 문제가 있을시  신고보단 지적을 먼저 부탁드립니다. 빠른시간안으로  수정하겠습니다. 감사합니다

제글을  재밌게 봐주셨다면  ♥(공감)한번씩 눌러주시면 감사합니다 좋은하루 되세요!

 

+ Recent posts