'Code/socket'에 해당되는 글 5건

  1. 2011.09.03 [SOCKET] clinet for poker
  2. 2011.09.03 [SOCKET]1:1 chatting server
  3. 2011.09.03 [SOCKET]1:1 chating client
  4. 2011.09.03 [SOCKET]chating server for test
  5. 2011.09.03 [SOCKET]chating client for test
2011. 9. 3. 14:54


/*
2011.05.22-28.
Daun.

Client For Poker..
*/
#pragma comment(lib,"ws2_32.lib")
#include <winsock2.h>
#include <stdio.h>
#include <math.h>
#include <string.h>

#define PORT 8494
#define IP "192.168.0.36"

#define OFF 0
#define ON 1

char *SHAPE[4] = {"♤", "◇", "♡", "♧"};
char *NUM[13] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
enum {BLACK,D_BLUE,D_GREEN,D_SKYBLUE,D_RED,D_VIOLET,D_YELLOW,GRAY,D_GRAY,BLUE,GREEN,SKYBLUE,RED,VIOLET,YELLOW,WHITE,};

void SetColor(int backcolor, int fontcolor)
{
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), backcolor*16+fontcolor);
}


int myCard[5]={0};  //나의 카드 저장배열
int winner = 0;

int player0Card[5]={0}; //다른player의 카드 저장배열
int player1Card[5]={0}; //다른player의 카드 저장배열
int player2Card[5]={0}; //다른player의 카드 저장배열
int player3Card[5]={0}; //다른player의 카드 저장배열
int player4Card[5]={0}; //다른player의 카드 저장배열
int playerCard[5][5]={0};

int playerMoney[5]={20000000};
int allMoney = 0;
int willgiveMoney=100;

int menu=0;//선택매뉴를 저장하는 변수
int cardTurn = 0; //공개한 카드의 갯수를 저장함 0은 어처피 비공개라서...
int myPlayerNumber=0;
int die = OFF; //0인경우는 다이가 아닌경우 1로 변하면 다이가 되어있는경우.

int itemp=0; //int형 임시 저장소
char ctemp=0; //char형 임시 저장소

SOCKET soc; //소켓변수
struct sockaddr_in addr; //구조체변수

char buf[256]={0}; //전달할 문자열을 저장할 배열

void show();
void print_card(int);
void display_card(int , int);
void playGame(int);
void betting(int,int);
void printMoney(int );

void main()
{
 system("COLOR F0");
 SetColor(WHITE,BLACK);
 WSADATA wsa;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

 addr.sin_addr.S_un.S_addr=inet_addr(IP);
 addr.sin_family=AF_INET;
 addr.sin_port=htons(8494);
 SetColor(WHITE,VIOLET);
 printf("\n\n\n\n\n\n\nWaiting~");
 SetColor(WHITE,BLACK);
 connect(soc,(struct sockaddr*)&addr, sizeof(addr));

 memset(buf,0,256);
 recv(soc,buf,256,0);
 sscanf(buf,"%d",&myPlayerNumber);

 die = OFF;
 memset(buf,0,256);
 recv(soc,buf,256,0); //나의 카드 목록을 받음
 sscanf(buf, "%d %d %d %d %d",&myCard[0],&myCard[1],&myCard[2],&myCard[3],&myCard[4]); //나의 카드를 배열에 저장

 system("cls");
 SetColor(WHITE,VIOLET);
 printf("당신은 %d번 플레이어입니다.\n",myPlayerNumber);
 printf("게임이 시작되었습니다.\n\n");
 SetColor(WHITE,BLACK);
 printf("\t\t받은 카드는 ");
 print_card(myCard[0]);
 print_card(myCard[1]); //받은 카드중 2개를 공개
 printf("입니다.\n\n");

 while(1)
 {
  fflush(stdin);
  memset(buf,0,256);
  recv(soc, buf, 256, 0);
  menu = buf[0];
  playGame(menu);
  if(menu == '6')
   break;
 }

 WSACleanup();
 closesocket(soc);
}

void print_card(int card)
{
 int shape = card / 13;
 int num = card % 13;
 if(shape==1||shape==2)
  SetColor(WHITE,RED);
 printf("%s%s ", SHAPE[shape], NUM[num]);
 SetColor(WHITE,BLACK);
} //숫자로 저장된 카드를 모양으로 바꾸어주는 함수


void display_card(int card[5], int num)
{
 num++;
 for(int i = 0 ; i<=num; i++)
  if(card[i] != 99)
   print_card(card[i]);
  else
   printf(" XX ");
 puts("");
} //카드목록을 보여주는 함수


