Hey all,
I'm trying to create a TCP client app and TCP server app using C (sockets w/ linux and winsock with windows)
I think I have the opening/closing sockets part down for both apps. The problem I'm facing is figuring out how to send and receive the data. The info to be sent is a series of ever changing number values. To emulate what I'd actually need I was thinking I could create an endless loop that sent random number data (client end) to the server. Right now I'm only trying to send individual strings typed in by the user...however, I don't think I have a good idea of how to really put the data into a buffer to send and receive it.
Also really quick question... whenever I call accept(), subsequent terminal output becomes all weird. I need to specify a newline before and after each statement I printf or wierd stuff happens. Namely, I'll get a newline but no text. Any ideas why?
It'd be awesome if someone can help me create a skeleton for send/recv or give me a conceptual description of how to set up send/rcv for my situation. The code I've attached is for rx and tx (only the relevant portion of the application's code)... let me know if the rest is necessary.
Code://from client app (winsock) //____________________________________________ // SEND data char *txMsg = "Hello World!"; vRet = send (dataTx, txMsg, (int)strlen(txMsg), 0); if (vRet == SOCKET_ERROR) { cout << "\nError sending data... Exiting"; cout << "\nsend failed with error: " << WSAGetLastError(); cout << "\n"; system("PAUSE"); closesocket(dataTx); return 0; } else { cout << "Sent data.\n"; //return 0; }
Code://from server app { //the accept function waits if there are no pending connections dataTx = accept (dataRx, (struct sockaddr*)&remote, &remLen ); printf("\n"); printf("-> [Connected to client %s]", inet_ntoa(remote.sin_addr) ); printf("\n"); do { char *recvBuff; recvBuff = malloc (4 * sizeof(char)); if (numBytes = recv (dataTx, recvBuff, recvBuffSize, 0) > 0) { printf("\n-> Bytes Received: %d \n", numBytes); //why always one? printf("\n-> Message Received: %s \n", recvBuff); if (!(strcmp(recvBuff, quitString))) { printf("\nshould quit\n"); exFlag = 1; } free (recvBuff); recvBuff = NULL; } } while (exFlag != 1); printf("\n-> [Closed connection]\n"); close(dataTx); }
Thanks!
d02



LinkBack URL
About LinkBacks


