client.cpp

来自「一个Linux下的五子棋对战游戏」· C++ 代码 · 共 110 行

CPP
110
字号
#include "client.h"client::client():status(F_NEW){	bzero(name, sizeof(name));	bzero(recvhead, sizeof(recvhead));	flagStatus = 0x10;}client::~client(){}int client::send(char* buff, int outbytes){	int n = write(clifd, buff, outbytes);	if(n == -1)	{		if(errno == EWOULDBLOCK)		{			return -1;		}		else if(errno == EINTR)		{			return -2;		}		else		{			perror("sendmsg");			return -3;		}	}	return n;}int client::recv(char* buff, int inbytes){	int n;	n = read(clifd, buff, inbytes);	if(n == -1)	{		if(errno == EWOULDBLOCK)		{			return -1;		}		if(errno == EINTR)		{			return -2;		}		else		{			perror("recvmsg");			return -3;		}	}	if(n == 0)	{		status = F_LEAVE;		return 0;	}	buff[n] = '\0';	return n;}int client::getname(){	int n;	status = F_ESTABLISHED;	n = read(clifd, name, sizeof(name));	if(n == -1)	{		if(errno == EWOULDBLOCK)		{			return -1;		}		else if(errno == EINTR)		{			return -2;		}		else		{			perror("recv name");			return -3;		}	}	name[n] = '\0';	char buff[MAX_LEN];	snprintf(buff, MAX_LEN, "Client %s enter the serve\n", name);	cout << buff;	strncpy(recvhead, name, sizeof(recvhead));	strncat(recvhead, " said:", sizeof(recvhead) - 1);	return n;}void client::nonblock(){	int flags;	if((flags = fcntl(clifd, F_GETFL, 0)) < 0)	{		perror("fcntl listenfd");		exit(1);	}	if(fcntl(clifd, F_SETFL, flags | O_NONBLOCK) < 0)	{		perror("fcntl listenfd");		exit(1);	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?