草庐IT

asyncSocket

全部标签

performance - Go 中异步 TCP 服务器的正确结构是什么?

我有一个客户端发送大约50万个请求(消息)/分钟。每条消息大约为200字节到2KB。每条消息都将保存在数据库中(例如Couchbase)。根据核心、端口、连接和goroutines来构建GoTCP服务器以处理此负载的正确方法是什么? 最佳答案 正如JimB所提到的,TCP服务器应该不难建立并开始针对您的需求进行基准测试。一个简单的布局是等待传入的TCP连接,然后执行一个go例程来处理它。在那个goroutine中,你可以放置任何你想要的阻塞代码,在本例中是写入数据库。这是一个简单示例的链接:Simpleexample一旦你开始工作,

tcp - Google Go EOF 使用 Read() 从连接读取

我正在尝试使用GoogleGo语言创建一个简单的TCP服务器。我有一个指向127.0.0.1:8484的客户端。当我的服务器代码尝试读取缓冲区时,我在第37行收到EOF错误。客户端发送一个初始tcp数据包,表示其客户端版本和其他设置(客户端来自游戏,因此我知道我做错了什么)。我正在尝试阅读此数据包。但是,似乎我调用读取为时已晚,客户端已经发送了数据包并正在等待其响应。任何帮助将不胜感激,因为我真的很困惑。packagemainimport("fmt""net""os")funcmain(){service:=":8484"listener,err:=net.Listen("tcp",s

windows - IOCP 接收和发送

到目前为止,我发现的所有示例要么只能读取或写入,要么是10000行的巨兽,我什至不知道从哪里开始了解它们的工作原理。为了测试我的代码,我将浏览器指向我的服务器并发送了一个简单的http请求。结果令人困惑。例如,有一次GetQueuedCompletionStatus返回并且WSARecv说它读取了我发送的http响应的字节数,尽管这个响应应该(并且确实)在客户端结束并且recvbuffer甚至没有填充这些字节。此外,我不明白在其他浏览器关闭连接后何时释放我的缓冲区,因为GetQueuedCompletionStatus在我调用closesocket后不断返回几次。此外,一旦GetQue

python - 异步 I/O 多路复用(套接字和线程间)

我想让一个Python线程等待来自一个套接字(串行端口、TCP/IP等)的数据,或者等待来自另一个线程的数据。我想要一个可移植的Windows和Linux解决方案。我正在寻找类似于select.select()的东西,但我相信我不能在Windows上使用select.select()进行线程间通信。这容易实现吗? 最佳答案 你确定有必要使用线程吗?您是否正在使用一些需要使用它们的外国API?无论如何,使用Twisted,您可以轻松地监听任何文件,如可移植的(包括串行端口和TCP套接字)。此外,假设您确实需要使用线程,Twisted提

c# - 为什么 SocketAsyncEventArgs 的 Completed 回调经常在新创建的线程中执行,而不是使用有界线程池?

我有一个简单的客户端应用程序,它以低吞吐量从网络接收字节缓冲区。这是代码:privatestaticreadonlyHashSet_capturedThreadIds=newHashSet();privatestaticvoidRunClient(Socketsocket){vare=newSocketAsyncEventArgs();e.SetBuffer(newbyte[10000],0,10000);e.Completed+=SocketAsyncEventsArgsCompleted;Receive(socket,e);}privatestaticvoidReceive(Soc

c# - Visual Studio 2010 不会在 Socket.BeginReceive() 回调中出现未处理的异常时停止 - 为什么?

通常,当附加调试器时,VisualStudio2010会在未处理的异常处停止,即使“异常”对话框的“抛出”列中没有异常类型的勾号也是如此。这里的关键词是unhandled;表示dialog仅指已处理的异常。但是,在下面的最小示例中,VisualStudio2010并没有在我的异常处停止,即使它作为第一次机会异常出现在立即窗口中也是如此:编辑:我发布的第一个最小示例由我收到的第一个答案修复,但不幸的是,以下示例仍然存在问题:usingSystem;usingSystem.Net.Sockets;namespaceSocketTest{classProgram{staticvoidMain

c# - 为什么 GC System.Threading.OverlappedData 需要这么长时间?

我正在通过内存分析器运行我的应用程序以检查是否有泄漏。事情似乎有点好,但我得到了很多这些OverlappedData,它们似乎在终结器队列中徘徊,几乎什么都不做。它们是重叠IO的结果,已通过关闭连接两端的底层NetworkStream取消。网络流本身被释放。任何地方都没有NetworkStream的实时实例。通常,它们Root于称为OverlappedDataCacheLine的东西。我做的第一件事就是在回调中调用EndRead,所以没有调用BeginRead应该没有相应的EndRead。这是一个非常典型的外观,表明谁将它从工具中取出最后它确实得到了GC,但它需要永远-当我开始大约一千

c++ - Boost.asio 和异步链,unique_ptr?

我对异步编程不是很熟悉,我有一个问题。我的问题如下。给定boost.asio中C++11的echo_server示例:http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/example/cpp11/spawn/echo_server.cpp我想知道std::make_shared可以在C++14中替换为std::unique_ptr在C++14中,避免了引用计数的开销。我不确定,因为我们有shared_from_this()但不是像unique_from_this()这样的东西,那么我怎样才能访问unique_ptr从里面t

c++ - 如何在这段代码中避免 DOS 攻击?

我有一个用C/C++编写的代码,如下所示:while(1){//Acceptstructsockaddr_inclient_addr;intclient_fd=this->w_accept(&client_addr);charclient_ip[64];intclient_port=ntohs(client_addr.sin_port);inet_ntop(AF_INET,&client_addr.sin_addr,client_ip,sizeof(client_ip));//Listenfirststringcharfirststring[512];memset(firststrin

objective-c - 在 iOS CFStreams 上设置代理不起作用

我已经在我的Mac上设置了一个squidhttp代理,并且我已经设置了我的Mac来共享它的无线连接。在我手机上的wifi连接信息中,我设置了HTTP代理设置:Server:10.0.2.1Port:3128Authentication:off在我的iOS应用程序中,我有两种访问网络的方法。对于http请求,我使用NSURLRequest,对于其他TCP连接,我使用AsyncSocket库。所有使用NSURLRequest的请求都可以毫无问题地使用代理(对于SSL,代理充当HTTPCONNECT隧道)。但是,我似乎无法获得用于AsyncSocket连接的代理。我确实更新了AsyncSoc