void show()
{
 Sleep(1000);   
 system("cls");
 SetColor(WHITE,VIOLET);
 printf("당신은 %d번 플레이어입니다.\n\n\n",myPlayerNumber);
 SetColor(WHITE,BLACK);
 for(int i = 0 ; i < 5 ; i++)
 {
  if(i==myPlayerNumber)
  {
   printf("\t\t나의 카드는 : ");
   if(menu =='3')
    display_card(myCard,cardTurn+1);
   else
    display_card(myCard,cardTurn);
  }
  else
  {
   printf("\t\tplayer%d의 카드는 : ",i);
   display_card(playerCard[i],cardTurn-1);
  }
 }

}

void playGame(int menu)
{
 switch(menu)
 {
 case '1':
  if(die == OFF)
  {
   while(1)
   {
    printf("배팅을 할 차례입니다.\n (콜 : 1번, 하프 : 2번, 다이 : 0번)");
    printf("\n콜 : %d  , 하프 : %d\n\n",willgiveMoney,allMoney/2);
    fflush(stdin);
    scanf("%c",&ctemp);
    if(ctemp == '1' || ctemp == '2' || ctemp == '0')
     break;
   }

   if(ctemp == '0')
    die = ON;

   memset(buf,0,256);
   sprintf(buf,"%c",ctemp);
   send(soc,buf,256,0);
  }
  else
  {
   printf("현재 다이 상태 입니다.\n");
   fflush(stdin);
   memset(buf,0,256);
   sprintf(buf,"%c",'0');
   send(soc,buf,256,0);
  }
  //나의 배팅정보를 보냄
  break;

 case '2':
  sscanf(buf, "%d %d %d %d %d %d",&menu,&playerCard[0][cardTurn],&playerCard[1][cardTurn],&playerCard[2][cardTurn],&playerCard[3][cardTurn],&playerCard[4][cardTurn]);//각 플레이어의 2번재 카드를 저장
  if(die == OFF)
   show();
  else
  {   
   Sleep(1000);
   system("cls");
   printf("다이상태입니다. \n게임이 끝날때까지 기다리숑!");
  }
  cardTurn++;
  //카드를 받음
  break;

 case '3':
  cardTurn=2;
  show();
  //마지막카드확인
  break;

 case '5':
  int a, b;
  sscanf(buf,"%d %d %d",&menu,&a,&b);

  betting(a,b);

  if(b == 0)
   for(int i = 0 ; i < 5 ; i++)
    if(a == i)
     for(int p = 0 ; p < cardTurn; p++)
      playerCard[a][i] = 99;
  fflush(stdin);
  //memset(buf,0,256);
  recv(soc, buf, 256,0);
  sscanf(buf,"%d %d %d %d %d %d %d",&allMoney, &willgiveMoney, &playerMoney[0], &playerMoney[1], &playerMoney[2], &playerMoney[3], &playerMoney[4]);

  //배팅을한결과보여줌
  break;

 case '6':
   for(int i = 0 ; i < 5 ; i++)
   {
    sscanf(buf,"%d %d %d %d %d %d %d %d",&menu, &itemp, &playerCard[i][0],&playerCard[i][1],&playerCard[i][2],&playerCard[i][3],&playerCard[i][4],&winner);
    memset(buf,0,256);
    if(i != 4)
    recv(soc, buf, 256, 0);
   }
   for(int i = 0 ; i < 5 ; i++)
   {
    printf("player %d  : ",i);
    display_card(playerCard[i],3);
    puts("");
   }
   printf("\n승자는 : %d player 입니다.\n",winner);
   Sleep(10000);
   break;

 case '9':
  while(1)
  {
   printf(" 어떤카드를 공개하겠습니까?(왼쪽카드 : 0, 오른쪽카드 : 1) : ");
   fflush(stdin);
   scanf("%d",&itemp); //공개할 카드 번호를 선택
   if(itemp == 0 || itemp == 1)
    break;
  }
  if(itemp==0)
   sprintf(buf,"%d",myCard[0]);
  else
   sprintf(buf,"%d",myCard[1]);

  send(soc,buf,256,0); //공개할 카드 번호를 보냄
  break;
 }
}


void betting(int player ,int sel)
{
 switch(sel)
 {
 case 1:
  printf("\n\n%d번 플레이어가 콜을 했습니다.\n",player);
  printMoney(player);
  break;
 case 2:
  printf("\n\n%d번 플레이어가 하프를 했습니다.\n",player);
  printMoney(player);
  break;
 case 0:
  printf("\n\n%d번 플레이어가 다이를 했습니다.\n",player);
  printMoney(player);
  break;

 }
}

void printMoney(int player)
{
 printf("\n%d번 플레이어의 남은 돈은 %d원 입니다.\n\n",player,playerMoney[player]);
}

