Ошибка вызова функции socket в простейших tcp-сервере и tcp-клиенте

Написал и скомпилировал простейшие tcp-клиент и tcp-сервер. Но при запуске сервера или при запуске клиента, выводится ошибка вызова функции socket. В чем проблема?

Исходник сервера:

#include<sys types.h="">
#include<winsock.h>
#include<stdio.h>
#include<conio.h>
#pragma comment(lib, "wsock32.lib");

int main()
{
    struct sockaddr_in local;
    int s;
    int s1;
    int rc;
    char buf[1];

    local.sin_family = AF_INET;
    local.sin_port = htons( 7500 );
    local.sin_addr.s_addr = htonl( INADDR_ANY );

    s = socket( AF_INET, SOCK_STREAM, 0 );
    if( s < 0 )
    {
        perror("Error of call socket");
        getch();
        exit(1);
    }

    rc = bind( s, ( struct sockaddr * )&local, sizeof( local) );
    if( rc < 0 )
    {
        perror("Error of call bind");
        getch();
        exit(1);
    }

    rc = listen( s, 5 );
    if( rc )
    {
        perror("Error of call listen");
        getch();
        exit(1);
    }

    s1 = accept( s, NULL, NULL );
    if( s1 < 0 )
    {
        perror("Error of call accept");
        getch();
        exit( 1 );
    }

    rc = recv( s1, buf, 1, 0 );
    if( rc <= 0 )
    {
        perror("Error of call recv");
        getch();
        exit(1);
    }

    printf("%c\n", buf[0]);
    getch();
    rc = send( s1, "2", 1, 0);
    if(rc <=0 )
        perror("Error of call send");
    getch();
    exit(0);
}
</conio.h></stdio.h></winsock.h></sys>

Исходник клиента:

#include <sys types.h="">
#include <winsock.h>
#include <stdio.h>
#include <conio.h>
#pragma comment(lib, "wsock32.lib")

int main()
{
    struct sockaddr_in peer;
    int s;
    int rc;
    char buf[ 1 ];

    peer.sin_family = AF_INET;
    peer.sin_port = htons( 7500 );
    peer.sin_addr.s_addr = inet_addr( "127.0.0.1" );

    s = socket(AF_INET, SOCK_STREAM, 0);
    if( s < 0 )
    {
        perror("Error of call socket");
        getch();
        exit(1);
    }
    rc = connect(s, ( struct sockaddr *)&peer, sizeof( peer ) );
    if( rc )
    {
        perror("Error of call connect");
        getch();
        exit(1);
    }

    rc = send(s, "1", 1, 0);
    if(rc < 0)
    {
        perror("Error of call send");
        getch();
        exit(1);
    }

    rc = recv(s, buf, 1, 0);
    if( rc <= 0)
        perror("Error of call recv");
    else
        printf("%c\n", buf[ 0 ]);
    getch();
    exit( 0 );
}
</conio.h></stdio.h></winsock.h></sys>

Если по мимо этого есть ещё ошибки, просьба на них указать.

1 ответ

Книжка, с которой списаны примеры, явно написана с расчетом на какой нибудь Беркли. а для Windows необходимо для начала вызвать WSAStartup

licensed under cc by-sa 3.0 with attribution.