Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2010, 23:10   #1
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию сокеты в С

помогите разобраться.
может кто нибудь написать пример работы с сокетами в С\C++? пересмотрел кучу статей и везде по разному написано с использованием кучи каких то левых самописных инклудесов.
например вот программа:
Код:
#!/usr/bin/perl
use Socket;
use IO::Handle;
$host = '127.0.0.1';
$port = 1234;
socket(CLIENT, AF_INET, SOCK_STREAM, getprotobyname('tcp'));
connect(CLIENT, sockaddr_in($port, inet_aton($host)));
CLIENT->autoflush(1);
my $in = <CLIENT>;
print $in;
close CLIENT;
программа создаёт сокет подключается на 1234 порт по адресу 127.0.0.1 и читает с сокета на стандартый вывод но это на перле.
как тоже самое будет на С?

Последний раз редактировалось TDrive; 28.02.2010 в 23:12.
TDrive вне форума Ответить с цитированием
Старый 01.03.2010, 20:09   #2
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

неужели тут никто не пишет на С приложения клиент-сервер?
TDrive вне форума Ответить с цитированием
Старый 01.03.2010, 20:32   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. Примеров в сети мало ?
2. MSDN - закрыли ?
BOBAH13 вне форума Ответить с цитированием
Старый 02.03.2010, 03:51   #4
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
1. Примеров в сети мало ?
2. MSDN - закрыли ?
примеров полно но они все под unix когда пробую на виндах например ругается что нет sys/socket.h я хз где его скачать и как установить...
msdn для визуал C++ а меня интересует конкретный пример на чистом С со стандартными инклудесами который будет работать на любом компиляторе.
неужели так трудно написать 5 строчек кода как должно быть?
TDrive вне форума Ответить с цитированием
Старый 02.03.2010, 09:41   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

"примеров полно но они все под unix"
По каким словам вы ищите??? Например, гугл по все моим комбинациям выдавал код для винды: "winsock c++", windows socket", "windows socket c++", ...

"msdn для визуал C++"
МСДН в первую очередь справочник по WinAPI.
p51x вне форума Ответить с цитированием
Старый 02.03.2010, 10:40   #6
al072
Пользователь
 
Регистрация: 06.02.2010
Сообщений: 20
По умолчанию

Цитата:
Сообщение от TDrive Посмотреть сообщение
примеров полно но они все под unix когда пробую на виндах например ругается что нет sys/socket.h я хз где его скачать и как установить...
msdn для визуал C++ а меня интересует конкретный пример на чистом С со стандартными инклудесами который будет работать на любом компиляторе.
неужели так трудно написать 5 строчек кода как должно быть?
Не заморачивайся и пиши под С++, он тоже везде запускаться будет у тебя!!! Сдесь на форуме тема есть, я пытался перекрутить под Windows клиент- серверное приложение написаное под Unix. мне толком тоже никто не помог! из 15 ошибок выдаваем компилятором добился 1 ошибки и одного предупреждения. но так до конца и не добился рабочей версии программы! Сделал вывод, что надо писать самому, а для этого изучай язык программирования и msdn.
al072 вне форума Ответить с цитированием
Старый 03.03.2010, 11:59   #7
ivan89
Пользователь
 
Аватар для ivan89
 
Регистрация: 22.09.2008
Сообщений: 59
По умолчанию

Вот держи .Работа winsock
Код:
#include <winsock.h>
#include <windows.h>
#include <iostream>
#define NO_FLAGS_SET 0
#define PORT (u_short) 80 //44966
#define MAXBUFLEN 256

using namespace std;
#pragma comment(lib,"wsock32.lib")

int main(VOID)
{
    WSADATA Data;
    SOCKADDR_IN recvSockAddr;
    SOCKET recvSocket;
    int status;
    int numrcv=0;
    char buffer[MAXBUFLEN];
    memset(buffer,0,MAXBUFLEN);

    /* initialize the Windows Socket DLL */
    status=WSAStartup(MAKEWORD(1, 1), &Data);
    if (status != 0)
    {
        cerr << "ERROR: WSAStartup unsuccessful" << endl;
        return 0;
    }

    /* zero the sockaddr_in structure */
    memset(&recvSockAddr, 0, sizeof(recvSockAddr));
    /* specify the port portion of the address */
    recvSockAddr.sin_port=htons(PORT);
    /* specify the address family as Internet */
    recvSockAddr.sin_family=AF_INET;
    /* specify that the address does not matter */
    recvSockAddr.sin_addr.s_addr= inet_addr( "65.55.21.250" );



/* create a socket */
recvSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (recvSocket == INVALID_SOCKET)
{
    cerr << "ERROR: socket unsuccessful" << endl;
    system("pause");
    return 0;
}



    //Try to connect
    if ( connect(recvSocket,(SOCKADDR*)&recvSockAddr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
    {
        cout << "Socket connection Failed" << endl;
        closesocket(recvSocket);
        WSACleanup();
        return 0;
    }

    //send a request
    send(recvSocket, "GET \r\n\r\n",12,0);

    numrcv=recv(recvSocket, buffer, MAXBUFLEN, NO_FLAGS_SET);
    
    if (numrcv == SOCKET_ERROR)
    {
        cerr << "ERROR: recvfrom unsuccessful" << endl;

        status=closesocket(recvSocket);
        if (status == SOCKET_ERROR)
        cerr << "ERROR: closesocket unsuccessful" << endl;
        status=WSACleanup();
        if (status == SOCKET_ERROR)
        cerr << "ERROR: WSACleanup unsuccessful" << endl;
        system("pause");
        return(1);
    }

    cout << buffer << endl;
    system("pause");
return 0;
}
ivan89 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сокеты Pavelok Работа с сетью в Delphi 3 16.09.2009 16:57
Сокеты IICuX123 Общие вопросы .NET 6 27.07.2009 01:27
Сокеты Raz0r Помощь студентам 2 29.04.2009 14:47
сокеты cross Работа с сетью в Delphi 2 21.12.2006 18:12