欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 和 VB SOCKET 通信问题 请各位看下

程序员文章站 2024-02-19 18:28:29
...
本帖最后由 u012436313 于 2013-10-14 13:13:58 编辑

';}$result = @socket_connect($socket, $server, $port);$buf = '你好啊我';$len = strlen($buf);socket_send($socket, $buf, $len, 0);socket_close($socket);?>


Option ExplicitPrivate Sub Form_Load()    tcpServer.LocalPort = 8888    tcpServer.Listen    lblstate.Caption = "目前没有客户端连入!"End SubPrivate Sub tcpServer_ConnectionRequest(ByVal requestID As Long)    If tcpServer.State  sckClosed Then tcpServer.Close    tcpServer.Accept requestID    lblstate.Caption = "有客户端连入本机! IP:" & tcpServer.RemoteHostIPEnd SubPrivate Sub tcpServer_DataArrival(ByVal bytesTotal As Long)    Dim strData As String    tcpServer.GetData strData    txtOutput.Text = strData & vbCrLf & txtOutput.TextEnd SubPrivate 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 IfEnd Sub






第一次正常 但是 第二次刷新 PHP页面的时候出现 如下错误
Warning: socket_send() [function.socket-send]: unable to write to socket [0]: 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。 in E:\wamp\www\test\test3.php on line 19




回复讨论(解决方案)

把 @socket_connect 取消@看看是否有警告信息

把 @socket_connect 取消@看看是否有警告信息

Warning: socket_connect() [function.socket-connect]: unable to connect [0]: 由于目标计算机积极拒绝,无法连接。 in E:\wamp\www\test\test3.php on line 14Warning: socket_send() [function.socket-send]: unable to write to socket [0]: 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。 in E:\wamp\www\test\test3.php on line 19


估计是已经连接过一次了

Y
VB那边应该有关闭连接的动作,不懂VB,你自己看看

VB那边的问题。他只接受一个连接。

VB那边的问题。他只接受一个连接。

我用VB 和 VB 时间通信 连接一次就可以了

但是为什么用PHP 和 VB 通信 为什么会增多连接? 不能原连接基础上 继续发送数据吗

VB->VB creat, connect只有一次
PHP 每刷新就creat一次,所以是很多个连接

VB->VB creat, connect只有一次
PHP 每刷新就creat一次,所以是很多个连接

唉不知道这个问题如何解决

我只是想做个功能 PHP 发送后 VB 的客户端方面接收数据 并把数据保存到 TXT 中

其他都很简单 就这个连接麻烦 解决不了

刷新页面不行吧,你刷新一次等一服务器重新执行一次,应该是在后台保持长连接的


VB->VB creat, connect只有一次
PHP 每刷新就creat一次,所以是很多个连接

唉不知道这个问题如何解决

我只是想做个功能 PHP 发送后 VB 的客户端方面接收数据 并把数据保存到 TXT 中

其他都很简单 就这个连接麻烦 解决不了
这是你的设计架构。你要解决的现实问题是什么?聊天?办公?


VB->VB creat, connect只有一次
PHP 每刷新就creat一次,所以是很多个连接

唉不知道这个问题如何解决

我只是想做个功能 PHP 发送后 VB 的客户端方面接收数据 并把数据保存到 TXT 中

其他都很简单 就这个连接麻烦 解决不了
VB接收完就close连接



VB->VB creat, connect只有一次
PHP 每刷新就creat一次,所以是很多个连接

唉不知道这个问题如何解决

我只是想做个功能 PHP 发送后 VB 的客户端方面接收数据 并把数据保存到 TXT 中

其他都很简单 就这个连接麻烦 解决不了
VB接收完就close连接

Private Sub Form_Load()    winsock1.LocalPort = 8888    winsock1.ListenEnd SubPrivate Sub winsock1_ConnectionRequest(ByVal requestID As Long)    If winsock1.State  sckClosed Then winsock1.Close        winsock1.Accept requestID        Label1.Caption = "有客户端接入本机!IP:为" & winsock1.RemoteHostIPEnd SubPrivate Sub winsock1_DataArrival(ByVal bytesTotal As Long)    Dim strData As String    winsock1.GetData strData    Text1.Text = strData    winsock1.CloseEnd Sub


我已经增加了 但是还是不行

你自己看看VB书吧,感觉你是把整个socket都close了,应该只是关闭连接
socket关闭了,就是连bind/accept都废了

你自己看看VB书吧,感觉你是把整个socket都close了,应该只是关闭连接
socket关闭了,就是连bind/accept都废了

今天也在找相关书籍 但是一直没找到 唉

你自己看看VB书吧,感觉你是把整个socket都close了,应该只是关闭连接
socket关闭了,就是连bind/accept都废了

我的问题解决了

在 winsock1.Close 下面加了  重新监听 就行了winsock1.Listen