socket编程.
可以做成很多client端来对server进行文件传送和取回么?
我做了一个程序,害怕多client操作时,server会造成混乱.
能否给个server的例子?或者有哪些注意?谢谢!我清楚了就结贴!!!1
可以做成很多client端来对server进行文件传送和取回么?
我做了一个程序,害怕多client操作时,server会造成混乱.
能否给个server的例子?或者有哪些注意?谢谢!我清楚了就结贴!!!1
解决方案 »
- 在VB中怎么样才能实现误操作后的撤销返回功能?
- Abs(Boolean)
- 高分探讨:QQ、MSN的上线、离开等基理
- 关于制作*.chm联机帮助文件的软件!
- !!!急,winsock控件发送消息出错
- 请教怎么读取doc文档中的文本?
- ACCESS数据库update(更新)的问题?见下面:(马上结帖)
- 00000000插件是怎么做成的?欢迎大家讨论:)000000000
- 如何得到当前毫秒级的系统时间~!?马上给分
- 如何使vb写的控件在delphi中使用(可能有点难)
- 想买一个访客管理系统,要求给源代码
- 如何用VB画单柱图???????????????????????????能给多少分给多少!!我着急!!!!!谢谢
For i = 1 To 300
If MArr(i, 0) = "" Then
pi = i
bi = True
Exit For
End If
Next i If bi = True Then
MArr(pi, 0) = sckMain(0).RemoteHostIP
Load sckMain(pi)
sckMain(pi).LocalPort = 10000 + pi
sckMain(pi).Accept requestID
Else
'Debug.Print "客户端连接已满"
sckMain(pi).SendData "mainf"
End If
End IfEnd Sub这个就是,虽然我说的第一种情况可以运行,并没问题.但是我查看每次有新的client连接时,pi的值都是取得最后一次计算过的.
如果send数据过来,sckMain的数租的值是一个,我怕会混乱.
MArr(pi, 0) = sckMain(0).RemoteHostIP
Load sckMain(pi)
sckMain(pi).LocalPort = 10000 + pi
sckMain(pi).Accept requestID
Else怎么回事,在加载sckMain(pi)前设置MArr(pi, 0) = sckMain(0).RemoteHostIP是干什么
记录S的地址到数组的第一维吗?好象没这个必要如果应该是
MArr(pi, 0) = sckMain(pi).RemoteHostIP
那么就应该放在
Load sckMain(pi)
后面。
没大看明白楼主的代码,商用啊?
Dim i As Byte
i = getfreesock()'取得可以用的WINSOCK下标。
If i > 0 Then socktcpserver(i).Accept requestID
End Sub这是很久前写的一个联系程序,用一个WINSOCK监听,其他动态WINSOCK负责连接,不需要其他操作。
Load ssck2(requestID)'load一个winsck数组,以这个requestID为参数ssck2(requestID).RemoteHost = ssck1(0).RemoteHostIP'然后远程主机=第一个监听控件取得的ip
ssck2(requestID).remoteport = ssck1(0).remoteport'同理
ssck2(requestID).Accept requestID'然后连接在这个ssck2的DataArrival中,我改了一下Private Sub ssck2_DataArrival(getid As Integer, ByVal bytesTotal As Long)
Dim a As String, b As String
ssck2(getid).GetData a
Text1.Text = a
End Sub这样可以么?这样服务器端的socket就相应地接收每个客户端发送过来的信息.可以么?如果做其它复杂的动作,也一样可以么?肯定各位高手鉴定!!!!!!!!!!!!!!!!!!!!!!!!!!!明天继续讨论,谢谢大家
这个requestID是ConnectionRequest的来的参数.当时我的想法也挺奇怪,把index换成requestID后,我都不知道当时是怎么想的.但是这样,在DataArrival当中,每次接到client的socket发送的数据,server端的socket数组都是正确的进行操作.'///////////////////////////////////client的代码
Private Sub Form_Load()
csck1.RemoteHost = "127.0.0.1"
csck1.RemotePort = 7000
csck1.Connect
End SubPrivate Sub Text1_Change()
csck1.SendData Text1.Text
End Sub'server端的代码///////////////////////////////////
Dim getid As LongPrivate Sub Form_Load()ssck1.LocalPort = 7000
ssck1.ListenEnd SubPrivate Sub ssck1_ConnectionRequest(ByVal requestId As Long)
getid = requestIdLoad ssck2(requestId)ssck2(requestId).RemoteHost = ssck1.RemoteHostIP '然后远程主机=第一个监听控件取得的ip
ssck2(requestId).RemotePort = ssck1.RemotePort '同理
ssck2(requestId).Accept requestId '然后连接End SubPrivate Sub ssck2_Close(getid As Integer)
ssck2(getid).Close
End SubPrivate Sub ssck2_DataArrival(getid As Integer, ByVal bytesTotal As Long)
Dim a As Stringssck2(getid).GetData a
Text1.Text = a
End Sub
请问of123(),为什么无法同时处理多个客户的请求呢?那怎样编才可以?服务器端我做的功能是保存接收到的文件,还有发送给客户端文件.客户端大概有1~200人访问,也许有很多人同时访问?如果要解决你说的问题,应该怎样解决呢?