【问题标题】:I just want my client to say hello to my server but can't我只想让我的客户向我的服务器问好,但不能
【发布时间】:2013-03-07 22:47:04
【问题描述】:

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

编辑

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

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

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

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

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

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 example中有很多callback,acceptcallback和其他方法,我相信我很快就会明白,但现在它令人难以置信的混乱。

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

【问题讨论】:

  • 我不得不喝两个怪物才能解决你的问题:)
  • 喝“一壶”水只会让我感到臃肿,这并不能增强我的平静。
  • 我添加了更多标签,因为这不是真正的 C# 或 vb.net 问题,而是与异步通信特别相关
  • 你为什么不尝试使用 SignalR 呢?
  • SignalR?我还没到。我只想向服务器发送一个“hello”字符串。

标签: c# vb.net web-services asyncsocket


【解决方案1】:

我使用您的代码创建了一个示例,我可以让它给我一个空引用异常的唯一方法是如果我没有正确实例化套接字。但是如果没有看到您声明的 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);

【讨论】:

  • 哦,是的!这行得通,我的问题解决了一半……现在那个讨厌的“你好”消息怎么样? :)
猜你喜欢
  • 2019-06-23
  • 2015-09-13
  • 2023-04-02
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多