im 尝试打印发送到端口 2000 的信息,但我得到的只是"System.Net.Sockets.NetworkStream"。 有没有办法将流转换为字符串? 或者一种直接打印流信息的方法。
static void Main(string[] args)
{
while (true)
{
TcpListener TL = new TcpListener(IPAddress.Any, 2000);
TL.Start();
Socket S = TL.AcceptSocket();
Stream SS = new NetworkStream(S);
string MSG = SS.ToString();
Console.WriteLine(MSG);
}
}
编辑:这是客户端
static void Main(string[] args)
{
try
{
TcpClient TC = new TcpClient();
TC.Connect("XXX.XXX.XXX.XXX", 2000);
NetworkStream Writer = TC.GetStream();
string MSG = Console.ReadLine();
byte[] pack = Encoding.ASCII.GetBytes(MSG);
Writer.Write(pack, 0, pack.Length);
Writer.Flush();
}
catch
{
Console.WriteLine(" faild");
Console.ReadLine();
}
}
PS:执行后应用程序也会崩溃
在你的
代码中:
SS.ToString();
将始终返回 System.Net.Sockets.NetworkStream
! 由于ToString()
函数返回表示当前对象的字符串,因此您可以使用StreamReader
从流中读取一行。
Stream SS = new NetworkStream(S);
StreamReader reader = new StreamReader(SS);
string MSG = reader.ReadLine();
Console.WriteLine(MSG);
当然,您应该在客户端之前运行服务器程序,因为TCP是面向连接的。
如果另一部分正在发送字符串(不是无法转换为字符串的二进制数据),那么您可以尝试
var s = new StreamReader(new NetworkStream(S));
s.Readline();
s.ReadToEnd(); //OR