如何发送“hello”服务器并回复“嗨”?
使用我的代码,我可以在服务器上读取消息并从客户端写入。但我无法从服务器写入响应并在客户端中读取。
client
上的代码
var cli = new TcpClient();
cli.Connect("127.0.0.1", 6800);
string data = String.Empty;
using (var ns = cli.GetStream())
{
using (var sw = new StreamWriter(ns))
{
sw.Write("Hello");
sw.Flush();
//using (var sr = new StreamReader(ns))
//{
// data = sr.ReadToEnd();
//}
}
}
cli.Close();
server
上的代码
tcpListener = new TcpListener(IPAddress.Any, port);
tcpListener.Start();
while (run)
{
var client = tcpListener.AcceptTcpClient();
string data = String.Empty;
using (var ns = client.GetStream())
{
using (var sr = new StreamReader(ns))
{
data = sr.ReadToEnd();
//using (var sw = new StreamWriter(ns))
//{
// sw.WriteLine("Hi");
// sw.Flush();
//}
}
}
client.Close();
}
如何在读取数据后让服务器回复并让客户端读取这些数据?
没有找到相关结果
已邀请:
2 个回复
拟僚疽刊剔
,您可以直接回写客户端而无需自我识别。如果您使用
或
而不是
,您所拥有的代码将实际工作。
将永久阻止网络流,直到流关闭。查看类似问题的答案,或者从MSDN, ReadToEnd假定流 知道它什么时候结束了。对于 互动协议中的 服务器只在你问的时候发送数据 因为它并没有关闭 连接,ReadToEnd可能阻止 无限期,因为它没有到达 结束了,应该避免。 如果在一侧使用ReadLine(),则需要在另一侧使用WriteLine() - 而不是Write()。另一种方法是使用一个调用Stream.Read()的循环,直到没有东西可以读取。您可以在MSDN上的AcceptTcpClient()文档中查看服务器端的完整示例。相应的客户端示例位于TcpClient文档中。
可扇胆