資源簡介
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注冊自己
- 上一篇:公司員工信息管理系統c語言實現
- 下一篇:c++線性方程組求解源代碼 原創
評論
共有 條評論