Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在多个*.cpp文件中使用套接字_C++_Sockets_Server - Fatal编程技术网

C++ 在多个*.cpp文件中使用套接字

C++ 在多个*.cpp文件中使用套接字,c++,sockets,server,C++,Sockets,Server,正如您在标题框中看到的,我想找到一种在多个cpp文件中使用套接字的方法 #pragma注释(lib,“ws2_32.lib”) void main() { WSADATA WSADATA; WSAStartup(MAKEWORD(2,0)和wsaData); socketslisten,客户端; slisten=socket(AF\u INET,SOCK\u STREAM,0); //等等。。。 } 这是我使用ws2_32.lib的方式,但只是在main中。 我想在其他文件中使用socketc

正如您在标题框中看到的,我想找到一种在多个cpp文件中使用套接字的方法

#pragma注释(lib,“ws2_32.lib”)
void main()
{
WSADATA WSADATA;
WSAStartup(MAKEWORD(2,0)和wsaData);
socketslisten,客户端;
slisten=socket(AF\u INET,SOCK\u STREAM,0);
//等等。。。
}
这是我使用ws2_32.lib的方式,但只是在main中。 我想在其他文件中使用socket
client
,因此我能够 将数据发送到我想要的任何地方。套接字声明为全局变量。 如果有人能给我一个建议,我会很高兴的

提前谢谢

use“”关键字-它告诉链接器,该关键字已在该范围的其他地方定义,应为linkedin

主文件-

SOCKET slisten,client;
其他文件:

extern SOCKET slisten,client;

使用“”关键字-它告诉链接器该关键字已经在该范围的其他地方定义,并且应该是linkedin

主文件-

SOCKET slisten,client;
其他文件:

extern SOCKET slisten,client;

这个问题似乎不是针对套接字的,而是针对全局变量的。 如果需要创建必须由多个编译单元访问的全局变量(本例中为套接字):

  • 在单个编译单元(即一个cpp文件)中定义全局变量
  • 您可以在需要使用它的所有其他编译单元中使用
    extern
    语句声明变量
一些进一步资料:

  • 如果程序是多线程的,则需要通过
    std::mutex
  • 全局变量在不同编译单元之间的序列化顺序具有未定义的行为。这被称为。您可以通过使用单例或某种工厂设计模式来施加特定的顺序

这个问题似乎不是针对套接字的,而是针对全局变量的。 如果需要创建必须由多个编译单元访问的全局变量(本例中为套接字):

  • 在单个编译单元(即一个cpp文件)中定义全局变量
  • 您可以在需要使用它的所有其他编译单元中使用
    extern
    语句声明变量
一些进一步资料:

  • 如果程序是多线程的,则需要通过
    std::mutex
  • 全局变量在不同编译单元之间的序列化顺序具有未定义的行为。这被称为。您可以通过使用单例或某种工厂设计模式来施加特定的顺序

Ew,视频是解释任何与编程相关内容的最糟糕格式。否则答案很好。@Zharf weill还有一个链接,如果不是的话,谷歌也是你的朋友:)如果你喜欢这个答案,为什么不投票:)呃,视频是解释任何与编程相关的东西最糟糕的格式。否则答案很好。@Zharf weill还有一个链接,如果不是,谷歌也是你的朋友:)如果你喜欢这个答案,为什么不投票:)输入main.cpp
SOCKET slisten,client和通信中。*
外部套接字slisten,客户端
。不过,我强烈建议你在读之前先读一本好的C或C++书籍。您似乎缺少关于声明/定义和编译单元的全部背景知识。你可能会有麻烦。。。您可以阅读“C编程语言”(由Knniga&里奇)或“C++编程语言”第四版(由Stroustrup)。代码>和通信中。*
外部套接字slisten,客户端
。不过,我强烈建议你在读之前先读一本好的C或C++书籍。您似乎缺少关于声明/定义和编译单元的全部背景知识。你可能会有麻烦。。。您可以阅读“C编程语言”(由Knniga&里奇)或“C++编程语言”第四版(由Stroustrup)。