C# 如何发送一个";“你好”;发送至服务器并回复“回复”;你好;?
通过我的代码,我可以在服务器上读取消息并从客户端写入。但是,我无法从服务器写入响应并在客户端读取C# 如何发送一个";“你好”;发送至服务器并回复“回复”;你好;?,c#,tcpclient,tcpserver,C#,Tcpclient,Tcpserver,通过我的代码,我可以在服务器上读取消息并从客户端写入。但是,我无法从服务器写入响应并在客户端读取 客户端上的代码 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("He
客户端上的代码
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();
服务器上的代码
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();
}
如何让服务器在读取数据后回复,并让客户端读取这些数据?俗气、不熟练,但一次性程序的技巧是:
- 客户端:在流中,包括它希望从中接收响应的端口和IP地址
- 客户端:为它创建一个侦听器 端口和IP
- 服务器:读取端口/IP信息并 依次连接,然后发送回复 小溪
TcpClient client = tcpListener.AcceptTcpClient();
,您可以直接向客户回信,而无需客户自行识别如果您使用Stream.Read()
或.ReadLine()
而不是.ReadToEnd()
,那么您拥有的代码实际上可以工作ReadToEnd()
将在网络流上永久阻塞,直到流关闭。注意类似的问题,或从
ReadToEnd假定流
知道什么时候结束。对于
交互协议,其中
服务器仅在您请求时发送数据
对于它,不关闭
连接,ReadToEnd可能会阻塞
无限期地,因为它无法到达
结束,应该避免
如果在一端使用ReadLine(),则需要在另一端使用WriteLine()-而不是Write()。另一种方法是使用一个调用Stream.Read()的循环,直到没有任何内容可读取为止。您可以在中看到服务器端的完整示例。相应的客户端示例位于中