如您在“标题”框中所看到的,我想找到一种在多个cpp文件中使用套接字的方法。
#pragma comment(lib,"ws2_32.lib")
void main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,0), &wsaData);
SOCKET slisten,client;
slisten = socket(AF_INET,SOCK_STREAM, 0);
//and so on...
}
这是我使用
ws2_32.lib
的方式,但主要是这样。我想在其他文件中使用套接字
client
,所以我能够随时随地发送数据。套接字被声明为全局变量。
如果有人可以给我建议,我会很好。
提前致谢。
最佳答案
这个问题似乎不是特定于套接字的,而是一般而言是全局变量的。
如果您需要创建一个全局变量(在这种情况下是一个套接字),必须由多个编译单元访问:
您可以在一个编译单元(即一个cpp文件)中定义全局变量
您可以在需要使用该变量的所有其他编译单元中使用extern
语句声明该变量。
一些进一步的信息:
如果您的程序是多线程的,则需要通过std::mutex
防止全局变量被并发使用。
跨不同编译单元的全局变量初始化的顺序具有未定义的行为。这称为static initialization order fiasco。您可以通过以下方式强加特定命令: SIngleton或某种Factory设计模式。
关于c++ - 在多个* .cpp文件中使用套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30996392/