如您在“标题”框中所看到的,我想找到一种在多个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/

10-11 01:03
查看更多