Untitled
unknown
plain_text
20 days ago
2.0 kB
4
Indexable
#include <winsock2.h> #include <iostream> #pragma comment(lib, "ws2_32.lib") // Không ảnh hưởng đến MinGW nhưng không cần thiết int main() { WSADATA wsaData; SOCKET ListeningSocket, NewConnection; SOCKADDR_IN ServerAddr, ClientAddr; int ClientAddrLen = sizeof(ClientAddr); int Port = 5150; // Khởi tạo Winsock if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { std::cerr << "WSAStartup failed!\n"; return 1; } // Tạo socket ListeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ListeningSocket == INVALID_SOCKET) { std::cerr << "Socket creation failed!\n"; WSACleanup(); return 1; } // Thiết lập thông tin địa chỉ ServerAddr.sin_family = AF_INET; ServerAddr.sin_port = htons(Port); ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY); // Gắn socket với địa chỉ và cổng if (bind(ListeningSocket, (SOCKADDR*)&ServerAddr, sizeof(ServerAddr)) == SOCKET_ERROR) { std::cerr << "Bind failed!\n"; closesocket(ListeningSocket); WSACleanup(); return 1; } // Lắng nghe kết nối (cần thiết trước khi accept) if (listen(ListeningSocket, SOMAXCONN) == SOCKET_ERROR) { std::cerr << "Listen failed!\n"; closesocket(ListeningSocket); WSACleanup(); return 1; } std::cout << "Waiting for connections...\n"; // Chấp nhận kết nối từ client NewConnection = accept(ListeningSocket, (SOCKADDR*)&ClientAddr, &ClientAddrLen); if (NewConnection == INVALID_SOCKET) { std::cerr << "Accept failed!\n"; closesocket(ListeningSocket); WSACleanup(); return 1; } std::cout << "Client connected!\n"; // Đóng kết nối closesocket(NewConnection); closesocket(ListeningSocket); WSACleanup(); return 0; }
Editor is loading...
Leave a Comment