Mar*_*ett 2 .net c# sockets vb.net
我在这里很密集吗?StreamReader.ReadLine声明:
一行被定义为一个字符序列,后跟一个换行符("\n"),一个回车符("\ r")或一个回车符后面紧跟一个换行符("\ r \n")
那么,为什么这不能按预期工作呢?
' Server
Dim tcpL as New TcpListener(IPAddress.Any, 5000)
tcpL.Start(1)
Using tcpC as TcpClient = tcpL.AcceptTcpClient(), _
s as NetworkStream = tcpC.GetStream(), _
sr as New StreamReader(s, System.Text.Encoding.ASCII, True)
Dim message As String = sr.ReadLine()
Console.WriteLine(message)
End Using
Console.ReadLine()
' Client
Using tcpC as New TcpClient()
tcpC.Connect(IPAddress.Loopback, 5000)
Using s as NetworkStream = tcpC.GetStream(), _
sw as New StreamWriter(s, System.Text.Encoding.ASCII)
sw.AutoFlush = True
sw.Write("Hello there!")
sw.Write(vbCR) ' Note the CR terminator
Console.ReadLine()
End Using
End Using
Run Code Online (Sandbox Code Playgroud)
ReadLine即使发送了CR ,服务器也不会在断开连接之前返回.如果我改为a vbLF,或者vbCRLF它会按预期返回.
文档是错误的,还是我搞砸了什么......?
Jon*_*eet 12
ReadLine正在等着看下一个角色是什么.如果它是换行符,它想要吞下它.如果你给作家写任何其他字符,那也会使它返回该行.
这是对线路终结器的历史混淆的一个不幸的必然结果.TextReader记住它需要潜在地吞下它读取的下一个字符(并立即返回该行)可能更有意义,但这就是生命.
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |