I'm having trouble getting my data channel setup. I recieve a "150 ASCII data connection ..." and "226 ASCII Transfer complete" on the control channel, but don't recieve any data on the data channel. What am I doing wrong?
SOCKET data_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
server.sin_family = AF_INET;
server.sin_port = htons(DATAPORT);
server.sin_addr.s_addr = INADDR_ANY; // auto-fill with my IP
//bind
if(bind(data_socket, (struct sockaddr *)&server, sizeof(server)) == -1)
printf("bind() error\n"
;
else
cout << "bind() ok\n";
//listen
data_socket = listen(data_socket, 10);
if(data_socket == -1)
cout << "listen() error\n";
else
cout << "listen() ok\n";
//accept
namelen = sizeof(server);
SOCKET accepted_descriptor = accept(data_socket,
(struct sockaddr *) &server,
&namelen);
if (accepted_descriptor < 0)
{
cout<<"data-socket fails to connect"<<endl;
exit(accepted_descriptor);
}
else
cout << "accept() ok\n";
cout<<accepted_descriptor<<endl;
//accept_done
if (send(control_socket, "LIST\r\n", strlen("LIST\r\n"
, 0) < 0)
{
cout << "Client fails to send a message to the server.....\n";
}
if (recv(control_socket, buf, MAXBUFFER, 0) < 0)
{
cout << "Client fails to receive the message from the server successfully.....\n";
exit(status);
}
recieve_message(buf);
strcpy(buf, ""
; //clear the buffer
// Receive the message on the newly connected socket
if (recv(accepted_descriptor, buf, MAXBUFFER, 0) < 0)
{
cout <<"data-socket fails to receive the message from the server.....\n";
//exit(status);
}
else
{
cout << "data-socket receives message from the server successfully.....\n";
recieve_message(buf);
}
if (recv(control_socket, buf, MAXBUFFER, 0) < 0)
{
cout << "Client fails to receive the message from the server successfully.....\n";
exit(status);
}
recieve_message(buf);
strcpy(buf, ""
; //clear the buffer
SOCKET data_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
server.sin_family = AF_INET;
server.sin_port = htons(DATAPORT);
server.sin_addr.s_addr = INADDR_ANY; // auto-fill with my IP
//bind
if(bind(data_socket, (struct sockaddr *)&server, sizeof(server)) == -1)
printf("bind() error\n"
else
cout << "bind() ok\n";
//listen
data_socket = listen(data_socket, 10);
if(data_socket == -1)
cout << "listen() error\n";
else
cout << "listen() ok\n";
//accept
namelen = sizeof(server);
SOCKET accepted_descriptor = accept(data_socket,
(struct sockaddr *) &server,
&namelen);
if (accepted_descriptor < 0)
{
cout<<"data-socket fails to connect"<<endl;
exit(accepted_descriptor);
}
else
cout << "accept() ok\n";
cout<<accepted_descriptor<<endl;
//accept_done
if (send(control_socket, "LIST\r\n", strlen("LIST\r\n"
{
cout << "Client fails to send a message to the server.....\n";
}
if (recv(control_socket, buf, MAXBUFFER, 0) < 0)
{
cout << "Client fails to receive the message from the server successfully.....\n";
exit(status);
}
recieve_message(buf);
strcpy(buf, ""
// Receive the message on the newly connected socket
if (recv(accepted_descriptor, buf, MAXBUFFER, 0) < 0)
{
cout <<"data-socket fails to receive the message from the server.....\n";
//exit(status);
}
else
{
cout << "data-socket receives message from the server successfully.....\n";
recieve_message(buf);
}
if (recv(control_socket, buf, MAXBUFFER, 0) < 0)
{
cout << "Client fails to receive the message from the server successfully.....\n";
exit(status);
}
recieve_message(buf);
strcpy(buf, ""