访问外部TCP流

时间:2013-08-13 19:36:28

标签: java .net vb.net networking tcp

理论值:
假设我有一个用Java编写的应用程序A,它使用TCP流进行客户端/服务器通信(它位于关系中的客户端)。现在,纯粹作为一个实验,我试图创建一个用VB.NET编写的应用程序B,它将作为应用程序A的网络流的代理,允许应用程序B读取和写入流。

是否可以从另一个应用程序访问这样的网络流,同时考虑语言边界?

1 个答案:

答案 0 :(得分:0)

你的问题很模糊,但如果你问的是制作代理服务器的可能性,那么是的,这是可能的。语言并不重要,但界面确实如此(流中的内容被编码的方式)。例如,Java通常使用big endian(首先发送的每个字节序列的最高有效字节)将事物序列化为流,而.NET使用little endian(首先发送的每个字节序列的最低有效字节)。但是,只要您知道数据如何实际编码到这些流中,您就可以编写一个不错的代理服务器。如果您的代理服务器将要做的只是传递数据而不关心数据是什么,那么您只需从一个流中读取一个字节并将其写入另一个流。但是,如果您实际上正在读取值(整数,字符串,图片等),那么您将处理字节序问题,因为Java和VB.NET的默认流读取器将以不同的方式读写整数等。

如果您想要实际编辑数据而不是简单地传递数据,那么会有一些复杂的问题。您将不得不处理客户端和服务器对奇怪网络行为的反应。例如,如果客户端A是视频游戏,并且代理B向服务器注入消息以“加入游戏”,那么你将不得不处理服务器将要发送的事实“好吧,你是加入游戏“。当客户端收到该消息时,它很可能会忽略它,因为它不知道代理尝试代表它加入游戏,并且只会假设服务器犯了错误。