设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
VB 和 PHP SOCKET 通信问题 请各位帮忙看看 ...
返回列表
发新帖
VB 和 PHP SOCKET 通信问题 请各位帮忙看看
[复制链接]
11
|
7
|
2021-1-27 07:11:35
|
显示全部楼层
|
阅读模式
OptionExplicit
PrivateSubForm_Load()
tcpServer.LocalPort=8888
tcpServer.Listen
lblstate.Caption="目前没有客户端连入!"
EndSub
PrivateSubtcpServer_ConnectionRequest(ByValrequestIDAsLong)
IftcpServer.StatesckClosedThentcpServer.Close
tcpServer.AcceptrequestID
lblstate.Caption="有客户端连入本机!IP:"&tcpServer.RemoteHostIP
EndSub
PrivateSubtcpServer_DataArrival(ByValbytesTotalAsLong)
DimstrDataAsString
tcpServer.GetDatastrData
txtOutput.Text=strData&vbCrLf&txtOutput.Text
EndSub
PrivateSubtxtSendData_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
IftcpServer.State=sckConnectedThen
tcpServer.SendData"服务器说:"&txtSendData.Text
txtOutput.Text="服务器说"&txtSendData.Text&vbCrLf&txtOutput.Text
txtSendData.Text=""
Else
MsgBox"目前没有连接的客户端!"
EndIf
EndIf
EndSub
第一次正常但是第二次刷新PHP页面的时候出现如下错误Warning:socket_send()[function.socket-send]:unabletowritetosocket[0]:由于套接字没有连接并且(当使用一个sendto调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。inE:\wamp\www\test\test3.phponline19
有时候VB会出现这样的错误
分 -->
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
很显然,你这个服务端代码只能支持一个客户端连接一次,所以必然会出现这个结果,建议你还是另找个Winsock多客户端通讯方面的例子看看吧,不是一句两句能解释清楚的。
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
我觉得,应该是你的PHP刷新时,它是把先的连接断开,重新创建连接的。
而你的VB程序那儿,只支持一个连接;
PHP刷新造成连接断开时,你的tcpServer并没有断开(VB端应该是不会接到通知的吧),因此不能接受新的连接请求。
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
引用2楼Chen8013的回复:
我觉得,应该是你的PHP刷新时,它是把先的连接断开,重新创建连接的。
而你的VB程序那儿,只支持一个连接;
PHP刷新造成连接断开时,你的tcpServer并没有断开(VB端应该是不会接到通知的吧),因此不能接受新的连接请求。
PrivateSubForm_Load()
winsock1.LocalPort=8888
winsock1.Listen
EndSub
PrivateSubwinsock1_ConnectionRequest(ByValrequestIDAsLong)
Ifwinsock1.StatesckClosedThenwinsock1.Close
winsock1.AcceptrequestID
Label1.Caption="有客户端接入本机!IP:为"&winsock1.RemoteHostIP
EndSub
PrivateSubwinsock1_DataArrival(ByValbytesTotalAsLong)
DimstrDataAsString
winsock1.GetDatastrData
Text1.Text=strData
winsock1.Close
EndSub
我已经增加了close但是好像还是不行
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
引用1楼CityBird的回复:
很显然,你这个服务端代码只能支持一个客户端连接一次,所以必然会出现这个结果,建议你还是另找个Winsock多客户端通讯方面的例子看看吧,不是一句两句能解释清楚的。
引用2楼Chen8013的回复:
我觉得,应该是你的PHP刷新时,它是把先的连接断开,重新创建连接的。
而你的VB程序那儿,只支持一个连接;
PHP刷新造成连接断开时,你的tcpServer并没有断开(VB端应该是不会接到通知的吧),因此不能接受新的连接请求。
我的问题解决了
在winsock1.Close下面加了重新监听就行了
winsock1.Listen
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
看来我还是猜对原因了。
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
虽然加上Winsock1.Listen进行重新监听,但是依然只能接受一个客户端,如果再开个新页面马上就该出错了!
回复
使用道具
举报
千问
|
2021-1-27 07:11:35
|
显示全部楼层
引用6楼CityBird的回复:
虽然加上Winsock1.Listen进行重新监听,但是依然只能接受一个客户端,如果再开个新页面马上就该出错了!
他的设计,看样子只能接受一个连接的。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行