서버
#include <iostream>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
union GameMoney {
int money;
char buf[4];
};
bool g_Loop = true;
void Error(char* m);
void readMoneyData(GameMoney* m);
void saveMoneyData(GameMoney* m);
int main()
{
int gMoney = 0;
GameMoney m;
m.money = 0;
readMoneyData(&m);
printf("%d \n", m.money);
m.money = 2147483647;
saveMoneyData(&m);
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0) Error("WSAStartup() error");
SOCKET hServSock, hClntSock;
SOCKADDR_IN servAddr, clntAddr;
int szClntAddr;
char message[30];
memset(&message, 0, sizeof(message));
strcpy(message, "money: ");
strcat(message, m.buf);
strcat(message, "\n");
hServSock = socket(PF_INET, SOCK_STREAM, 0);
if (hServSock == INVALID_SOCKET) Error("socket() error");
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
servAddr.sin_port = htons(atoi("9876"));
if (bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR) Error("bind() error");
if (listen(hServSock, 5) == SOCKET_ERROR) Error("listen() error");
szClntAddr = sizeof(clntAddr);
hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr);
if (hClntSock == INVALID_SOCKET) Error("accept() error");
send(hClntSock, message, sizeof(message), 0);
while (g_Loop)
{
memset(&message, 0, sizeof(message));
strcpy(message, "1. pc방 알바 2. 편의점 알바\n");
send(hClntSock, message, sizeof(message), 0);
memset(&message, 0, sizeof(message));
int strLen = recv(hClntSock, message, sizeof(message) - 1, 0);
if (strLen == -1)Error("recv() error");
}
closesocket(hClntSock);
closesocket(hServSock);
WSACleanup();
return 0;
}
void saveMoneyData(GameMoney* m)
{
FILE* fp;
fp = fopen("money.txt", "w");
if (fp == NULL)
{
Error("file save error");
}
fwrite(m->buf, 1, 4, fp);
//printf("%d %d %d %d \n", m->buf[0], m->buf[1], m->buf[2], m->buf[3]);
fclose(fp);
}
void readMoneyData(GameMoney* m)
{
char buf[4];
FILE* fp;
fp = fopen("money.txt", "r");
int size;
if (fp == NULL)
{
system("type nul > money.txt");
Error("file read failed");
}
else
{
fseek(fp, 0, SEEK_END);
size = ftell(fp);
if (size == 0)
{
m->money = 0;
printf("no size \n");
}
else
{
fseek(fp, 0, SEEK_SET);
fread(m->buf, sizeof(char), 4, fp);
//printf("%d %d %d %d \n", m->buf[0], m->buf[1], m->buf[2], m->buf[3]);
}
}
fclose(fp);
}
void Error(char* m)
{
printf("%s \n", m);
exit(1);
}
클라
#include <iostream>
#include <string>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
union GameMoney {
int money;
char buf[4];
};
bool g_Loop = true;
void Error(char* m)
{
printf("%s \n", m);
exit(1);
}
int main()
{
GameMoney m;
m.money = 0;
string str1("money");
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0) Error("WSAStartup() error");
SOCKET hSocket;
SOCKADDR_IN servAddr;
char message[30];
int strLen;
hSocket = socket(PF_INET, SOCK_STREAM, 0);
if (hSocket == INVALID_SOCKET) Error("socket() error");
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
servAddr.sin_port = htons(atoi("9876"));
if (connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR) Error("connect() error");
strLen = recv(hSocket, message, sizeof(message) - 1, 0);
if (strLen == -1) Error("recv() error");
string str2(message);
string str3;
size_t found = str2.find(str1);
if (found != string::npos)
{
str3 = str2.substr(7, 4);
str3.copy(m.buf, 4);
}
else
cout << "can't find" << endl;
printf("%s \n", message);
printf("%d \n", m.money);
while (g_Loop)
{
memset(&message, 0, sizeof(message));
strLen = recv(hSocket, message, sizeof(message), 0);
if (strLen == -1) Error("recv() error");
cout << "server: " << message << endl;
memset(&message, 0, sizeof(message));
scanf("%s\n", message);
send(hSocket, message, sizeof(message), 0);
}
closesocket(hSocket);
WSACleanup();
return 0;
}
'소켓프로그래밍' 카테고리의 다른 글
java 간단한 web Server 한글전송 깨짐. (0) | 2020.09.25 |
---|---|
chrome http web프로그래밍 에러 (failed) net::ERR_CONTENT_LENGTH_MISMATCH (0) | 2020.09.24 |
cpp 간단한 web서버 (0) | 2020.09.23 |
JAVA 간단한 web서버 만들기 (0) | 2020.09.23 |
windows socket프로그래밍 (0) | 2020.09.16 |