草庐IT

接受端

全部标签

c++ - 如何在接受C++中的连接之前获取客户端IP地址

我正在学习C++套接字编程...服务器程序绑定(bind)到套接字并开始监听连接请求...现在我如何列出监听请求的IP地址?我知道我可以在接受连接后获取IP地址,但可以说我不想接受来自特定IP地址的连接... 最佳答案 仅在Windows上,您可以使用WinSock2的WSAAccept()的条件回调功能函数在接受连接之前访问客户端信息,甚至在接受连接之前拒绝连接。 关于c++-如何在接受C++中的连接之前获取客户端IP地址,我们在StackOverflow上找到一个类似的问题:

c++ - LibCurl CURLOPT_URL 不接受字符串? C++

所以基本上我想做的是使用libcurl来获取略有不同的url,例如:http://foo.com/foo.asp?name=*NAMEHERE*我想做的是遍历一个名称vector并获取每个名称,例如:http://foo.com/foo.asp?name=James然后http://foo.com/foo.asp?name=Andrew等等。但是,当我尝试这样做时:intfoo(){CURL*curl;CURLcodesuccess;charerrbuf[CURL_ERROR_SIZE];intm_timeout=15;if((curl=curl_easy_init())==NULL)

c++ - 拥有一个函数只接受非常量左值

我有一个函数可以对两个vector进行排序,其中第一个vector作为排序标准。它的签名是templatevoidsort(A&&X,B&&Y){..}问题是通用引用会允许无意义的情况,比如sort(vector{2,1,3},vector{3,1,2});之后右值将被销毁的地方(废话)。明确要求一个左值是行不通的templatevoidsort(A&X,B&Y)...//(*)sort(vector{2,1,3},vector{3,1,2});出于某种原因,上面的编译(我认为只允许const左值绑定(bind)到右值并延长它们的生命周期?)。如果我将const添加到左值引用,那么函数

c++ - 为什么 std::function 不能接受推导类型作为其模板参数?

#includeusingnamespacestd;templatevoidf1(CharType*str,functionfn_filter){}templatevoidf2(CharType*str,functionfn_filter){}voidf3(char*str,charc){autofn_filter=[=](chare)->bool{returne==c;};f1(str,fn_filter);//errorC2784f2(str,fn_filter);//OK}intmain(){f3("ok",'k');}//errorC2784:'voidf1(CharType*

c++ - 总是使用指针而不是引用是否可以接受,以便在需要时轻松转换为智能指针?

我知道引用优于指针,但更改所有这些“.”非常乏味。需要时“->”。那么总是使用指针而不是引用是一种可以接受的做法,以便在需要时轻松地将它们转换为智能指针吗?或者有什么方法可以快速更改对指针的引用? 最佳答案 Soisitanacceptablepracticetoalwaysusepointersinsteadofreferences,tobeeasilyconvertthemtosmartpointersifneeded没有。一般来说,always规则总是不好的。(包括这个)。为什么要将引用转换为智能指针?如果它是引用,则无需担心

c++ - error C2678 : binary '<' : no operator found which takes a left-hand operand. ..(或者没有可接受的转换)

这个问题在这里已经有了答案:HowcanIusestd::mapswithuser-definedtypesaskey?(8个答案)关闭5年前。这是我在map中查找值的代码:boolmyclass::getFreqFromCache(plVariablesConjunction&varABC,vector&freq){std::map>::iteratorfreqItr;freqItr=freqCache.find(varABC);if(freqItr!=freqCache.end()){freq=freqItr->second;returntrue;}}“PlVariablesCon

c++ - Fortran 从 C 接受字符串(?)

我觉得这应该是一个简单的问题,但我做不到。我有一些Fortran代码接受如下输入:SUBROUTINETRACE(X,Y,NAME,XX,YY)EXTERNALNAMECALLNAME(X,Y,XX,YY)我正在尝试以以下形式从C++传递一个名称:floatx,y,xx,yy;char*name="IGRF";trace_(&x,&y,name,&xx,&yy);它可以编译,但是当我尝试调用NAME子例程时,我总是遇到段错误。文件中定义了一个名为IGRF的子例程,我可以直接从C++调用IGRF子例程,但需要这个TRACE例程。在gdb中运行时,它表示NAME变量作为指向void的指针出

c++ - 对于 C++ 中的某些事物,静态函数是否可以接受?

有时,对于某些事情,比如向控制台写入一行,感觉应该是所有对象都可以全局访问的东西。像这样的东西:writeError("UNHANDLEDEXCEPTION",someData);数学函数之类的东西也有这种感觉。但是,当做这种事情变成不好的做法时,您如何划清界限? 最佳答案 有些人在非成员函数需要成为其参数之一的友元这一点上划清界线,因此他们使用了很多自由函数。有些人在非成员函数可以合理地成为其参数之一的成员函数这一点上划清界线,即使它实际上并不使用类内部结构。它们的免费功能要少一些。通常最好不要将此视为“成为不好的做法”——并非所

c++ - 为什么 operator[] 只接受一个参数?

这个问题在这里已经有了答案:C++[]arrayoperatorwithmultiplearguments?(6个答案)关闭8年前。有很多与operator[]相关的问题只接受一个参数,但我找不到一个真正说明原因的问题。例如,让matrix[0,3]调用ElementT&operator[](SizeTx,SizeTy)似乎是一种非常自然的语言扩展功能。是否有任何特殊原因(例如不兼容)导致这种语法不在语言中,或者除了缺乏动机之外还有什么其他原因实际上阻止了它被添加?(注意:这已被标记为重复,但事实并非如此。这个问题是“为什么语言中没有这种语法?”而不是“我该如何解决这个问题?”。如前所

c++ - 如何实现构造函数,使其只接受使用 typeid 的输入迭代器?

我想为某个对象实现一个范围构造函数,但我想限制它只接受两个输入迭代器。我尝试用gcc7.1.0编译这段代码。文件test.cpp#include#include#includetemplateusingtraits=typenamestd::iterator_traits::iterator_category;templateclassA{private:std::vectorv;public:template)==typeid(std::input_iterator_tag)>>A(InputIteratorfirst,InputIteratorlast):v(first,last)