두 응용 프로그램간에 텍스트 데이터를 보내도록하는 데 문제가 있습니다. 메시지는 문제없이 전송되며 응답도 수신됩니다. 그러나 각 측면에서 송수신되는 문자열의 끝에는 "New line"문자가 많이 있습니다. 전체 버퍼를 읽고 있기 때문에 그럴 것 같습니다. Chr (10)과 Chr (13)을 모두 제거하려고했습니다. 나는 또한 문자열을 자르려고했으나 효과가 없었습니다. VB.Net의 TCP 소켓을 사용하는 응용 프로그램 간의 텍스트 통신
다음은 코드 내가 사용클라이언트 측 :
Dim cl As New TcpClient
cl.Connect("127.0.0.1", 2000)
Dim str As NetworkStream = cl.GetStream
Dim HelloInBytes As Byte() = Encoding.UTF8.GetBytes("Hello")
str.Write(HelloInBytes, 0, HelloInBytes.Length)
Dim Buffer(cl.ReceiveBufferSize) As Byte
str.Read(Buffer, 0, cl.ReceiveBufferSize)
Console.WriteLine(Encoding.UTF8.GetChars(Buffer))
서버 측 :
Dim srv As New TcpListener(IPAddress.Any, 2000)
srv.Start()
Dim cl As TcpClient = srv.AcceptTcpClient
Dim str As NetworkStream = cl.GetStream
Dim buf(cl.ReceiveBufferSize) As Byte
str.Read(buf, 0, cl.ReceiveBufferSize)
Dim res As Byte() = Encoding.UTF8.GetBytes("World")
str.Write(res, 0, res.Length)
방법을 "깨끗한"수신 된 문자열이된다?
도움 주셔서 감사합니다.
편집 : 해결책 : 하즐 솔루션과 함께 작동합니다. I는 수신 된 문자열에이 기능을 사용하는 다른 해결책을 발견 :
Public Function CleanString(ByRef Str As String)
Return Str.Replace(Encoding.UTF8.GetChars({0, 0, 0, 0}), Nothing)
End Function
UTF8은 4 바이트에서 작동, 및 I 스트림을 읽고 난, 버퍼에 넣어 때 어떤 문자는 존재하지 않는 경우 4 바이트는 0 값을 유지합니다.
awnser에 감사하지만 작동하지 않았습니다. 양쪽에 추가했습니다. 그러나 많은 "NewLine"이 여전히 남아 있습니다. 아이디어가 있으십니까? –
수정 된 답변보기 – Jaxedin