Вы должны знать, что все сетевые операции являются потенциально трудоемкими операциями. Теперь, так как вы используете класс MFC CAsyncSocket
, он выполняет все операции асинхронно (не блокирует вас). Но возврат из функции не означает, что она уже завершена.
Давайте посмотрим на следующие строки кода:
socket.Connect("127.0.0.1",1234);
socket.Send(temp,strlen(temp)); //this should be sending the initial message
Первый - это вызов Connect
, который, скорее всего, не завершается немедленно.
Затем вы звоните Send
, но ваш сокет еще не подключен! Он определенно возвращает вам код ошибки, но так как вы не проверяете его возвращаемое значение - вы просто счастливо ждете, чтобы что-то получить.
Итак, следующее правило для вас, мой друг, должно проверять каждые возвращаемое значение для каждой функции, которую вы вызываете, особенно когда речь идет о сети, где ошибки допустимы и часто происходят.
Отправлять сообщения следует только после вызова OnConnect
.