草庐IT

language-scala

全部标签

scala - Akka Tcp 创建点对点架构而不是客户端服务器

在当前的Akka文档中有一个niceexampleofcreatingaclientserverarchitecture.我正在创建一个可以在比特币协议(protocol)上发送和接收消息的Akkaactor。到目前为止,我已经能够发送消息并接收对我发送的消息的回复,但我无法按照对等协议(protocol)的要求接收未经请求的消息。我尝试使用Tcp.Bind和Tcp.Connect来监听端口18333上的未经请求的消息能够向网络上的对等方发送消息。但是,我遇到了这个问题,它会说端口已经绑定(bind)(通过Tcp.Connect事件)或者它无法从该端口发送消息(由于Tcp.Bind事件

scala - Akka TCP 请求响应需要 Thread.sleep

早上好,我对TCP的基本akkaIO有疑问我有客户端和服务器的基本实现,如akka文档所示:Clientishttps://github.com/akka/akka/blob/v2.5.20/akka-docs/src/test/scala/docs/io/IODocSpec.scala#L67-L103Handler是[SimpleEchoHandler](https://github.com/akka/akka/blob/v2.5.20/akka-docs/src/test/scala/docs/io/EchoServer.scala#L227-L304)但其他的也一样。我有一个在

sockets - 如何控制 Scala 远程参与者的 TCP_NODELAY 设置?

我正在使用Scala的远程参与者,但往返时间(即使是一条微不足道的消息)是80毫秒,大概是由于底层套接字没有禁用TCP/IPNagle算法(也称为TCP_NODELAY),或者至少这是一些具有JavaRMI经验的人告诉我的。我在客户端中为获取到远程参与者的链接所做的一切就是valserver=select(Node("127.0.0.1",12111),'server)有什么方法可以获取底层套接字并对其调用java.net.Socket.setTcpNoDelay()吗? 最佳答案 如果您需要在不修改Scala源代码的情况下在底层S

scala - 使用 Akka Actors 处理多个 TCP 连接

我正在尝试使用akka设置一个简单的TCP服务器应该允许多个客户端同时连接的参与者。我将我的问题简化为以下简单程序:packageactorfailimportakka.actor._,akka.io._,akka.util._importscala.collection.mutable._importjava.net._caseclassFoo()classConnHandler(conn:ActorRef)extendsActor{defreceive={caseFoo()=>conn!Tcp.Write(ByteString("foo\n"))}}classServer(conn

language-agnostic - 更多 TCP 和 POSIX 套接字 listen() 和 accept() 语义

情况:服务器调用listen()(但不是accept()!)。客户端向服务器发送SYN。服务器获取SYN,然后将SYN/ACK发送回客户端。但是,客户端现在挂断/死亡,因此它永远不会向服务器发回ACK。连接处于SYN_SENT状态。现在另一个客户端发送一个SYN,从服务器得到一个SYN/ACK,然后发回一个ACK​​。此连接现在处于ESTABLISHED状态。现在服务器终于调用了accept()。怎么了?accept()是否在第一个错误连接上阻塞,直到发生某种超时?它是否首先检查队列中是否存在任何已建立的连接并返回这些连接? 最佳答案

language-agnostic - 在 TCP 之上是否有针对高吞吐量和低延迟进行优化的协议(protocol)/标准?

是否存在针对高吞吐量和低延迟优化的TCP协议(protocol)/标准?我唯一能想到的是FAST.目前我只设计了一个简单的基于文本的协议(protocol),由特殊字符分隔。我想采用一种专为快速传输而设计的协议(protocol),并且可能支持对通过TCP套接字传输的数据进行压缩和缩小。 最佳答案 我们可以通过以下任何一种方式,在UDP之上利用TCP的面向连接/可靠的特性,而不是使用重量级的TCP:UDP-basedDataTransferProtocol(UDT):UDT通过添加拥塞控制和可靠性控制机制构建在用户数据报协议(pro

scala - Akka TCP 命令失败

我正在使用AkkaTcp编写客户端和服务器应用程序,但我遇到了高吞吐量问题。当我在客户端写了太多消息时,我收到了太多CommandFailed消息,我不知道为什么......这是我的服务器:classServer(listener:ActorRef)extendsActor{importTcp._importcontext.systemIO(Tcp)!Bind(self,newInetSocketAddress("localhost",9090))defreceive={caseCommandFailed(_:Bind)=>{println("commandfailederror")c

java - 简单 Scala TCP 服务器中的套接字问题

我是Scala的新手,所以这个问题可能很简单,尽管我花了一些时间试图解决它。我有一个简单的ScalaTCP服务器(没有Actor,单线程):importjava.io._importjava.net._objectApplication{defreadSocket(socket:Socket):String={valbufferedReader=newBufferedReader(newInputStreamReader(socket.getInputStream))varrequest=""varline=""do{line=bufferedReader.readLine()if(l

scala - 使用 TCP 流并将其重定向到另一个 Sink(使用 Akka Streams)

我尝试使用Akka2.4.3将TCP流重定向/转发到另一个接收器。该程序应该打开一个服务器套接字,监听传入的连接,然后使用tcp流。我们的发件人不期望/接受我们的回复,所以我们从不发回任何东西——我们只是消费流。在构建tcp流之后,我们需要将字节转换为更有用的东西并将其发送到接收器。到目前为止,我尝试了以下方法,但我特别纠结于如何不将tcp数据包发送回发送方以及如何正确连接接收器的部分。importscala.util.Failureimportscala.util.Successimportakka.actor.ActorSystemimportakka.event.Loggingi

scala - 如何使用akka在scala中打开与TLS的TCP连接

我想编写一个Scala客户端,它通过使用TLS的tcp连接来讨论专有协议(protocol)。基本上,我想在Scala中从Node.js重写以下代码:varconn_options={host:endpoint,port:port};tlsSocket=tls.connect(conn_options,function(){if(tlsSocket.authorized){logger.info('Successfullyestablishedaconnection');//Nowthattheconnectionhasbeenestablished,let'sperformtheha