资源简介
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++线性方程组求解源代码 原创
相关资源
- Demo: c/c++动态库DLL调用,c#等其他语言
- 模拟一个飞机票订票和退票系统
- C++Primer第五版---高清版.zip
- 维吉尼亚密码的简单实现
- 从放弃C语言到使用C刷算法的简明教程
- vc6.0上位机教程.docx
- VisualC++范例大全源代码+PDF_百度云盘地
- C++游戏服务器开发从入门到掌握.txt
- C++2017.txt
- 02_C++PrimerPlus_中文版_第6版_超清.txt
- c语言学习例题.docx
- 源.cpp
- Steffensen.cpp
- vc++著名的木马程序BO2000源代码.rar
- 语音信号端点检测(VC++6.0)
- zw_duanzhiying-1870490-C语言库函数.zip
- zw_RSA算法C语言实现.zip
- zw_MFCCombox自动提示.zip
- 视觉识别特定草莓等其他水果
- welch功率谱的c语言程序.txt
- 蓝桥杯青少组C++赛前集训包.pdf
- L.CPP
- c++primer_第五版_中文版(完整).rar
- test_opencv.cpp
- CC语言程序设计课后答案.doc
- C语言程序设计KANDR版.pdf
- dft.cpp
- cc++项目视频.txt
- sanke.cpp
- iar.cc++.compiler.v1.30.3.50673.for.rl78-patch
评论
共有 条评论