Parent Thread if 发现客户线程 then PostThreadMessage(ChildThread.ID, WM_MyMessage, Integer(MyListenSocket), 0);child Threadvar NewClientSocket: TSocket; begin while {some condition} do begin while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) case Msg.Message of My_Message: begin NewClientSocket := Msg.wParam; // how do do end; end else WaitMessage; end; end;
父线程将监听到的套接口传到子线程,子线程用一个数据类保存
if 发现客户线程 then
PostThreadMessage(ChildThread.ID, WM_MyMessage, Integer(MyListenSocket), 0);child Threadvar
NewClientSocket: TSocket;
begin
while {some condition} do
begin
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE)
case Msg.Message of
My_Message:
begin
NewClientSocket := Msg.wParam;
// how do do
end;
end
else WaitMessage;
end;
end;
就不会有WSAENOSOCK