草庐IT

Async-await

全部标签

c# - 使用 TCP 发送多个字符串太快了我该如何等待?

因此,我试图将列表框中的所有项目发送到具有另一个列表框的服务器。我无法访问服务器的代码,我所能做的就是连接并向其发送字符串。所以到目前为止我所做的是我已经连接到它并且我可以毫无问题地发送单个字符串,现在当我尝试发送列表框中的所有项目时它执行得如此之快以至于一些字符串被发送为1个包(如果有意义的话)。像这样想象一个列表JossNotaPioneerPRBPythonTomcarToyota当我从客户端向服务器发送消息时,服务器是这样接收的JossNotaPioneerPRBPythonTomcarToyota因为发送速度太快了。我怎样才能让它变慢?我想使用async和await但不确定如

.net - wcf tcp async streamed 是可能的吗?

我有一个使用tcp的服务,并且我的所有方法都是异步的,所以我实现了Begin/End方法(我使用C#4.0)。如果我只修改我的app.confing以将传输模式设置为Streamed而不是Buffered,当我在客户端中进行异步调用时,应用程序将永远等待响应。但是,如果我将传输模式更改为缓冲,则它可以正常工作。我还注意到我需要在缓冲传输模式下使用reliableSession,因为当我启动应用程序时,我收到错误10061,目标服务主动拒绝连接。我知道如果我想使用流式传输模式我不需要禁用dereliableSession,所以我想问是否可以使用异步方法的流式传输模式。谢谢。编辑:我正在尝

c++ - boost::asio 在 async_read 中复制输入数据

最近从libevent转成boost::asio,一周后发现一个奇怪的现象:当我从客户端读取数据时,有些数据好像是重复的,好像库没有'不必将其标记为已读(或类似的东西)。我的“读取”方法如下所示:voidclient::doRead(){deletereadBuffer;//gettingridofolddatareadBuffer=newSerializedBuffer((uint)READ_BUFFER_SIZE);readBuffer->position(0);asio::async_read(socket,asio::buffer(readBuffer->bytes(),REA

sockets - ConnectAsync 阻塞 UI 线程

我有一个简单的WinRT应用程序,它将通过TCP与远程服务器通信。为了做到这一点,我正在创建新的StreamSocket对象,并在单击适当的按钮后连接到远程服务器,如下所示:privateasyncvoidConnectButtonClick(objectsender,RoutedEventArgse){StreamSocketsocket=newStreamSocket();HostNamehost=newHostName("192.168.1.15");awaitsocket.ConnectAsync(host,"12121");}问题是这段代码阻塞了UI线程。我创建了简单的动画,

c# - Async TCP Server 代码示例分析

我正在使用以下代码创建异步TCP服务器:privatevoidSetupServerSocket(){varmyEndpoint=newIPEndPoint(IPAddress.Any,_port);_serverSocket=newSocket(myEndpoint.Address.AddressFamily,SocketType.Stream,ProtocolType.Tcp);_serverSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.KeepAlive,true);_serverSocket.B

c++ - Boost ASIO async_connect 在应该失败的时候却成功了,为什么?

我有一个服务器应用程序,其中我只接受一个带有boost::asio::ip::tcp::acceptor和async_accept的客户端。我运行客户端应用程序并使用boost::asio::ip::tcp::socket和async_connect成员函数成功连接。然后我让客户端崩溃(CTRL-ALT-DEL)。如果我重新启动客户端应用程序并尝试重新连接,它会成功...即使我没有在服务器端重做async_accept。这怎么可能?编辑:如果服务器应用程序未运行,async_connect将失败。 最佳答案 有可能是因为accept

c# - 在 C# 中停止线程

我需要使TcpClient事件驱动而不是一直轮询消息,所以我想:我将创建一个线程来等待消息到来并在消息到来时触发事件。这是一个总体思路:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Net.Sockets;usingSystem.Net;namespaceThreadsTesting{classProgram{staticvoidMain(string[]args){Programp=ne

c++ - boost::asio::async_read 在换行符上返回文件结尾错误

我正在尝试使用async_read和async_write向服务器发出简单的tcp请求并设置超时。问题是async_read在尝试读取直到传输结束时给出错误,在第一个'\n'上它返回错误(文件结束)。逐行读取字符串时(当eots->at(last_request)='\n')时,它成功读取了整个响应。if(eots->at(last_request)=="")//readuntilend{boost::asio::async_read(socket_,input_buffer_,boost::asio::transfer_at_least(1)//readuntillendorerro

networking - boost::asio tcp async_accept 处理程序未被调用但同步连接工作正常

我有一个TCP客户端,它可以正常调用TCP套接字上的常规连接。但是,对async_connect的调用永远不会触发处理程序。他们都使用几乎相同的代码。区别仅在于调用连接与异步连接。标题#ifndefTCPCLIENT_H#defineTCPCLIENT_H#include#include#include#include#include#includeusingboost::asio::ip::tcp;//HowaboutaninterfaceforoutputtingerrorsclassBoostTCPDebugOutputInterface{public:virtualvoidou

c# - 异步 TCP 服务器持有套接字但停止监听

我有以下异步TCP服务器,我用它来接受来自要上传文件的客户端的传入请求。大约1-4小时后,服务器将停止接受任何新连接。这一直让我感到困惑,因为我无法确定地重现错误。我程序中的其余线程继续正常运行。没有任何异常抛出。关于可能发生的事情有什么建议吗?在服务器死机之前,我所看到的只是它设法完成挂起的请求然后停止。我有一种预感,服务器正在经历频繁的网络断开连接。如何使这段代码对故障更健壮?我已经将try-catch添加到可能会失败的两段代码中,但我觉得我仍然遗漏了一些东西。我设置了另一个线程来检查此服务器是否释放套接字,但即使在它停止处理客户端请求后套接字似乎仍在使用中。我使用netstat-