MFC基于select模型的套接字类之服务器(7)

2.3.6 创建接收客户端数据的线程

CTCPSocket_Server类添加访问权限为private的成员函数Newconnect(),在该函数中调用CreateThread()函数创建接收客户端数据的线程。

int index = m_client_currentindex;
m_recvdata_threadhandle_array[index] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&CTCPSocket_Server::ThreadFunc_RecvData, this, 0, NULL);
首先将客户端在“套接字池”中的索引号保存在临时变量 index 中,接下来调用 CreateThread() 函数创建接收客户端数据的线程,该线程的函数为“ 2.3.5 创建接收数据线程函数”中提到的线程函数 ThreadFunc_RecvData() m_recvdata_threadhandle_array CTCPSocket_Server 类的成员变量,其类型是 HANDLE 的数据,用来保存接收客户端数据线程的句柄,其声明代码为

HANDLE m_recvdata_threadhandle_array[MAX_CONNECTION];

3 向客户端发送数据

CTCPSocket_Server类添加访问权限为public的成员函数SendToClient()

3.1 声明函数

SendToClient()的格式为

bool SendToClient(int index, char* info, int length)
其中,参数index 表示“套接字池”中套接字的索引,通过该套接字向客户端发送数据; info 表示向客户端发送的信息; length 表示发送信息的长度。

3.2 定义函数

通过send()函数向客户端发送数据。该函数的格式为

int send(SOCKET s, const char* buf, int len, int flags);
其中,参数s 表示指定的套接字,通过该套接字向客户端发送数据; buf 表示发送的数据; len 表示发送数据的长度; flags 影响 send() 函数的行为,该参数设置为 0 表示函数无特殊行为。如果成功发送数据,则 send() 函数的返回值是实际发送数据的大小,否则返回值是 SOCKET_ERROR

SendToClient()中,调用send()函数发送数据

int infolength_sendtoclient = send(m_clientsocket_array[index], info, length, 0);
其中,m_clientsocket_array 是“ 2.3.3 定义线程函数”中提到的套接字数组, index SendToClient() 函数的参数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值