php在回车时从socket_receive拆分数据,然后管道

时间:2015-11-21 11:03:38

标签: php vb.net

我有来自php socket_receive函数的somme数据,它是这样的:

ZC* |000195000000B5D0|0000|PTv1.11|ZE20S|ProBee-ZE ZR |000195000000920A|A4C0|PTv1.11|ZE20S|ProBee-ZE OK

从这个我只需要像这种形式的mac地址:“000195000000B5D0”

  • 我想在回车\ r \ n时爆炸整个消息,然后在每一行再次分裂|并将地址插入数据库行。

我正在尝试使用此代码:

<?php
           $out = socket_recv($socket, $buf, 2048, MSG_WAITALL);
            echo "<br>MESAJ=".$buf;
            $row=preg_split('#(\r\n|[\|])#', $buf);
            print_r($row);
?>

在以前的桌面应用程序中的vb.net 我正在使用此代码。

  Private Sub SalveazaData()
          Dim list As String() = rtbComData.Text.Split(Environment.NewLine.ToCharArray())

           For Each Row As String In list
        If Not (Row = "AT+DSCAN=10,2" Or Row = "OK" Or Row = "") Then
            Dim s As String() = Split(Row, "|")
            Dim aRow As smdDataDataSet1.smdTableRow = SmdDataDataSet1.smdTable.NewsmdTableRow()
            aRow.Model = "SCL-50"
            aRow.AdresaUnica = s(1)
            aRow.StatusModul = "ACTIVE"

            Try
                SmdDataDataSet1.SearchAdrese.Rows.Add(s(1))
                SmdDataDataSet1.smdTable.Rows.Add(aRow)
            Catch ex As Exception
                Dim u As String
                u = SmdTableTableAdapter.UpdateInactivActiv()
            End Try
        End If
    Next


End Sub

你能帮我解决这个问题吗?谢谢

  • 数据很长,有数百个地址但是使用这个代码我会在回车时进行拆分\ n \ r:

    MESAJ FROM =“。$ buf;     $ row = explode(“\ r \ n”,$ buf);     echo“
    ROW =”。$ row [0];     echo“
    ROW =”。$ row [1]; ?&GT;

    我收到这样的消息:

    1. ROW = ZC * | 000195000000B5D0 | 0000 | PTv1.11 | ZE20S | ProBee-ZE
    2. ROW = ZR | 000195000000920A | A4C0 | PTv1.11 | ZE20S | ProBee-ZE
    3. 现在我只需要从数据库的每一行保存| 000195000000B5D0 |(地址)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我用这段代码来回答我的问题

// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to IP\n");

//send data to connected socket
 socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
 echo "<br>MESAJ TO :".$message;

 // get server response
$out='';
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>10, "usec"=>0));


    $out = socket_recv($socket, $buf, 2048, MSG_WAITALL);
    echo "<br>MESAJ FROM=".$buf;
    $row=explode("\r\n", $buf);
    echo "<br>ROW=".$row[0];
    echo "<br>ROW=".$row[1];
    foreach ($row as &$s) {
        $s = explode("|",$s);
    echo $s[0];
    echo $s[1];
    echo $s[2];
    $adresaUnica=$s[1];
        if(mysql_query("INSERT INTO `griddata`(`adresaUnica`, `status`, `model`) VALUES ('$adresaUnica','Activ','SCL-50')"))
{
}

            }


    socket_close($socket);

} ?&GT;