none
TCP/IP 接收16進制 疑問 RRS feed

  • 問題

  • Imports System.Net.Sockets
    Imports System.Threading
    Imports System.Net
    Imports System.Text

    Public Class Form1
        Dim intPort As Integer = 0
        Dim myTcpListener As TcpListener = Nothing
        Dim myNetworkStream As NetworkStream = Nothing

        Private Sub StartListen()
            Label.CheckForIllegalCrossThreadCalls = False
            TextBox.CheckForIllegalCrossThreadCalls = False
            intPort = Integer.Parse(txtPort.Text)
            myTcpListener = New TcpListener(IPAddress.Any, intPort)
            Try
                myTcpListener.Start()
                lblMessage.Text = "等待連線中 ……"
                Dim mySocket As Socket = myTcpListener.AcceptSocket()
                Do
                    If mySocket.Connected = True Then
                        lblMessage.Text = "通訊埠 " + txtPort.Text & " 連線成功"
                        myNetworkStream = New NetworkStream(mySocket)
                        Do
                            Dim strContent As String = Nothing
                            Dim myByte As Byte() = New Byte(1024) {}
                            Dim lngRead As Integer =
                                myNetworkStream.Read(myByte, 0, 1024)
                            If lngRead < 0 Then
                                Exit Do
                            End If
                            strContent = Encoding.[Default].GetString(myByte)
                            txtContent.Text += strContent
                        Loop While True
                    End If

                Loop While True
            Catch ex As SocketException
                MessageBox.Show(ex.Message, "開啟連接錯誤",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End Try
        End Sub
        Private Sub btnListener_Click(ByVal sender As System.Object,
            ByVal e As System.EventArgs) Handles btnListener.Click
            Dim myThread As New Thread(New ThreadStart(AddressOf StartListen))
            myThread.Start()
        End Sub

        Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
            myTcpListener.Stop()
        End Sub

        Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
            Dim strTest As String = txtContent.Text
            Dim myBytes As Byte() = Encoding.[Default].GetBytes(strTest)
            lblMessage.Text = ("建立網路串流,將字串寫入串流 !!")
            myNetworkStream.Write(myBytes, 0, myBytes.Length)
        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            txtPort.Text = 8080
        End Sub
    End Class

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------

    各位前輩 我這是 TCP 的 sever端 目前接都到都是顯示 ASCII  

    因為 我的Client 是傳送16進制的 所以 我想將程式改成 顯示 16進制 而不是ASCII

    請問該如何下手 謝謝

    2013年2月24日 下午 01:35

解答

  • 電腦所有的 IO 都是以 Byte 為單位。包含硬碟、SerialPort、Socket ,進制是給人看的,跟電腦傳輸無關。

    所以你只要管

    Byte.ToString("X2")

    如何應用。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    • 已標示為解答 black_NERO 2013年2月25日 上午 03:20
    2013年2月24日 下午 02:29

所有回覆

  • 電腦所有的 IO 都是以 Byte 為單位。包含硬碟、SerialPort、Socket ,進制是給人看的,跟電腦傳輸無關。

    所以你只要管

    Byte.ToString("X2")

    如何應用。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    • 已標示為解答 black_NERO 2013年2月25日 上午 03:20
    2013年2月24日 下午 02:29
  • 謝謝!  我領會了
    2013年2月25日 上午 03:20