加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 08:13:29 所属栏目:百科 来源:网络整理
导读:vb代码和php代码进行socket通信时,发现php的socket_read函数总是取不到数据。查找了一些资料才发现,是VB socket 发送数据时必须要加上 chr(13)+chr(10),再就是不能缺少:DoEvents 才能在php端接收到数据。 VB代码 Private Sub Form_Load() Tcpserver.Loca

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="Horn";
$in.="first blood rn";
$out='';
if(!socket_write($socket,$in,strlen($in)))
{echo "socket_write() failed: reason:".socket_strerror(socket_last_error($socket))."rn";}
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 connectn";
break;
} else {
//服务端传来的信息
echo "Buffer Data: " . $buffer . "<br>";
echo "Writing to Socket<br>";
}
}
echo "close socket....<br>";
socket_close($socket);
echo "close ok n";

?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读