【问题标题】:error C1083 visual studio 2013 for winsock serverWinsock 服务器的错误 C1083 Visual Studio 2013
【发布时间】:2014-03-26 12:55:52
【问题描述】:

我是这个网站的新手。

我搜索了很多解决方案,但一无所获。

我在另一个项目上编写了服务器和客户端,它正在工作,但我想重新编写它以获得更好的结果。

但我不知道为什么我有一些错误:错误 C1083:无法打开:'Debug\chatserver.pch':没有这样的文件或目录 c:\users\x\documents\visual studio 2013\projects\chatserver\chatserver \chatserver.cpp

在此错误之前,我在“itoa”功能上遇到了另一个错误:C4996 'itoa' POSIX ... (itoa 函数正在我的第一个服务器项目上工作)

我在 LNK 2011 到 .obj 时也有错误

这是代码:

#include "stdafx.h"

#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <cstdlib>


#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#pragma comment(lib, "Ws2_32.lib")


#define DEFAULT_PORT "27015"

using namespace std;

SOCKET ListenSocket = INVALID_SOCKET;
SOCKET ClientSocket;
SOCKET* Connessioni;

int nConn = 0;


struct Buffer
{
    int ID;
    char nickname[20];
    char messaggio[1024];
};


int ServerThread(int ID)
{
    Buffer buff;

    char* Recv = new char[1024];
    char* Pnick = new char[20];
    char* Send = new char[1024];
    Recv = NULL;
    Pnick = NULL;
    Send = NULL;

    for (;;){
        if (recv(Connessioni[ID], Recv, 1024, NULL) && recv(Connessioni[ID], Pnick, 20, NULL))
            buff.ID = ID;
        memcpy(buff.nickname, Pnick, 1024);
        memcpy(buff.messaggio, Recv, 1024);
        memcpy(Send, &buff, sizeof(Buffer));

        for (int i = 0; i != nConn; i++)
        {
            if (Connessioni[i] == Connessioni[ID])
            {
            }
            else{
                send(Connessioni[i], Send, sizeof(Buffer), NULL);
            }
        }
        delete Recv;
        delete Send;
        delete Pnick;
        delete &Recv;
        delete &Send;
        delete &Pnick;
    }

    return 0;
}

int InitWinSock()
{
    int RetVal = 0;
    WSAData wsaData;
    WORD DllVersion = MAKEWORD(2, 2);
    RetVal = WSAStartup(DllVersion, &wsaData);
    if (RetVal != 0)
        MessageBoxA(NULL, "WSA error, please retry", "Error", MB_OK | MB_ICONERROR);
    return RetVal;
}

int main()
{

    struct addrinfo *result = NULL, *ptr = NULL, hints;

    ZeroMemory(&hints, sizeof (hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;

    int controllo_struct = getaddrinfo(NULL,DEFAULT_PORT, &hints, &result);
    if (controllo_struct != 0)
    {
        MessageBoxA(NULL, "getinfo failes \n", "Error", MB_OK | MB_ICONERROR);
        WSACleanup();
        return 1;
    }

    ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
    if (ListenSocket == INVALID_SOCKET)
    {
        MessageBoxA(NULL, "Error at Socket, please retry \n", "Error", MB_OK | MB_ICONERROR);
        freeaddrinfo(result);
            WSACleanup();
    }

    int controllo_bind = bind(ListenSocket,result->ai_addr,(int)result->ai_addrlen);
    if (controllo_bind == SOCKET_ERROR)
    {
        MessageBoxA(NULL, "bind ha fallito \n", "Error", MB_OK | MB_ICONERROR);
        cout << WSAGetLastError() << endl;
        freeaddrinfo(result);
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }

    freeaddrinfo(result);

    if (listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR){
        MessageBoxA(NULL, "Listen ha fallito \n", "Error", MB_OK | MB_ICONERROR);
        cout << WSAGetLastError() << endl;
        closesocket(ListenSocket);
        return 1;
    }

    ClientSocket = INVALID_SOCKET;

    int addrlen = sizeof(hints);

    for (;;){
        if (ClientSocket = accept(ListenSocket, (SOCKADDR*)&hints, &addrlen))
            Connessioni = (SOCKET*)calloc(SOMAXCONN, sizeof(hints));
        cout << "connessione accettata " << endl;
            Connessioni[nConn] = ClientSocket;
            char* nickname = new char[20];
            ZeroMemory(nickname, sizeof(nickname));
            //itoa(nConn,nickname,10);
            //nickname = (char*)nConn;
            send(Connessioni[nConn], nickname, sizeof(nickname), NULL);
            ++nConn;
            CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ServerThread, (LPVOID)(nConn - 1), NULL, NULL);
            delete nickname;
    }
    return 0;
}

【问题讨论】:

  • c:\users\x\documents\visual studio 2013\projects\chatserver\chatserver\chatserver.cpp 是否存在?如果是,是您当前登录的用户吗?
  • 是的,它存在!我想....我有聊天服务器文件(VC++)

标签: visual-studio-2013


【解决方案1】:

已解决:

已禁用:“预编译标头”

在c/c++上->所有选项->>“预编译头文件(选择:否)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多