vb与php进行socket通信遇到的问题

vb代码和php代码进行socket通信时,发现php的socket_read函数总是取不到数据。查找了一些资料才发现,是VB socket 发送数据时必须要加上 chr(13)+chr(10),再就是不能缺少:DoEvents  才能在php端接收到数据。

VB代码

Private Sub Form_Load()
Tcpserver.LocalPort = 8000
   'Tcpserver.Bind
    Tcpserver.Listen    
    Label1.Caption = "目前没有客户端连入!"
End Sub


Private Sub Form_unload(Cancel As Integer)
Tcpserver.Close
End Sub


Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
    If Tcpserver.State <> sckClosed Then Tcpserver.Close
    Tcpserver.Accept requestID
    Label1.Caption = "有客户端连入本机! IP:" & Tcpserver.RemoteHostIP
End Sub
 
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    Tcpserver.GetData strData
   
    Text1.Text = Text1.Text & strData & vbCrLf
    Tcpserver.SendData "1服务器说:" + Chr(13) + Chr(10)
    Tcpserver.SendData "2服务器说:" + Chr(13) + Chr(10)
    'Tcpserver.SendData Chr(13) & Chr(10)
    DoEvents
    Tcpserver.Close    
    Tcpserver.Listen    
End Sub
 
 
Private Sub txtSendData_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        If Tcpserver.State = sckConnected Then
            Tcpserver.SendData "服务器说:" & txtSendData.Text
            txtOutput.Text = "服务器说" & txtSendData.Text & vbCrLf & txtOutput.Text
            txtSendData.Text = ""
        Else
            MsgBox "目前没有连接的客户端!"
        End If
    End If
End Sub


php代码

<?php

error_reporting(E_ALL);
set_time_limit(0);
$port=8000;
$ip="192.168.1.110";
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if($socket<0)
{echo "socket_create() failed: reason: ".socket_strerror(socket_last_error($socket));}
else
{echo "OK.<br>";}
echo "try to connect '$ip' port is '$port' ...<br>";
$result=socket_connect($socket,$ip,$port);
if($result < 0)
{echo "socket_connect()failed: reason:".socket_strerror(socket_last_error($socket))."\n";}
else
{echo "connect ok!<br>";}
$in="Ho\r\n";
$in.="first blood \r\n";
$out='';
if(!socket_write($socket,$in,strlen($in)))
{echo "socket_write() failed: reason:".socket_strerror(socket_last_error($socket))."\r\n";}
else
{echo "send message to server success!<br>";
echo "the content of send message is:<font color='red'>$in</font><br>";
}


while ($buffer = @socket_read($socket, 1024, PHP_NORMAL_READ)) 

    if (preg_match("/not connect/",$buffer)) { 
        echo "don`t connect\n"; 
        break; 
    } else { 
        //服务端传来的信息 
        echo "Buffer Data: " . $buffer . "<br>"; 
        echo "Writing to Socket<br>"; 
}
}
echo "close socket....<br>";
socket_close($socket);
echo "close ok \n";

?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值