#include <stdio.h> #include "winsock2.h" #include <string>
#define BUFFERSIZE 7000
int main(){
// WSADATA wsaData; SOCKET m_socket; sockaddr_in clientService; int bytesSent; int bytesRecv=0; std::string sendbuf; char recvbuf[BUFFERSIZE];
// Initialize Winsock. int iResult=WSAStartup(MAKEWORD(2,2),&wsaData); if (iResult!=NO_ERROR){ printf("Error at WSAStartup()\n"); WSACleanup(); return 1; } printf("Result:%d\n",iResult);
// Create a socket. m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (m_socket==INVALID_SOCKET){ printf("Error at socket(): %ld\n",WSAGetLastError()); closesocket(m_socket); WSACleanup(); return 1; }
// lose the pesky "Address already in use" error message u_char ttl; if (setsockopt(m_socket,SOL_SOCKET,SO_REUSEADDR,(char *)&ttl,sizeof(ttl))==-1){ perror("setsockopt"); closesocket(m_socket); WSACleanup(); return(1); } // Connect to a server. clientService.sin_family=AF_INET; clientService.sin_addr.s_addr=inet_addr("192.168.1.100");//htonl(INADDR_ANY); clientService.sin_port=htons(3000);
if (connect(m_socket,(SOCKADDR*)&clientService,sizeof(clientService))==SOCKET_ERROR){ printf("Failed to connect.\n"); printf("Error %ld\n",WSAGetLastError()); closesocket(m_socket); WSACleanup(); return 1; }
// Send and receive data. while(1){ /* ENVIAR */ printf("Sending PING\n");
sendbuf="PING";
bytesSent=send(m_socket,sendbuf.data(),sendbuf.size(),0);
if (bytesSent<0) break; /* FIN ENVIAR */
/* RECIBIR */
memset(recvbuf,'\0',BUFFERSIZE);
bytesRecv=recv(m_socket,recvbuf,BUFFERSIZE,0); printf("Bytes Recv: %ld\n",bytesRecv); printf("Recibi: %s\n",recvbuf);
if (bytesRecv<0) break;
/* FIN RECIBIR */ ::Sleep(1000); }
closesocket(m_socket); WSACleanup(); return 0; }
|