0
네트워크 스트림을 통해 쓰려고하면 문제가 발생합니다.TCP 네트워크 스트림을 통해 쓸 수 없음
여기에서이 버튼을 누르면 TCP 스트림에 성공적으로 쓸 수 있으며 프로그램의 다른 부분이 데이터를 수신합니다.
Dim ClientSocket As TcpClient
Private Sub btnConnect_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles btnConnect.MouseClick
ClientSocket = New TcpClient
ClientSocket.Connect(frmNetworkSettings.txtServerIPAddress.Text, CInt(frmNetworkSettings.txtFileSharingPort.Text))
Dim NetworkStream As NetworkStream = ClientSocket.GetStream()
If NetworkStream.CanRead And NetworkStream.CanWrite Then
Dim SentData As Byte()
SentData = Encoding.ASCII.GetBytes(Username & Chr(32) & "is connected." & Environment.NewLine)
NetworkStream.Write(SentData, 0, SentData.Length())
NetworkStream.Flush()
End If
End Sub
하지만 아래의 버튼을 누르면, 상기 버튼을 누르면, I는 TCP 네트워크 스트림으로 기록 할 수 있고 네트워크상의 다른 프로그램에 데이터를 수신하지 않는다.
Private Sub btnDisconnect_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles btnDisconnect.MouseClick
Dim NetworkStream As NetworkStream = ClientSocket.GetStream()
If NetworkStream.CanRead And NetworkStream.CanWrite Then
Dim SentData As Byte()
SentData = Encoding.ASCII.GetBytes(Username & Chr(32) & "is disconnected." & Environment.NewLine)
NetworkStream.Write(SentData, 0, SentData.Length())
NetworkStream.Flush()
End If
End Sub
추가 상세 사항 :
이 다른 프로그램의 데이터를받는 부분입니다.
Private Sub ConnectionTimer_Tick(sender As Object, e As System.EventArgs) Handles ConnectionTimer.Tick
Try
If Listener.Pending Then
ClientSocket = Listener.AcceptTcpClient
Dim ByteData(ClientSocket.ReceiveBufferSize) As Byte
Dim NetworkStream As NetworkStream = ClientSocket.GetStream
Dim LogMessage As String = String.Empty
NetworkStream.Read(ByteData, 0, CInt(ClientSocket.ReceiveBufferSize))
LogMessage = Encoding.ASCII.GetString(ByteData)
DisplayLogMessage(LogMessage)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
미리 감사드립니다.
어떤 오류가 발생합니까? 스택 추적은 무엇입니까? –
오류는 없습니다. 단지 데이터를 전송하지 않습니다. 데이터를 받으면 다른 프로그램에서 문자열을 검사했지만 그렇지는 않습니다. –
디버거를 사용하여 코드를 입력했는지 확인 했습니까? 또한 Write의 반환 값을 확인하지 않고 있어야합니다. 그리고 NetworkStream.Flush는 아무 것도하지 않으므로 제거해야합니다. – tcarvin