Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // CN-lab1-server.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <winsock2.h>
- #include <iostream>
- #include <windows.h>
- #include <string>
- #pragma comment(lib, "ws2_32.lib")
- using namespace std;
- DWORD WINAPI client_processing(LPVOID client_socket) {
- SOCKET my_socket;
- my_socket = ((SOCKET *)client_socket)[0];
- char recv_buff[1024];
- recv(my_socket, &recv_buff[0], sizeof(recv_buff) - 1, 0);
- string s(recv_buff), is_pal = "1";
- for (int i = 0, l = s.length(); i <= l / 2; i++) {
- if (s[i] != s[l - 1 - i]) {
- is_pal[0] = '0';
- break;
- }
- }
- char *send_buff = &is_pal[0];
- send(my_socket, send_buff, sizeof(is_pal) - 1, 0);
- cout << "Connection closed" << endl;
- closesocket(my_socket);
- return 0;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- WSAData wsadata;
- WSAStartup(0x0202, &wsadata);
- SOCKET my_socket;
- my_socket = socket(AF_INET, SOCK_STREAM, 0);
- sockaddr_in local_addr;
- local_addr.sin_family = AF_INET;
- local_addr.sin_addr.S_un.S_addr = 0;
- local_addr.sin_port = htons(5000);
- if (bind(my_socket, (sockaddr *)&local_addr, sizeof(local_addr))) {
- cout << "Error bind " << WSAGetLastError() << endl;
- closesocket(my_socket);
- WSACleanup();
- return 1;
- }
- cout << "Port 5000 binded" << endl;
- if (listen(my_socket, 16))
- {
- cout << "Error listen " << WSAGetLastError() << endl;
- closesocket(my_socket);
- WSACleanup();
- return 1;
- }
- cout << "Listening port 5000" << endl;
- SOCKET client_socket;
- sockaddr_in client_addr;
- int size = sizeof(client_addr);
- while (client_socket = accept(my_socket, (sockaddr *) &client_addr, &size)) {
- cout << "Client request accepted" << endl;
- DWORD threadID;
- CreateThread(NULL, NULL, client_processing, &client_socket, NULL, &threadID);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment