#include<winsock2.h>
#include<ws2tcpip.h>
#include<stdio.h>
#pragma comment(lib, "ws2_32.lib")
/*常量*/
#define DEFAULT_PORT "1000" //端口
#define MAX_REQUEST 1024 //接收数据的缓存
#define BUF_SIZE 4096 //发送数据缓存
/************************
* CommuncationThread
* 功能:用于接收和发送数据的线程
* 为每个连接客户端创建一个数据发送的线程
* 可以使用多个客户端同时连接到服务端
* 参数:lpParameter、SOCKET
*************************/
DWORD WINAPI CommunicationThread(
LPVOID lpParameter
)
{
DWORD dwTid = GetCurrentThreadId();
//获得参数
SOCKET socket = (SOCKET) lpParameter;
//接收数据分配空间
LPSTR szRequest = (char *)HeapAlloc(
GetProcessHeap(),
0 ,
MAX_REQUEST);
int iResult;
int bytesSent; //用于保存send的返回值,即实际发送的数据的大小
//接收数据
iResult = recv(socket,//socket
szRequest, //接收缓存
MAX_REQUEST, //缓存大小
0); //无标志
if(iResult == 0) //接收数据失败,连接关闭
{
printf("Connection closing....\n");
HeapFree(GetProcessHeap(), 0 , szRequest);
closesocket(socket);
return 1;
}
else if(iResult == SOCKET_ERROR) //接收数据失败,Socket错误
{
printf("recv faild:%d\n",WSAGetLastError());
HeapFree(GetProcessHeap(), 0 , szRequest);
closesocket(socket);
return 1;
}
else if(iResult > 0) //接收数据成功
{
//显示接收到的数据
printf("