C/C++ >> Bizare Problems
Posted by jjthebear on 08:02:00 03-24-2003
For some reason, my program is skipping ahead in operation. Does anybody know why? My program starts off by getting input, but before I can finish typing in the last item of input, it races off ahead of the current operation and I get errors. The only thing I can think of is some strange memory leak, but then again I doubt this would be able to so consistantly disturb my program. I've tried using cin/cout, printf/scanf, printf/cin, cout/scanf.

This is totally wack
Posted by dxprog on 08:44:00 03-24-2003
The actual code would be a help. [addsig]
Posted by jjthebear on 12:02:00 03-24-2003
Not sure if you can handle this but...

Code:
#include "stdafx.h"
#include <windows.h>
#include <winsock.h>
#include <iostream.h>

int main(int argc, char* argv[])
{

short int portNumber;
char address[16];
char message[128];

cout << "Hello and welcome to Jeff Jensen's first sockets test!nPlease input a host" << endl;
cin >> address;

cout << "Please input a port number." << endl;
cin >> portNumber;

cout << "Give me a message!" << endl;
cin >> message;

char returnedBuffer[100];
HOSTENT *host = NULL;

WSADATA wsadata;
if(WSAStartup(MAKEWORD(1, 1), &wsadata)!=0) {
MessageBox(NULL, TEXT("WSAStartup failed!"), TEXT("Error"), MB_OK);
return 0;
}

SOCKET mySocket;
SOCKADDR_IN sockAddress;
memset(&mySocket, NULL, sizeof(SOCKET));
memset(&sockAddress, NULL, sizeof(SOCKADDR_IN));
mySocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

if(mySocket == SOCKET_ERROR) {
MessageBox(NULL, TEXT("socket(AF_INET, SOCK_STREAM, IPPROTO_IP) FAILED"), TEXT("Error"), MB_OK);
return 0;
}

if(portNumber<0 || portNumber>65536) {
MessageBox(NULL, TEXT("BAD PORT NUMBER GIVEN!"), TEXT("ERROR"), MB_OK);
return 0;
}

sockAddress.sin_family = AF_INET;
sockAddress.sin_port = htons(portNumber);
sockAddress.sin_addr.S_un.S_addr = inet_addr(address);
memset(&sockAddress.sin_zero, 0, ;

if(sockAddress.sin_addr.S_un.S_addr == INADDR_NONE) {
printf("Finding host...n");
host = gethostbyname(&address[0]);
if(host==NULL) {
MessageBox(NULL, TEXT("Unresolveable host name, sorry!"), TEXT("Error"), MB_OK);
return 0;
}
else {
memcpy(&sockAddress.sin_addr.S_un.S_addr, host->h_addr_list[0], host->h_length);
printf("Resolved the host!n");
}
}

if(connect(mySocket, (sockaddr *)&sockAddress, sizeof(sockAddress))!=0) {
MessageBox(NULL, TEXT("connect(mySocket, (sockaddr *)&sockAddress, sizeof(sockAddress)) failed!"), TEXT("Error"), MB_OK);
return 0;
}

printf("Connection made! Congratulations...n");

printf("%d bytes sent successfullyn", send(mySocket, &message[0], 127, 0));

recv(mySocket, &returnedBuffer[0], 100, 0);

printf("RETURNED DATA:n %sn", returnedBuffer);

if(closesocket(mySocket)!=0) {
MessageBox(NULL, TEXT("closesocket(mySocket) FAILED!"), TEXT("Error"), MB_OK);
return 0;
}

if(WSACleanup()!=0) {
MessageBox(NULL, TEXT("WSACleanup failed!"), TEXT("Error"), MB_OK);
return 0;
}
return 0;
}


Posted by jjthebear on 12:04:00 03-24-2003
There should never be a situation where a program skips over an incomplete function unless there's multithreading going on. Am I right in my assumption?