Подскажите пожалуйста. Есть программа которая открывает сокет (открыт постоянно пока запущена программа) Как сделать так чтоб сокет продолжал висеть открытым и в тоже время выполнять другой кусок кода в цикле. (например выводить Hello World каждую минуту)
Pavia как я понял он синхронный режим юзает. Да вообще задача поставлена так что можно что угодно отвечать.
Я немного профан в асме, но потиху учусь. Сейчас попробую расписать задачу. есть Код (Text): MainProxy proc LOCAL sckbind : DWORD LOCAL saddr : sockaddr_in LOCAL wdata : WSADATA LOCAL sockver : DWORD LOCAL port : DWORD ;LOCAL cout, cin : DWORD LOCAL written : DWORD LOCAL thrdID : DWORD mov cin, eax .if ZERO? call GetIParam .endif mov port, 5777 mov sockver, 0202h invoke WSAStartup, sockver, ADDR wdata invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP mov sckbind, eax .if sckbind == INVALID_SOCKET jmp @UnErr .endif mov saddr.sin_family, PF_INET invoke htons, port mov saddr.sin_port, ax mov saddr.sin_addr.S_un.S_addr, INADDR_ANY mov saddr.sin_zero, 0 mov [saddr.sin_zero + 4], 0 invoke bind, sckbind, ADDR saddr, sizeof sockaddr_in .if eax != 0 .endif invoke listen, sckbind, SOMAXCONN .if eax == 0 .else jmp @UnErr .endif @MainCycle: invoke accept, sckbind, NULL, NULL mov ebx, eax invoke CreateThread, NULL, 0, ClientWork, ebx, 0, ADDR thrdID jmp @MainCycle ; Next Client or Requiest @UnErr: ret MainProxy endp и есть Код (Text): go proc тут например вывод сообщения go endp MainProxy главная. Надо чтоб из нее был вызов go причем в цикле (например каждую минуту) Вот какая стоит задача. У меня не получается сооброзить как это сделать. если передаю управление go то сокет перестает отвечать.
1)Выводить надпись в другом потоке. 2) Использоваь WSA sockets, делать в циклу SleepEx( TIME_OUT , TRUE) + печать на экран.
Как? Вроде и используется WSA sockets и если я использую на процедуре go Sleep то выполняется она а сокет падает. П.С. Просьба не давать просто доводы и теории, все равно не пойму. Может ктонибуть привести примерный рабочий код? или дать ссылку где это есть.