草庐IT

c++ - 我可以在已经由 main 创建的 pthread 中创建一个 pthread 吗?

如果我在主函数创建的pthread中创建pthread_create会出错吗?如果,我可以,那我该管什么???重要......:我正在做一个套接字编程,我在不同的端口上打开了5个线程,每个线程都在监听端口,每当我收到一条消息时,我想创建一个线程来接收消息和使用pwrite写入文件。那么,我有几个问题,你能帮我吗???如果不是,那么在线程内创建线程的另一种解决方案是什么??或者它会给我一个段错误吗???或者我会遇到一些竞争条件.... 最佳答案 pthread_create创建一个新线程。独立于它在哪里叫。并在监听时为连接创建一个新线

c++ - 通过 UDP 接收来自 N 个客户端的响应以回复广播请求

我正在为特定类型的网络多媒体设备实现一种IP查找器。我想找出LAN中该类型的所有事件设备,以及它们的IP地址和其他详细信息。设备有自己的设备发现方式。它的工作原理如下:客户端通过UDP在LAN上发送广播请求。目的端口号是固定的。作为答复,LAN中所有了解此请求格式的服务器都将响应此请求,提供有关它们自己的信息。我正在使用sendto()广播UDP请求消息。现在我的问题是我不知道有多少设备(即服务器)会响应请求。HowmanytimeswillIhavetocallrecvfrom()?WhenwillIcometoknowthatIhavehandledtheresponsefroma

c++ - 如何准确阅读一行?

我有一个Linux文件描述符(来自套接字),我想读取一行。如何用C++实现? 最佳答案 如果您正在从TCP套接字读取数据,您无法假设何时会到达行尾。因此你需要这样的东西:std::stringline;charbuf[1024];intn=0;while(n=read(fd,buf,1024)){constintpos=std::find(buf,buf+n,'\n')if(pos!=std::string::npos){if(pos假设您使用“\n\n”作为分隔符。(我没有测试那个代码片段;-))在UDP套接字上,那就是另一回事了

c++ - 模拟套接字错误

如何模拟套接字错误?(有时服务器或客户端由于某些套接字错误而断开连接,并且无法重现。)我一直在寻找一种工具来执行此操作,但找不到。有谁知道一种工具或有关于如何执行此操作的代码示例?(C#或C/C++) 最佳答案 向您用于访问套接字的API添加一个包装层,并让它们在rand()%100>x%的时间内失败。 关于c++-模拟套接字错误,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2

java - 如何从 Java 通过套接字 C++ 兼容结构发送?

假设已经有一个已经编写好的、不可更改的主机程序,它通过套接字接收这样的C++结构:#pragmapack(push,2)structData{doublex;doubley;doublez;longframeNumber;};#pragmapack(pop)平台:在VisualStudio2008中编译的C++/32位Windows应用程序如何从JavaSocket发送这样的数据?我尝试用putDouble()和putLong()填充ByteBuffer,假设long为32位,还有putInt(),但我无法生成有效值。我也随机生成和发送数据,结构级字节分配看起来不错(我只能随机化一个值

c++ - Recv() 调用在远程主机终止后挂起

我的问题是我有一个正在调用recv()的线程。远程主机突然终止(没有close()套接字调用)并且recv()调用继续阻塞。这显然不好,因为当我加入线程以关闭进程(本地)时,该线程将永远不会退出,因为它正在等待永远不会到来的recv。所以我的问题是人们通常认为哪种方法是处理此问题的最佳方法?在回答之前还应了解一些其他注意事项:我无法确保远程主机在退出之前关闭套接字。此解决方案不能使用外部库(例如boost)。它必须使用C++/C的标准库/功能(最好不是特定于C++0x的)。我知道过去可能有人问过这个问题,但我想让别人知道如何正确地纠正这个问题(而不是做一些我过去会做的super骇人听闻

c++ - sockaddr_storage 大小为 128 字节

我只是想知道为什么sockaddr_storage是128字节。我知道它必须至少是IPv6的28个字节,但是比sockaddr_in6多100个字节似乎有点过分。这只是为了将来证明存储结构,还是有理由现在需要它? 最佳答案 您将在rfc2553的§3.10中找到问题的答案。在这个SOpost.原因是至少应保存ip6和其他协议(protocol)数据,并64位对齐以提高效率。来自RFC的相关部分:OnesimpleadditiontothesocketsAPIthatcanhelpapplicationwritersisthe"str

c++ - 如何在 C/C++ 中捕获 system() 的结果

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:HowcanIrunanexternalprogramfromCandparseitsoutput?你好,有人可以告诉我们如何在执行system()函数时捕获结果吗?实际上,我写了一个显示机器IP地址的c++程序,称为“ipdisp”,我希望当服务器程序执行此ipdisp程序时,服务器捕获显示的IP地址。那么,这可能吗?如果是,怎么办?感谢您的回复

c++ - 在线编译器工具执行所有操作还是只检查是否编译?

有几个在线编译器,例如ideone.我想知道他们真的像我们在本地机器上编译和运行一段代码时所做的一切吗?或者他们只是以有限的权限运行它?可以有更多类似的事情:如果我创建一个套接字,并向全局IP发送连接请求,那么该全局机器会收到请求吗?或者它会只显示我们在控制台上获得的输出吗?除了C和C++,我不使用任何东西,所以标记这两个,期待专门针对这些的答案,但其他事物和概念同样受欢迎。 最佳答案 据我所知,大多数在线编译器都会进行真正的编译。但是运行步骤(如果有的话)将不是全局可观察的;每个提交的代码都应该保存在沙箱中(没有真实世界的双向通信

c++ - 使用 select() 检测套接字何时断开连接

我正在尝试检测客户端何时与select()函数断开连接。问题是,我不太了解select()是如何工作的。我正在使用以下代码,你能告诉我我做错了什么和/或如何检测客户端是否断开连接吗?我正在使用非阻塞套接字。intNetwork::bytesAvailable(){longbytes=0;if(ioctl(this->sockfd,FIONREAD,&bytes)sockfd,&fd);result=select(this->sockfd+1,&fd,0,0,&tv);if(result&&!this->bytesAvailable()){return-1;//disconnected,