【发布时间】:2009-11-24 14:16:08
【问题描述】:
请原谅我选择的措辞和/或混淆的术语,当谈到套接字编程时,我是个傻瓜。我正在尝试连接到 TCP 服务器,编写消息并处理响应。我使用以下代码:
Dim tcpClient As Sockets.TcpClient = New TcpClient()
tcpClient.Connect(hostname, 9080)
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanWrite And networkStream.CanRead Then
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(body)
networkStream.Write(sendBytes, 0, sendBytes.Length)
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
Dim returndata As String = Encoding.ASCII.GetString(bytes)
End If
我可以看到服务器日志并注意到服务器只在我停止调试时从套接字读取。然后它处理消息并发送响应(这对于我的客户端来说有点晚了不再听了)。
似乎需要先关闭 networkStream 对象。但是,如果我这样做,我将无法处理任何后续响应。我是否需要向已完成写入的服务器发出“信号”?我需要完全使用不同的模型吗?
【问题讨论】:
-
您是否也编写了 TCP 服务器代码?如果是这样,您可以发布处理传入连接的代码吗?
-
好点(因此赞成:))。我无权访问 TCP 服务器源。