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

php中文网
发布: 2016-06-23 14:24:05
原创
1223人浏览过

本帖最后由 u012436313 于 2013-10-14 13:13:58 编辑



<?php$server = '127.0.0.1';$port = 8888;$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if($socket < 0) {	echo socket_strerror($socket);} else {	echo '成功<br />';}$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
登录后复制

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号