Запускаю локальный отладчик Windows(x86).
Код C++:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <WS2tcpip.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
void main()
{
string ipAddress = "127.0.0.1"; // IP Address of the server
int port = 54000; // Listening port # on the server
// Initialize WinSock
WSAData data;
WORD ver = MAKEWORD(2, 2);
int wsResult = WSAStartup(ver, &data);
if (wsResult != 0)
{
cerr << "Can't start Winsock, Err #" << wsResult << endl;
return;
}
// Create socket
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET)
{
cerr << "Can't create socket, Err #" << WSAGetLastError() << endl;
WSACleanup();
return;
}
// Fill in a hint structure
sockaddr_in hint;
hint.sin_family = AF_INET;
hint.sin_port = htons(port);
inet_pton(AF_INET, ipAddress.c_str(), &hint.sin_addr);
// Connect to server
int connResult = connect(sock, (sockaddr*)&hint, sizeof(hint));
if (connResult == SOCKET_ERROR)
{
cerr << "Can't connect to server, Err #" << WSAGetLastError() << endl;
closesocket(sock);
WSACleanup();
return;
}
// Do-while loop to send and receive data
char buf[4096];
string userInput;
do
{
// Prompt the user for some text
cout << "> ";
getline(cin, userInput);
if (userInput.size() > 0) // Make sure the user has typed in something
{
// Send the text
int sendResult = send(sock, userInput.c_str(), userInput.size() + 1, 0);
if (sendResult != SOCKET_ERROR)
{
// Wait for response
ZeroMemory(buf, 4096);
int bytesReceived = recv(sock, buf, 4096, 0);
if (bytesReceived > 0)
{
// Echo response to console
cout << "SERVER> " << string(buf, 0, bytesReceived) << endl;
}
}
}
} while (userInput.size() > 0);
// Gracefully close down everything
closesocket(sock);
WSACleanup();
}
Сначала не запускалось приложение.
Ошибка LNK2019 ссылка на неразрешенный внешний символ _WinMain@16 в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
Ошибка LNK1120 неразрешенных внешних элементов: 1
Мне подсказали, что надо сделать настройки в проекте, т.е. сменить на подсистему на консоль.
В итоге приложение запустилось, но практически сразу и закрылось
И в отладчике:
"WindowsProject1.exe" (Win32). Загружено "C:\Users\comp\source\repos\WindowsProject1\Debug\WindowsProject1.exe". Символы загружены.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Выгружено "C:\Windows\SysWOW64\kernel32.dll"
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\ws2_32.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\sechost.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcp140d.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\rpcrt4.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\sspicli.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\vcruntime140d.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\cryptbase.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\ucrtbased.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\bcryptprimitives.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\mswsock.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel.appcore.dll". Невозможно найти или открыть PDB-файл.
"WindowsProject1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcrt.dll". Невозможно найти или открыть PDB-файл.
Поток 0xb244 завершился с кодом 0 (0x0).
Поток 0x98ec завершился с кодом 0 (0x0).
Поток 0xc6ac завершился с кодом 0 (0x0).
Программа "[41160] WindowsProject1.exe" завершилась с кодом 0 (0x0).
Вы явно пытаетесь делать оконное приложение, а не консольное.
Измените свойства проекта (Компоновщик -> Система -> Подсистема).
Update
Вангую, что вы просмотрели сообщение в окне наподобие
Can't connect to server, Err #10061
У вас на 54000 порту сервер запущен? К кому вы коннектились?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется один файл maincpp, в котором определены две глобальные функции getSomeResultFromSomeFunc(), processResult() и функция main():
При прохождении одного из онлайн тестов наткнулся на сложный вопросВопрос формулируется примерно так: