ап, вообщем есть код проги с моего верхнего поста в нормальном так сказать варианте, не могу разобраться с ошибками:
читать дальше »
Код:
#include "stdafx.h"
#include <string.h>
#include <iostream>
// Включение библиотеки Winsock2
#include <winsock2.h>
#include <windows.h>
// Порт, который использует сервер
#define PORT 1140
// Адрес сервера
#define SERVERADDR "127.0.0.1"
int main ( int argc, char* argv [ ] )
{
using namespace std;
char buff [ 11000 ] ;
int A, B, C, D, E, F, G, H, I, J;
setlocale(LC_ALL, "Russian");
printf ( "TCP Client \n" );
if(WSAStartup(0x202, (WSADATA *) &buff[0]))
{
printf("WSAStartup error %d\n",
WSAGetLastError( ));
return -1;
}
SOCKET my_sock ;
my_sock=socket ( AF_INET, SOCK_STREAM, 0 );
if ( my_sock < 0 )
{
printf("Socket error %d\n",
WSAGetLastError( ));
return -1;
}
sockaddr_in dest_addr ;
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons ( PORT );
dest_addr.sin_addr.s_addr=inet_addr(SERVERADDR);
int nRecv = connect(my_sock,
(sockaddr *) &dest_addr, sizeof(dest_addr));
if (nRecv == SOCKET_ERROR)
{
if (WSAGetLastError() == WSAEHOSTUNREACH)
cout<<"Host unreachable" << endl;
else
printf ("Connect error %d\n",
WSAGetLastError( ));
return -1;
}
printf("Соединение с %s установлено",
SERVERADDR);
char cmd[5];
bool repeat = true;
bool rpt;
int n =0;
do
{
cout << "Enter command (\\get or \\quit)" << endl;
cin.getline (cmd, 10);
strcat_s (cmd, "\n");
int nRecv = send (my_sock, &cmd[0], strlen (cmd), 0);
repeat = true;
A=0; B=0; C=0; D=0; E=0; F=0; G=0; H=0; I=0; J=0;
do
{ ZeroMemory (buff, 11000);
nRecv = recv (my_sock, &buff[0], sizeof (buff)- 1, 0);
if (strstr (buff, "\n") != NULL)
{
rpt = false;
}
if (strstr (buff, "Closing connction") != NULL)
{
rpt = false;
repeat = false;
cout<<buff;
break;
}
cout << buff;
int len = strlen (buff);
for (int i = 0; i<= len; i++)
{
switch (buff[i])
{
case 'a':A++; break;
case 'b':B++; break;
case 'c':C++; break;
case 'd':D++; break;
case 'e':E++; break;
case 'f':F++; break;
case 'g':G++; break;
case 'h':H++; break;
case 'i':I++; break;
case 'j':J++; break;
}
}
}
while (rpt && nRecv > 0);
cout << "a" << A << endl;
cout << "b" << B << endl;
cout << "c" << C << endl;
cout << "d" << D << endl;
cout << "e" << E << endl;
cout << "f" << F << endl;
cout << "g" << G << endl;
cout << "h" << H << endl;
cout << "i" << I << endl;
cout << "j" << J << endl;
if(nRecv == 0)
{
repeat = false;
cout << "Ok..."<< endl;
}
else if(nRecv == SOCKET_ERROR)
{
printf ( " Recv error %d\n", WSAGetLastError());
closesocket ( my_sock ) ;
WSACleanup ( ) ;
return -1;
}
else
{
buff[nRecv] = 0;
if(!strcmp(buff, "Closing connection")) break;
printf("CryptoMessage: %s\n", buff);
}
closesocket (my_sock);
WSACleanup ( ) ;
return 0;
}
}
компилятор ругается на closesocket в конце кода, для интереса закоментил, он начал ругаться на код дальше и в итоге на закрытую скобку, помогите разобраться :( плюс ругался на strcat и заставил меня поставить strcat_s.
|