• 大小: 0.02M
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: C/C++
  • 标签: 其他  

资源简介

game.cpp

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
using namespace std;
#define J 11
#define Q 12
#define K 13
#define A 14
char action_msg[10];
int b=0;//四张同色的小标
int num0=0;  //0的个数
int search0[3];//应该作为全局变量,或放到turn,river的头文件中
int m_socket_id=-1;
typedef struct 
{
char position;
int pid;
int jetton;
int money;
} poker_seat;
poker_seat seat[8]my_seatplayer_seat;
typedef struct
{
int pid;
int jetton;
int money;
int bet;
char poker_action[10];
} poker_inquire;//CS发过来的牌手信息
poker_inquire poker[8];
poker_inquire *person;
typedef struct
{
char color[9];
int point;
}puke;
char flag;
char action[20]={‘\0‘};
puke card[7];

char *t=action;//t是指向action的指针
int response(int my_idpoker_inquire poker[7]);
int msg_tiqu(char *msg_recv);
void hold_card();
void flop();
void turn();
void river(); 
int check_poker(puke Poke[]);
int msg_tiqu(char *msg_recv);
void erase_char(string &strchar p);

int response(int my_idpoker_inquire poker[7]);
/* 处理server的消息 */
int on_server_message(int length const char* buffer)
{
printf(“Recieve Data From Server(%s)\n“ buffer);

return 0;
}

int main(int argc char *argv[])
{
if (argc != 6) 
{
printf(“Usage: ./%s server_ip server_port my_ip my_port my_id\n“ argv[0]);
return -1;
}
in_addr_t server_ip = inet_addr(argv[1]);//其中 192.168.0.1 是牌桌程序IP
in_port_t server_port = htons(atoi(argv[2]));//1024 是牌桌程序端口号
//htons():主机字节顺序转换为网络字节顺序(对无符号短型进行操作 4 bytes) 
in_addr_t my_ip = inet_addr(argv[3]);//其中 192.168.0.2 是牌手程序绑定的IP
in_port_t my_port = htons(atoi(argv[4]));//2048是牌手程序绑定的端口号
int my_id = atoi(argv[5]);//其中 6001 是用来向牌桌注册的ID

/* 创建socket */
m_socket_id = socket(AF_INET SOCK_STREAM 0);
if(m_socket_id < 0)/*  如果发生错误,socket()函数返回  – 1 */
{
printf(“init socket failed!\n“);
return -1;
}

int is_reuse_addr = 1;
setsockopt(m_socket_id SOL_SOCKET SO_REUSEADDR (const char*)&is_reuse_addr sizeof(is_reuse_addr));


struct sockaddr_in my_addr;
bzero(&my_addr sizeof(my_addr));//把 sin_zero 全部设成零值
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = my_ip;
my_addr.sin_port = my_port;

//当你使用socket()函数得到一个套接字描述符你也许需要将 socket绑定上一个你的机器上的端口。
if(bind(m_socket_id (struct sockaddr*)&my_addr sizeof(my_addr)))
{
printf(“bind failed!\n“); 
return -1;
}

/* 连接server */
struct sockaddr_in server_addr;
bzero(&server_addr sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = server_ip;
server_addr.sin_port = server_port;

while(connect(m_socket_id (struct sockaddr*)&server_addr sizeof(server_addr)) < 0)
{
usleep(100*1000); /* sleep 100ms 然后重试,保证无论server先起还是后起,都不会有问题 */
}//usleep功能把进程挂起一段时间单位是微秒; sleep()里面的单位是秒,而不是毫秒

/* 向server注册 */
char reg_msg[50] = {‘\0‘};
//若成功则返回欲写入的字符串长度,若出错则返回负值
//player向server注册自己

评论

共有 条评论