#include
INT32 del_Element( LNode *pHead, SOCKET sClient ) { INT32 FuncFlag = 0; LNode *p = NULL; LNode *q =NULL; INT32 i32I = 0; if ((NULL == pHead ) || (sClient == NULL)) { FuncFlag = -1; } else { p = pHead->pNext; q = pHead; while (p != NULL) { if ((p->sClient != sClient)) { q = q->pNext; p = p->pNext; } else { q->pNext = p->pNext; free(p); break; } } FuncFlag = 1; } return FuncFlag; }
客户端
#include
#pragma comment(lib,\#define IP_ADDRESS \#define M_MAX 1000 #define T_MAX 100 #define EXIT -2
DWORD WINAPI tThread(LPVOID lpParameter) { SOCKET sock = (SOCKET)lpParameter; int ret = 0; char Date_Buffer[M_MAX]; while (1) { ret = recv(sock, Date_Buffer, M_MAX, 0); printf(\接收到消息 \\n\\t\\t\\t\\t \ if(!strcmp(Date_Buffer,\ { ret = -1; } if(ret > 0) { Date_Buffer[ret] = 0x00; printf(\ printf(\ } else { printf(\一个客户端已经断开连接!\\n\ break; } } return 0; }
int main(int argc, char* argv[]) { SOCKET sclient;
struct sockaddr_in serAddr; char sendData[M_MAX] = \ char recData[M_MAX] = \ int ret, i = 1; HANDLE Recv_Thread; /* 初始化WSA */ WSADATA data; WORD sockVersion = MAKEWORD(2,2); if(WSAStartup(sockVersion, &data) != 0) { return 0; } //创建套接字 sclient = socket(AF_INET, SOCK_STREAM, 0); if(sclient == INVALID_SOCKET) { printf(\ return 0; } /* 绑定IP和端口 */ serAddr.sin_family = AF_INET; serAddr.sin_port = htons(8888); serAddr.sin_addr.S_un.S_addr = inet_addr(IP_ADDRESS); /* 连接服务器 */ if (connect(sclient, (struct sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR) { printf(\ return 0; } else { printf(\已经与服务器连接!\\n\\n\ } Recv_Thread = CreateThread(NULL, 0, tThread, (LPVOID)sclient, 0, NULL); if (Recv_Thread == NULL) { printf(\
}
return 0; }
while (1) {
/* 发送消息 */
printf(\发送消息\\n\ gets(sendData);
send(sclient, sendData, strlen(sendData), 0); if (!strcmp(sendData, \ { ret = EXIT; closesocket(sclient); return 0; } }
WaitForSingleObject(Recv_Thread, INFINITE); CloseHandle(Recv_Thread);
closesocket(sclient); WSACleanup(); return 0;
相关推荐: