请原谅我选择措辞和/或术语混淆,在套接字编程方面,我是一个虚拟角色。我正在尝试连接到TCP服务器,写入消息并处理响应。我使用下面的代码: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服务器?如果是这样,你可以发布处理传入连接的代码吗? – ristonj 2009-11-24 14:30:20
好点(因此upvote :))。我无权访问TCP服务器源。 – 2009-11-24 14:37:24