Linux下编写简易取号机系统,linux socket编程问题,下面是我做的一个简单的模拟银行排队叫号系统。...

程序运行:开启多个终端,一个服务器,其余的是客户端(包括一个取号机和多个柜台叫号机)

问题:我把服务器和多个客户端程序可以正常运行,但当我按 ctr+c 键杀掉一个客户端后,服务器端的程序也会死掉,

请问怎样才能使 杀死客户端程序 而不使服务器端程序死掉?  要怎样修改程序,请高手指教。

下面是我的源程序:

服务器 server.c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

/* 定义端口号,须大于1024 */

#define PORT 8888

//#define BUF_SIZE 1024

/* 信息宏 */

#define GEN_GOTAL 1  /* 普通业务总人数 */

#define GEN_CUR   2  /* 普通业务当前服务的号码 */

#define VIP_TOTAL 3  /* vip业务总人数 */

#define VIP_CUR   4  /* vip业务当前服务的号码 */

#define FROM_GET_NUM   5 /* 为取号机创建线程 */

#define FROM_CALL_NUM  6 /* 为叫号机创建线程 */

/* 存储服务人数信息结构定义 */

typedef struct

{

int gen_total_num;  /* 普通业务总人数 */

int gen_cur_num; /* 普通业务当前服务的号码 */

int vip_total_num; /* vip业务总人数 */

int vip_cur_num; /* vip业务当前服务的号码 */

}info_bank;

info_bank info_people;

/* 线程执行函数负责读写 */

void *server_client( void *arg );

/* 初始化服务信息 */

void init_info(info_bank *info_people);

void save_info_getnum(info_bank *info_people, int operation); /*保存取号机发来的信息*/

void save_info_call(info_bank *info_people, int operation); /*保存叫号机发来的信息*/

int main(int argc, char *argv[])

{

socklen_t clt_addr_len;

int listen_fd;

int com_fd;

int ret;

int i;

static char recv_buf;

int len;

pthread_t tid;

struct sockaddr_in clt_addr;

struct sockaddr_in srv_addr;

init_info(&info_people);

/* 创建套接字用于服务器的监听 */

listen_fd = socket(PF_INET, SOCK_STREAM, 0);

if (listen_fd

您可能感兴趣的文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值