首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从带套接字的mud接收数据- telnet协商?

从带套接字的mud接收数据- telnet协商?
EN

Stack Overflow用户
提问于 2012-01-08 19:08:31
回答 1查看 399关注 0票数 0

为了让问题更容易理解,首先要了解一些上下文:我对java网络有一定的了解,但到目前为止,我所做的所有网络都是发送命令->等待响应->重复。最近,我在业余时间尝试了一些有点不同的东西。我想连接到Mud,并且我使用标准的mud客户端。然而,我开始思考,并决定我是否可以创建一个服务器,然后连接到mud (所以,我将使用我的客户端连接到中间服务器,然后它将连接到mud本身)。这主要是为了看看我是否可以在一开始(几个朋友和我想在外面设置游戏聊天等),但我一直遇到一些问题,现在想解决它们以供将来参考,因为它们看起来相当重要。

到目前为止,我设置了一个ServerSocket,接受一个客户端连接,生成BufferedReaders/PrintWriter来保存输入和输出流(在每个新连接的线程中)。然后,我在该客户端线程中生成第二个线程,以连接到mud,然后mud不断循环读取行,并将它们输出到客户端线程的输出流。客户端线程循环等待命令输入,并对其进行处理。

我不确定这种方法是否合适(正如我前面提到的,我从来没有做过必须同时处理输入和输出的套接字编程)。但是,主要问题是输出在几行之后就停止了。服务器连接到mud fine,它打印大约12行左右的登录屏幕(我可以澄清这个数字,如果它的重要性,双倍行间距使它有问题)。我环顾四周,在其他问题中提到了需要发送字节序列(telnet协商?我不熟悉这个术语),以避免类似的问题,但我找不到关于这个问题的太多具体信息。

我很确定这是一个我不知道的技术细节,但如果有人能给我一些资源或提供一个通用的解决方案,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2017-12-10 10:23:58

如果我理解正确的话,您正在使用标准的MUD客户端通过您编写的中间/代理服务器连接到MUD。

同样,为了确保我的想法是一致的:到代理的每个连接都会产生两个线程:一个收集客户端发送的字节并将它们转发给MUD,另一个收集MUD发送的字节并将它们转发给客户端。

你的问题:

您的客户端只能从MUD中看到有限数量的字节。

理论:

你的远程登录协商理论是一个很好的理论。您需要在客户端和MUD之间发送未受干扰的八位字节,但是PrintWriter被设计为只发送句柄编码的文本流。这可能会扰乱通过代理来回传输的一些非ASCII字节。

因为我最近一直在做类似的事情,所以我也想排除发生缓冲区溢出的可能性。如果您的每个代理线程都在一个紧密的读写循环中,这是不太可能的,但我看到的是与您完全相同的情况,因为我定期轮询并写入太小的缓冲区,这些缓冲区太小,无法处理负载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8776992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档