socket'ы

Тема в разделе "LANGS.C", создана пользователем tid, 12 дек 2010.

  1. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    начал раскуривать работу с сокетами, вроде как набрал. проблема в том что мой MS VC++ ругается:

    Compiling...
    cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release
    main.c
    c:\tid\coding\raw socket\main.c(49) : warning C4267: 'function' : conversion from 'size_t' to 'int', possible loss of data
    Linking...
    main.obj : error LNK2019: unresolved external symbol _closesocket@4 referenced in function _main
    main.obj : error LNK2019: unresolved external symbol _recv@16 referenced in function _main
    main.obj : error LNK2019: unresolved external symbol _send@16 referenced in function _main
    main.obj : error LNK2019: unresolved external symbol _connect@12 referenced in function _main
    main.obj : error LNK2019: unresolved external symbol _htons@4 referenced in function _main
    main.obj : error LNK2019: unresolved external symbol _gethostbyname@4 referenced in function _main
    main.obj : error LNK2019: unresolved external symbol _socket@12 referenced in function _main
    Debug\sockets.exe : fatal error LNK1120: 7 unresolved externals

    как можно с этим справится?

    Код (Text):
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <WinSock.h>
    4.  
    5. #define BUFSIZE 256
    6. #define RECVBUFSIZE 1024
    7.  
    8. void error(char *msg);
    9.  
    10. static char buf[BUFSIZE];
    11. static char recbuf[RECVBUFSIZE];
    12.  
    13. int main(int argc, char *argv[])
    14. {
    15.     /*int sockfd;*/
    16.     SOCKET sockfd;
    17.     int portno;
    18.     struct sockaddr_in serv_addr;
    19.     struct hostent *server;
    20.  
    21.     if (argc < 3) {
    22.        fprintf(stderr,"usage %s hostname port\n", argv[0]);
    23.        exit(0);
    24.     }
    25.  
    26.     portno = atoi(argv[2]);
    27.    
    28.     sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    29.     if (sockfd < 0)
    30.         error("ERROR: opening socket");
    31.    
    32.     server = gethostbyname(argv[1]);   
    33.     if (server == NULL)
    34.         error("ERROR: no such host");
    35.    
    36.     memset((char *) &serv_addr, 0x00, sizeof(struct sockaddr_in));
    37.     serv_addr.sin_family = AF_INET;
    38.     memcpy((char *) &serv_addr.sin_addr.s_addr, (char *) server->h_addr, server->h_length);
    39.     serv_addr.sin_port = htons(portno);
    40.    
    41.     printf("Connect with the server:\n");
    42.     if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr_in)) < 0)
    43.         error("ERROR: connect with the server");
    44.  
    45.     printf("Please enter the message:\n");
    46.     fgets(buf,BUFSIZE-1,stdin);
    47.    
    48.     printf("Send the message:\n");
    49.     if (send(sockfd, buf, strlen(buf), 0) < 0)
    50.         error("ERROR: send the message");
    51.    
    52.     printf("Get the message:\n");
    53.  
    54.     if (recv(sockfd, recbuf, RECVBUFSIZE-1, 0) < 0)
    55.         error("ERROR: get the message");
    56.    
    57.     closesocket(sockfd);
    58.  
    59.     return 0;
    60. }
    61.  
    62. int error(char *msg)
    63. {
    64.     printf("%s\n", msg);
    65.     return 1;
    66. }
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    tid
    а кто за тебя библиотеку сокетов подключать будет?
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Подключение LIB файла wsock32.lib?
    Это делается в меню Project далее Setting,
    далее Link и Object/library modules .
    Туда надо вписать Wsock32.lib.


    Или дописать в рядом с другими объявлениями:
    Код (Text):
    1. #pragma comment(lib,"wsock32.lib")
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _sheva740
    по моему ответу можно было нагуглить и решить проблему. по Вашему ответу ТС знает где можно всегда сочкануть )
     
  5. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    да я не подключил.
    теперь все работает.
    Project -> ProjectName Property -> Linker -> Input -> Additional Dependencies ws2_32.lib
     
  6. tid

    tid Member

    Публикаций:
    0
    Регистрация:
    2 дек 2010
    Сообщения:
    57
    Спасибо!
    wsd
    кстати я нагуглил, и нашел ответ сам, потом обновил страницу и уже были ответы:)

    _sheva740
    благодарю!