我试图打印发送到端口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:执行后应用程序崩溃
答案 0 :(得分:1)
:
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是面向连接的。
答案 1 :(得分:0)
如果其他部分正在发送字符串(不是无法转换为字符串的二进制数据),那么您可以尝试
var s = new StreamReader(new NetworkStream(S));
s.Readline();
s.ReadToEnd(); //OR