▲▲▲ 版主,高手请进。关于用ThreadFactory创建多线程的winsock问题。

时间:2020-12-25 22:37:42
实现:
服务端收到客户端A的连接请求后,创建一个新线程,与客户端A建立连接;
服务端收到客户端B的连接请求后,创建一个新线程,与客户端B建立连接;

具体问题:(服务端部分代码)
[DLL]
Public Sub CRequest(ByVal requestID As Long)
On Error GoTo ErrorHandler:

    Form1.Winsock1_ConnectionRequest Trim(requestID)
 
Exit Sub
ErrorHandler:
    Err.Raise Err.Number, m_cClassName & "=>" & Err.Source, Err.Description
End Sub

[APP]
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)    
        Set m_oAsyncObject = New AsyncObject
        '... Specify the AutoCloseLogic
        m_oAsyncObject.AutoCloseEnabled = True
        With m_oAsyncObject.AutoCloseLogic
            .UseFreezeEvents = True
            .UseCancelObject = False
            .WaitTimeOut = 5000
            .ForceClose = True
        End With
        '... Create a clsDB object on a background thread
        m_oAsyncObject.CreateWorker "ExSocketDLL.cls"
        '... Display the thread IDs
        lblAppThreadID.Caption = " Application ThreadID: " & App.ThreadID
        lblWorkerThreadID.Caption = " cls ThreadID: " & m_oAsyncObject.ThreadID

        m_oAsyncObject.AsyncCall.Begin_CRequest requestID
End Sub



错误:DLL端总是提示“描述符不是一个套接字”错误。


各位大哥帮帮忙,欢迎大家提意见及解决方法。来者有分,不够再加!!!!

(不能用动态挂载Winsock控件的方法)

13 个解决方案

#1


能不能把dll端的代码全部贴出来?

#2


这个基本上就是全部的代码了。DLL端有个Form1,Form1中有个Winsock1

#3


版主老大,帮帮忙。

#4


非要用多线程解决这个问题吗  不用多线程也能解决多客户端的问题啊  我也明听说 vb能做出稳定的多线程

#5


zyg0大哥:
“不用多线程也能解决多客户端的问题啊”
如何解决?动态的挂载Winsock控件吗?


#6


#7


#8


#9


再顶

#10


再再顶

#11


事实上
你不用自己创建线程的
因为winsock在有动作的时候会自动创建一条线程的
如果你的线程仅仅是为了连接,就多此一举了

#12


一个连接创建一个线程是为了实现多客户端的异步连接

#13


连接怎么个"异步"法...

#1


能不能把dll端的代码全部贴出来?

#2


这个基本上就是全部的代码了。DLL端有个Form1,Form1中有个Winsock1

#3


版主老大,帮帮忙。

#4


非要用多线程解决这个问题吗  不用多线程也能解决多客户端的问题啊  我也明听说 vb能做出稳定的多线程

#5


zyg0大哥:
“不用多线程也能解决多客户端的问题啊”
如何解决?动态的挂载Winsock控件吗?


#6


#7


#8


#9


再顶

#10


再再顶

#11


事实上
你不用自己创建线程的
因为winsock在有动作的时候会自动创建一条线程的
如果你的线程仅仅是为了连接,就多此一举了

#12


一个连接创建一个线程是为了实现多客户端的异步连接

#13


连接怎么个"异步"法...