'Code > socket' 카테고리의 다른 글

[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:53


/*
2011.05.17.-18.
Daun.
1:1chatting.
Server..
*/
#include <winsock2.h>
#include <stdio.h>
#include<iostream>

#include<process.h> //스레드
#include<windows.h> //스레드

#include<time.h> //sleep 사용시

 


#define PORT 3000;
 char buf[256]={0};
 SOCKET soc, soc_client;


unsigned WINAPI rThreadFunction(void* arg);


unsigned WINAPI sThreadFunction(void* arg);

 

void main()
{
 WSADATA wsa;


 struct sockaddr_in addr;
 int size;

 HANDLE rThread, sThread;

 int intThread=0;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

 

 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);
 addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

 bind(soc,(struct sockaddr*)&addr, sizeof(addr));

 listen(soc, 5);

 size = sizeof(addr);

 soc_client = accept(soc, (struct sockaddr*)&addr, &size);


 while(1)
 {
 rThread=(HANDLE)_beginthreadex(0,0,rThreadFunction,0,0,(unsigned*)intThread);
 sThread=(HANDLE)_beginthreadex(0,0,sThreadFunction,0,0,(unsigned*)intThread);
}
 TerminateThread(rThread,0);
 TerminateThread(sThread,0);

 

 closesocket(soc);
 WSACleanup();
}

unsigned WINAPI rThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
 recv(soc_client, buf, 256,0);
 printf("상대방 : %s\n",buf);
 }
 return 0;
}


unsigned WINAPI sThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
  
 scanf("%s",&buf);
 send(soc_client, buf, 256, 0);


 }
 return 0;
}

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:53

/*
2011.05.17.-18.
Daun.
1:1Chatting
Client..
*/
#include <winsock2.h>
#include <stdio.h>
#include<iostream>

#include<process.h> //스레드
#include<windows.h> //스레드

#include<time.h> //sleep 사용시

 

#define PORT 3000
 char buf[256]={0};
  SOCKET soc;

 

unsigned WINAPI rThreadFunction(void* arg);

unsigned WINAPI sThreadFunction(void* arg);

void main()
{


 struct sockaddr_in addr;
 HANDLE rThread, sThread;

 int intThread=0;

 WSADATA wsa;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

 addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);

 connect(soc,(struct sockaddr*)&addr, sizeof(addr));
while(1)
{
 sThread=(HANDLE)_beginthreadex(0,0,sThreadFunction,0,0,(unsigned*)intThread);
 rThread=(HANDLE)_beginthreadex(0,0,rThreadFunction,0,0,(unsigned*)intThread);
}
 TerminateThread(rThread,0);
 TerminateThread(sThread,0);

 

 
 WSACleanup();
 closesocket(soc);

}


unsigned WINAPI rThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
 recv(soc, buf, 256,0);
 printf("상대방 : %s\n",buf);
 }
 return 0;
}


unsigned WINAPI sThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
  
 scanf("%s",&buf);
 send(soc, buf, 256, 0);


 }
 return 0;
}

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:52


/*
2011.05.17.-18.
Daun.

Server..
*/
#include <winsock2.h>
#include <stdio.h>


#define PORT 3000;

void main()
{
 WSADATA wsa;

 SOCKET soc, soc_client;
 struct sockaddr_in addr;
 char buf[256]={0};
 int size;

 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

 

 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);
 addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

 bind(soc,(struct sockaddr*)&addr, sizeof(addr));

 listen(soc, 5);

 size = sizeof(addr);

 soc_client = accept(soc, (struct sockaddr*)&addr, &size);

 while(1)
 {
  recv(soc_client, buf, 256,0);
  printf("%s",buf);
  fflush(stdin);
  memset(buf,0,256);
  puts("");
  scanf("%s",buf);
  send(soc_client, buf, 256, 0);
  fflush(stdin);
  memset(buf,0,256);
  puts("");

 }

 closesocket(soc);
 WSACleanup();
}

 

 

 

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:51


/*
2011.05.17.-18.
Daun.

Client..
*/
#include <winsock2.h>
#include <stdio.h>

#define PORT 3000

void main()
{

 SOCKET soc;
 struct sockaddr_in addr;
 char buf[256]={0};
 WSADATA wsa;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

 addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);

 connect(soc,(struct sockaddr*)&addr, sizeof(addr));

 while(1)
 {
  scanf("%s",&buf);
  send(soc, buf,256,0);
  fflush(stdin);
  memset(buf,0,256);
  puts("");
  recv(soc, buf,256,0);
  printf("%s",&buf);
  fflush(stdin);
  memset(buf,0,256);
  puts("");
 }


 WSACleanup();
 closesocket(soc);

}

 

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
Posted by I_co