2

好吧,这是一个如此简单的问题,但它让我很生气,以至于我不得不喝一整壶水来让自己平静下来。

编辑

在标签中也添加了 c#,ac# 答案也可以。

基本上,我在微软的网站http://msdn.microsoft.com/en-us/library/bbx2eya8.aspx上实现了这个异步客户端/服务器示例。

现在我有一个运行服务器的项目实例,服务器正常,只是在等待连接。

我试图了解 .net 中的异步通信模型,我只是希望我的 client.vb 向正在本地侦听端口 2000 的服务器问好。

微软示例中的代码很长,我正在努力理解它,但现在我只想要一个简单的几行代码来向我等待的服务器说“你好”。

Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
    Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
    Dim localEndPoint As New IPEndPoint(ipAddress, 2000)
    clientSocket.BeginConnect("localhost", 2000, AddressOf ConnectionMade, clientSocket)

以上不起作用,我得到一个空指针异常。microsoft 示例中有很多回调、acceptcallback 和其他方法,我相信我很快就会明白,但现在它令人难以置信的混乱。

请让我免于戴着我的笔记本电脑戴帽子和帮助。只需一个简单的“你好”字符串到服务器,我的生活就会很快乐。谢谢

4

1 回答 1

2

我使用您的代码创建了一个示例,我可以让它给我一个空引用异常的唯一方法是如果我没有正确实例化套接字。但是如果没有看到您声明的 clientSocket 或 ConnectionMade 方法,就很难说清楚。

IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint (ipAddress, 2000);
Socket clientSocket = new Socket(SocketType.Raw, ProtocolType.IPv4);
clientSocket.BeginConnect("http://www.google.com", 80, new AsyncCallback(method), clientSocket);
于 2013-03-07T23:17:46.610 回答