Vb.net 使用Visual Basic 2013和简单tcp客户端/服务器实现局域网游戏

Vb.net 使用Visual Basic 2013和简单tcp客户端/服务器实现局域网游戏,vb.net,tcp,udp,lan,Vb.net,Tcp,Udp,Lan,我能找到的VisualBasicNet及以上的所有聊天应用程序。它们对我不起作用,因为我正在尝试制作一个局域网多人棋盘游戏,所有的例子都让你直接在客户端和/或服务器上输入。我需要通过其他表单访问客户端/服务器。我似乎不知道如何才能做到这一点。每次尝试时,我甚至无法通过客户端上的公共子节点发送文本来告诉它是否将数据发送到服务器,或者数据到达发送点,但没有。我是自学成才的,但这让我感到困惑 如果我将客户端中的sub设置为公共共享sub,则它不能 访问那里的任何其他内容 您可以将客户端类的实例存储在主

我能找到的VisualBasicNet及以上的所有聊天应用程序。它们对我不起作用,因为我正在尝试制作一个局域网多人棋盘游戏,所有的例子都让你直接在客户端和/或服务器上输入。我需要通过其他表单访问客户端/服务器。我似乎不知道如何才能做到这一点。每次尝试时,我甚至无法通过客户端上的公共子节点发送文本来告诉它是否将数据发送到服务器,或者数据到达发送点,但没有。我是自学成才的,但这让我感到困惑

如果我将客户端中的sub设置为公共共享sub,则它不能 访问那里的任何其他内容

您可以将客户端类的实例存储在主窗体中的共享变量中:

Public Class Form1

    Public Shared myClient As New Client

End Class
现在,您可以通过以下方式从应用程序中的任何位置访问它:

Form1.myClient.Send(...)
客户端内的子节点不需要共享。

*共享实例不一定必须是您的表单。您可以为此创建一个虚拟类:

Public Class Communication

    Public Shared myClient As New Client

End Class
同样,可以从任何地方访问:

Communication.myClient.Send(...)
*显式使用VB.Net,您可以使用模块。使用这种方法,实例被声明为Public,而不使用Shared关键字:

Public Module Module1

    Public myClient As New Client

End Module

现在,您只需从应用程序中的任何位置使用
myClient.Send(…)
,而无需在其前面添加任何内容。使用模块方法,.Net实际上是在为您将所有内容转换为一个具有幕后共享成员的类。

这两者之间没有区别。基本上,你可以在两个应用程序之间“聊天”,但不是在屏幕上显示“消息”,而是让你的应用程序做其他事情。如果需要从其他表单访问客户机/服务器,请将对它们的引用传递到这些表单中!好的,只有当我使用客户端应用程序并从那里创建表单时,这才有效。如果我从另一个应用程序尝试它,它需要一个新的客户端实例,但该实例不起作用(不能每次我需要发送消息时都有一个新的客户端)。如果我将客户端中的sub设置为公共共享sub,那么它将无法访问那里的任何其他内容。好的,我正在youtube上使用Aeonhack的客户端/服务器教程,并且它不允许我将客户端类公开为公共:错误:“MyClient”无法通过模块“Comms”在项目外部公开类型“ClientBufferedConnector”。也许我会尝试使用另一个教程作为我的基础…另一个注意,我需要aeonhack教程的包头功能来指导我在游戏中的动作。我开始在CodeProject上使用NetComm.dll,它工作得很好,直到我开始收到“双重消息”发送到远程测试机。作为一个新手,我不明白为什么。现在的另一个问题是,我有一个发送登录消息的子程序。当从代码(以这种形式)调用时,它不工作,但是如果连接到按钮,它将工作!我真的快发疯了。。。