草庐IT

REPETEABLE_READ

全部标签

java - 安卓 : Keep socket open to read message from server

我正在开发一个Android应用程序首先,我必须通过TCP套接字连接到硬件服务器连接后,我必须发送*99*1##到服务器,然后服务器将响应"*#*1##*#*1##"然后,我需要让这个套接字保持Activity状态并读取传入的消息在这之后,服务器可以不时地向我发送消息。但是,消息何时发送或消息长度未确定。每条消息都以“##”结尾,例如*1*1*18##、*1*0*19##、*1*1*#4*11##等。当客户端(此应用程序)收到消息时,它会通知Activity更新UI。因此,我创建了一个线程子类来执行此操作publicclassServerThreadextendsThread{publ

javascript - Boost::asio::async_read_until 从不调用处理程序

我正在尝试在本地网络上的两台计算机之间建立连接,一台使用BoostAsioC++TCP异步服务器示例的略微修改版本,另一台使用NodeJS。tcp_client.js:varnet=require('net');varHOST='127.0.0.1';varPORT=14002;varclient=newnet.Socket();client.connect(PORT,HOST,function(){console.log('CONNECTEDTO:'+HOST+':'+PORT);//Writeamessagetothesocketassoonastheclientisconnect

c++ - 在 linux 中调用 socket.close 后 socket.read_some 需要很长时间才能返回

我将Boost.Asio用作简单的套接字库。当我打开一个套接字时,我创建了一个线程,该线程不断读取该套接字,并在套接字关闭或发生其他一些错误时返回。while((read=socket->read_some(buf,ec))!=0){//dealwithbytesread}此代码在Windows和Mac上运行良好。然而,对于Linux,当从主线程关闭套接字时,socket::read_some需要很长时间才能返回-我发现它超过2分钟。我可以做些什么来改进它吗? 最佳答案 如果你愿意cancel-ability,使用异步套接字。不要使

boost::asio::read 抛出编译错误 'read_some' 不是 'boost::shared_ptr<boost::asio::ip::tcp::socket>' 的成员

我正在尝试构建一个客户端以通过特定协议(protocol)从服务器获取数据。我知道我的代码不是最好的-但目前我仍在试验BoostASIO的基本功能。我想从TCP-Function中实现读取,它会阻塞直到接收到特定数量的字节。我的问题:当我调用boost::asio::read或boost::asio::write时出现以下错误:错误C2039:“read_some”:不是boost::shared_ptr的成员我正在使用VS2013Professional,Boost1.55.00(预编译)。这是我的代码:(您可以通过注释“//HEEERE”找到该行boost::mutexcout_l

java - TCP/IP 客户端 : best way to read multiple inputstreams from server

我正在创建一个java客户端程序,它向服务器发送命令,服务器发回确认和响应字符串。Theresponseissentbackinthismannerclient->server:cmd_stringserver->client:ack_msg(06)server->client:response_msg当我尝试读取输入时,我只能通过一个输入流读取确认消息我的客户端程序能够以某种方式读取消息(hacky方法)。要读取输入,我必须使用Bufferedreader读取确认消息。此缓冲阅读器只能读取ack_msg而不能读取以下消息需要DataInputstream代码来读取响应消息。如果我跳过

java - 套接字异常 : Connection Reset when trying to read from socket in Java?

我的应用程序在Java套接字方面遇到了一些恼人的麻烦,似乎在非常基本的层面上失败了。我的部分应用程序需要通过TCP连接写入文件名。接收端代码如下:ServerSocketserverSocket=newServerSocket(4445);Socketsocket=serverSocket.accept();BufferedReaderreader=newBufferedReader(newInputStreamReader(socket.getInputStream()));Stringfilename=reader.readLine();虽然我的发件人代码如下:Socketsock

c++ - TCP 套接字上的 read() 何时返回

有人可以解释一下,我用来从TCP套接字获取数据的读取函数到底什么时候返回?我使用下面的代码从测量系统中读取数据。该系统以15Hz的频率传送数据。READ_TIMEOUT_MS的值为200此外,READ_BUFFER_SIZE的值为40000。一切正常,但实际情况是,read()每秒返回15次,读取了1349字节。通过阅读以下文档中的陷阱5,我预计缓冲区已完全填满:http://www.ibm.com/developerworks/library/l-sockpit/初始化:sock=socket(AF_INET,SOCK_STREAM,0);if(socket阅读:unsignedch

c# - 为什么 NetworkStream.Read 这么慢?

我知道,这里已经有很多类似的问题,但我没有找到让它更快的解决方案或者为什么它这么慢的原因?我们在C#.NET中有一个应用程序需要通过TCP与响应同一TCP流(全部以字节为单位)的设备进行通信。消息的发送速度非常快(大约20毫秒),但是当我们使用NetworkStream.Read()方法(或类似的Socket.Receive())从TCP套接字读取数据时,大约需要600毫秒。我通过在Read方法之前启动秒表并在Read之后立即停止来获得这个数字。我还使用Wireshark记录流量,在那里我看到通信进行得非常快(使用TCPNoDelay和TCPAckFrequency注册表黑客)但是我看

c# - 在发送消息中收到所有数据之前,TCPStream.Read 会阻塞吗?

我编写了一个多线程的简单服务器,它使用:clientStream.Read(message,0,4096);阻塞直到客户端发送消息。然后代码继续处理该消息。到目前为止我只用它来发送短命令ex."#login[username][login]"但我担心,当我通过线路发送大量表格数据时,代码可能会在数据全部收到之前继续执行。那么.Read会阻塞直到接收到整个发送的消息,还是在任何数据开始接收时解除阻塞? 最佳答案 依靠Sendtofinish来区分消息是一种糟糕的形式。如果不是出于最简单的原因。我可以远程登录到您的服务器并轻松地使它崩溃

c++ - TCP 套接字 : Where does incoming data go after ack(leaves tcp read buffer) but before read()/recv()?

如果我有一个以200KB/秒的速度传输数据的TCP连接,但我每秒只从套接字read()/recv()一次,那么在哪里那些200KB的数据同时存储?据我所知,数据在ack发送给发送方后离开TCP套接字的读取缓冲区,而且它太小了,无法容纳200KB的数据,同时它在哪里等待,直到它可以被我的客户读取()/recv()?谢谢!!以下答案声称数据在被read()/recv()d之前一收到ACK就离开TCP读取缓冲区:https://stackoverflow.com/a/12934115/2378033“接收器的套接字接收缓冲区的大小决定了在没有确认的情况下可以传输多少数据”会不会是我的假设是错