好的,这是一个如此简单的问题,但它让我如此疯狂,以至于我不得不喝一整杯水让自己平静下来。
编辑
在标签中添加了c#,c#答案也可以。
基本上我在microsoft的网站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和其他方法,我相信我很快就能理解,但是现在它非常令人困惑。
请让我免于戴着我的笔记本电脑戴上帽子和帮助。只需一个简单的“你好”字符串到服务器,我的生活将是一个快乐的。 感谢
答案 0 :(得分: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);