C++ 在多个*.cpp文件中使用套接字
正如您在标题框中看到的,我想找到一种在多个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
#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中。
我想在其他文件中使用socketclient
,因此我能够
将数据发送到我想要的任何地方。套接字声明为全局变量。
如果有人能给我一个建议,我会很高兴的
提前谢谢 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
- 全局变量在不同编译单元之间的序列化顺序具有未定义的行为。这被称为。您可以通过使用单例或某种工厂设计模式来施加特定的顺序
SOCKET slisten,client代码>和通信中。*外部套接字slisten,客户端
。不过,我强烈建议你在读之前先读一本好的C或C++书籍。您似乎缺少关于声明/定义和编译单元的全部背景知识。你可能会有麻烦。。。您可以阅读“C编程语言”(由Knniga&里奇)或“C++编程语言”第四版(由Stroustrup)。代码>和通信中。*外部套接字slisten,客户端
。不过,我强烈建议你在读之前先读一本好的C或C++书籍。您似乎缺少关于声明/定义和编译单元的全部背景知识。你可能会有麻烦。。。您可以阅读“C编程语言”(由Knniga&里奇)或“C++编程语言”第四版(由Stroustrup)。