c++ - 字符串 'G' 未显示

标签 c++

这是 client.cpp 文件。所以有什么问题?我声明这个字符串 'G',我输入昵称然后在这里 ' cout << G << ":"<< sbuffer.Message <

P.S.:我认为我不需要发布 server.cpp 文件,对吗?

    #pragma comment(lib, "Ws2_32.lib")

#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;


SOCKADDR_IN addr;

SOCKET sConnect;

string G;

struct Buffer
{
    int ID;
    char Message[256];
};

int ClientThread()

{ 缓冲区sbuffer;

char buffer[sizeof(sbuffer)] = {0};

for(;; Sleep(10))
{
    if(recv(sConnect, buffer, sizeof(sbuffer), NULL))
    {
        memcpy(&sbuffer, buffer, sizeof(sbuffer));
        cout << G << ":" << sbuffer.Message <<endl;
    }
}

return 0;

int main()

{ 系统(“cls”);

int RetVal = 0;

WSAData wsaData;
WORD DllVersion = MAKEWORD(2,1);
RetVal = WSAStartup(DllVersion, &wsaData);
if(RetVal != 0)
{
    MessageBoxA(NULL, "Winsock startup failed", "Error", MB_OK | MB_ICONERROR);
    exit(1);
}

sConnect = socket(AF_INET, SOCK_STREAM, NULL);

addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port        = htons(1234);
addr.sin_family      = AF_INET;

cout << "Connect to Masterserver? [ENTER]" <<endl;
getchar();
RetVal = connect(sConnect, (SOCKADDR*)&addr, sizeof(addr));

if(RetVal != 0)
{
    MessageBoxA(NULL, "Could not connect to server", "Error", MB_OK | MB_ICONERROR);
    main();
}
else
{
    string G;
    cout << "Nickname: " << endl;
    cin >> G;

    CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) ClientThread, NULL, NULL, NULL);

    for(;; Sleep(10))
    {
        char* buffer = new char[256];
        ZeroMemory(buffer, 256);

        cin >> buffer;
        getchar();

        send(sConnect, buffer, 256, NULL);
    }
}

return 0;

最佳答案

您在顶部全局范围内声明的 string G 被您在 main 范围内声明的 string G 覆盖因此,您读入的内容对 ClientThread 方法不可用。删除主范围内的声明。

关于c++ - 字符串 'G' 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20029785/

相关文章:

c++ - 打印: Displaying an SHA1 hash in hexadecimal

c++ - Clang 3.8 C++ - 使用 LibTooling 读取目录中的所有源文件

c++ - SSE 内在函数 - 比较 if/else 优化

python - 是否有可能为绑定(bind)到 python 的 C++ 库获取绝地自动完成功能?

c++ - 在模板中实例化模板对象

c++ - 程序接收信号 SIGSEGV,段错误

c++ - pthread返回值错误

c++ - 从控制台灵气解析多行

c# - dll 将 c++ 方法导入到 c#。从 C# 调用时,程序在没有任何错误消息的情况下关闭

c++ - QDialog 或 QMessageBox 在添加到现有应用程序时显示 Qt::BusyCursor