18,356
社区成员
发帖
与我相关
我的任务
分享
DWORD WINAPI WriteThread(LPVOID lpParameter)
{
/*可写性检查*/
char sendBuffer[100]="hello world\n";
while(1)
{
WaitForSingleObject(hMutex,INFINITE);
FD_ZERO(&sfwrite);
for(int p=0;p<iTotalClient;p++)
{
FD_SET(ClientArr[p],&sfread);
}
int iWriter=select(0,NULL,&sfwrite,NULL,&tv);
printf("此时总共有%d个客户连接,有%d个客户可写!\n",iTotalClient,iWriter);
if(iWriter==0)
{
printf("此时没有数据可写!\n");
ReleaseMutex(hMutex);
Sleep(5000);
continue;
}
for(int t=0;t<iTotalClient;t++)
{
if(FD_ISSET(ClientArr[t],&sfwrite))
{
int nSend=send(ClientArr[t],sendBuffer,strlen(sendBuffer),0);
if(nSend==SOCKET_ERROR)
printf("Client Socket %d 发送失败!",ClientArr[t]);
printf("Client Socket %d 发送成功!",ClientArr[t]);
}
}
Sleep(5000);
ReleaseMutex(hMutex);
}
return 0;
}
#pragma comment(lib, "Ws2_32.lib")
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;//服务端信息
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_port=htons(6000);
addrSrv.sin_family=AF_INET;
connect(sockClient,(sockaddr*)&addrSrv,sizeof(sockaddr));
char recvBuffer[100];
recv(sockClient,recvBuffer,100,0);
printf("%s",recvBuffer);
getchar();
closesocket(sockClient);
WSACleanup();
}