//#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
using namespace std;
//#pragma pack(8)
int main() {
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
cout << "wsastart faild<ulong
//inet_ntoa(in_addr in)->char
//htons short
//htonl long
//ntohs short
//
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
errCode = bind(Listen, (SOCKADDR*)&addr, addr_len);
if (errCode == SOCKET_ERROR) {
cout << "bind failed" << endl;
closesocket(Listen);
return 1;
}
if (listen(Listen, 5) == SOCKET_ERROR) {
cout << "listen error" << endl;
exit(2);
}
SOCKET sock[64];
fd_set rd_set;
struct timeval st;
st.tv_sec = 3;
st.tv_usec = 0;
//fd_set wr_set;
int cnt = 0;
FD_ZERO(&rd_set);
//FD_ZERO(&wr_set);
//FD_SET(Listen, &rd_set);
while (true) {
FD_ZERO(&rd_set);
FD_SET(Listen, &rd_set);
for (int i = 0; i < cnt; i++) {
FD_SET(sock[i], &rd_set);
//FD_SET(sock[i], &wr_set);
}
int nRes = select(0, &rd_set, NULL, NULL, NULL);
SOCKET_ERROR;
if (0 == nRes) {
continue;
}
else {
if (FD_ISSET(Listen, &rd_set)) {
cout << "accept" << endl;
sock[cnt]=accept(Listen, NULL, NULL);
cnt++;
}
for (int i = 0; i < cnt; i++) {
if (FD_ISSET(sock[i], &rd_set)) {
char szRecvBuffer[1500] = { 0 };
int result = recv(sock[i], szRecvBuffer, 1500, MSG_PEEK);
if (result > 0) {
cout << szRecvBuffer << endl;
}
}
}
}
}
}