Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > ошибки при создании сокета


Автор: UMmi 26.3.2007, 18:02
Здравствуйте! По http://www.rtfm.4hack.com/articles.php?id1=11&id2=9&PHPSESSID=c4895a97ce4d99dea966d81dcb7b6abe требуется написать socket. 

Код

#include <winsock2.h>
#include "windows.h"WINAPI
#pragma comment(lib,"wsock32.lib")
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, 
                                                         int nCmdShow){
WSADATA WsaData;    
int err = WSAStartup (0x0101, &WsaData);    
if (err == SOCKET_ERROR){
    return 1;
    }
int s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    

SOCKADDR_IN sin;    
sin.sin_family = AF_INET;    
sin.sin_port = htons(3000);    
sin.sin_addr.s_addr = INADDR_ANY;
err = bind( s, (LPSOCKADDR)&sin, sizeof(sin) );
err = listen( s, SOMAXCONN);
while (1){
SOCKADDR_IN from;        
int fromlen=sizeof(from);        
int sclient = accept(s,(struct sockaddr*)&from, &fromlen);        
char getchar [2];        
getchar [1]='\0';        
int end=0;        
char t1[100];        
char t2[500];        
char * str=t1;        
char * rezstr=t2;        
strcpy(str,"");        
strcpy(rezstr,"");        
while((end==0)&&(recv(sclient,getchar,sizeof(
                              getchar[0]),0)!=SOCKET_ERROR)){
if (getchar[0]=='\n'){
   if (strcmp(str,"--END--")==0){
       end=1;
        }else 
    {strcat(str,"\n");
     strncat(rezstr,str,strlen(str));
     strcpy(str,"");
     };
    }else {
    strcat(str,getchar);
  };
};

MessageBox (NULL,rezstr,"",MB_OK);
strcpy(str,"Server OK.\n--END--\n");        
send(sclient,str,strlen(str),0);
closesocket(sclient);};    return 0;  };


Borland 6 выдает следующие ошибки:

[C++ Error] sett.cpp(8): E2356 Type mismatch in redeclaration of '__stdcall WinMain(void *,void *,char *,int)'
[C++ Error] winbase.h(1267): E2344 Earlier declaration of '__stdcall WinMain(void *,void *,char *,int)'
[C++ Warning] sett.cpp(62): W8066 Unreachable code

Подскажите, пожалуйста, как исправить ошибки?


Автор: Greeen 27.3.2007, 15:15
UMmi, до чего люди доходят. АААААААААА smile Код форматировать - не умеем, копипастить - не умеем
Код

#include <winsock2.h>
#include "windows.h"
#pragma comment(lib,"wsock32.lib")
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
WSADATA WsaData;    
int err = WSAStartup (0x0101, &WsaData);    
if(err == SOCKET_ERROR)
{
    return 1;
}
int s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    
SOCKADDR_IN sin;    
sin.sin_family = AF_INET;    
sin.sin_port = htons(3000);    
sin.sin_addr.s_addr = INADDR_ANY;
err = bind( s, (LPSOCKADDR)&sin, sizeof(sin) );
err = listen( s, SOMAXCONN);
while (1)
{
SOCKADDR_IN from;        
int fromlen=sizeof(from);        
int sclient = accept(s,(struct sockaddr*)&from, &fromlen);        
char getchar [2];        
getchar [1]='\0';        
int end=0;        
char t1[100];        
char t2[500];        
char * str=t1;        
char * rezstr=t2;        
strcpy(str,"");        
strcpy(rezstr,"");        
while((end==0) && (recv(sclient,getchar,sizeof(getchar[0]),0)!=SOCKET_ERROR))
{
if(getchar[0]=='\n')
{
if(strcmp(str,"--END--")==0)
{
   end=1;
}
else 
{
strcat(str,"\n");
strncat(rezstr,str,strlen(str));
strcpy(str,"");
}
}
else
{
strcat(str,getchar);
}
}
MessageBox (NULL,rezstr,"",MB_OK);
strcpy(str,"Server OK.\n--END--\n");        
send(sclient,str,strlen(str),0);
closesocket(sclient);
}
return 0;
}

Сам додумался после } точку с запятой ставить?  smile 

Автор: UMmi 27.3.2007, 20:59
Спасибо, Green! Не суди строго, буду учиться...  smile 

Автор: Greeen 27.3.2007, 21:35
UMmi, пожалуйста. Надеюсь будешь  smile 

Автор: ptr 28.3.2007, 06:15
UMmi, пометь тему решенной.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)