Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 11 Февраль, 2012, 05:37:57

Страниц: 1 [2]
Печать
Автор Тема: C++. Клиент-сервер - завершение преложений после создания соединения  (Прочитано 3950 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mr.Pihto    ↓ 
15 Ноябрь, 2009, 02:48:57
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

если кому надо вот рабочий код
Java
#include <stdio.h>
#include <iostream>
#include <winsock2.h>
 
DWORD WINAPI ThreadFunc(LPVOID s1)
{
    SOCKET s2=((SOCKET *) s1)[0];
    char buf[100];
    memset(buf, 0, sizeof(buf));
    while(recv(s2,buf,100,0)){
    std::cout<<buf;
    send(s2,buf,100,0);
    }
    closesocket(s2);
    return 0;
}
 
int main(){
 
WSADATA WsaData;
        struct sockaddr_in local;
        int s;
        int rc;
                int err = WSAStartup (0x0101, &WsaData);
        if (err == SOCKET_ERROR)
        {
           printf ("WSAStartup() failed: %ld\n", GetLastError ());
           return 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);
        SOCKET s1;
        if (s<0){
                perror("socket error");
                exit(1);
        }else{
                std::cout<<"Create sock: OK\n";
           }
        rc = bind(s,(struct sockaddr*)&local, sizeof(local));
if (rc<0){
                perror("bind error");
                exit(1);
        }else{
                std::cout<<"Bind: OK\n";
           }
 
           rc = listen(s,5);
           if(rc){
                   perror("listen error");
                exit(1);
           }else{
                std::cout<<"Listen: OK\n";
}
          int local2=sizeof(local);
while(s1=accept(s,0,0)){
 
      DWORD thID;
      CreateThread(NULL,NULL,ThreadFunc,&s1,NULL,&thID);
 
}
return 0;
}
Записан
Frozzeg    ↓ 
26 Ноябрь, 2009, 07:40:18 , спустя 11 дней 16 часов 51 минуту 21 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 80
Сообщений: 5308
Сила слова: 1.51

читать не реально такой код
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Mr.Pihto    ↓ 
28 Ноябрь, 2009, 01:29:31 , спустя 1 день 5 часов 49 минут 13 секунд
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

Frozzeg, :)
Записан
CTAPbIu_MABP    ↓ 
28 Ноябрь, 2009, 01:49:42 , спустя 20 минут 11 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5184
Сила слова: 1.81

Frozzeg, Mr.Pihto, нереально читать код на перле
Записан

java.lang.OutOfMemoryError
tmt    ↓ 
05 Ноябрь, 2011, 04:52:22 , спустя 707 дней 14 часов 2 минуты 40 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0


если кому надо вот рабочий код
Java
#include <stdio.h>
#include <iostream>
#include <winsock2.h>
 
DWORD WINAPI ThreadFunc(LPVOID s1)
{
    SOCKET s2=((SOCKET *) s1)[0];
    char buf[100];
    memset(buf, 0, sizeof(buf));
    while(recv(s2,buf,100,0)){
    std::cout<<buf;
    send(s2,buf,100,0);
    }
    closesocket(s2);
    return 0;
}
 
int main(){
 
WSADATA WsaData;
        struct sockaddr_in local;
        int s;
        int rc;
                int err = WSAStartup (0x0101, &WsaData);
        if (err == SOCKET_ERROR)
        {
           printf ("WSAStartup() failed: %ld\n", GetLastError ());
           return 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);
        SOCKET s1;
        if (s<0){
                perror("socket error");
                exit(1);
        }else{
                std::cout<<"Create sock: OK\n";
           }
        rc = bind(s,(struct sockaddr*)&local, sizeof(local));
if (rc<0){
                perror("bind error");
                exit(1);
        }else{
                std::cout<<"Bind: OK\n";
           }
 
           rc = listen(s,5);
           if(rc){
                   perror("listen error");
                exit(1);
           }else{
                std::cout<<"Listen: OK\n";
}
          int local2=sizeof(local);
while(s1=accept(s,0,0)){
 
      DWORD thID;
      CreateThread(NULL,NULL,ThreadFunc,&s1,NULL,&thID);
 
}
return 0;
}

Привет, я новичек в C++, но немного знаком с другими языками. Создаю проект (консольное прил. win32) галку ставлю что проект пустой, там создаю в исх коде cpp в него вставляю код. нажимаю зеленую кнопочку (запуск.)
и выдает
 
1>------ Построение начато: проект: 6, Конфигурация: Debug Win32 ------
1>Компиляция...
1>1.cpp
1>Компиляция манифеста в ресурсы...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Компоновка...
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__closesocket@4 в функции "unsigned long __stdcall ThreadFunc(void *)" (?ThreadFunc@@YGKPAX@Z)
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__send@16 в функции "unsigned long __stdcall ThreadFunc(void *)" (?ThreadFunc@@YGKPAX@Z)
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__recv@16 в функции "unsigned long __stdcall ThreadFunc(void *)" (?ThreadFunc@@YGKPAX@Z)
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__accept@12 в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__listen@8 в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__bind@12 в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__socket@12 в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__htonl@4 в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__htons@4 в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__WSAStartup@8 в функции _main
1>C:\****************\Visual Studio 2008\Projects\6\Debug\6.exe : fatal error LNK1120: 10 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\****************\Visual Studio 2008\Projects\6\6\Debug\BuildLog.htm"
1>6 - ошибок 11, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
 
Подскажите пожулуйста, как это исправить.. попробовал уже и в 2010, и в 2008.. потом какую то хрень скачал wxDev-C++ ( читая темку _http://pyha.ru/forum/topic/6691.0 ).. незнаю что уже делать!
Записан
Frozzeg    ↓ 
05 Ноябрь, 2011, 05:09:16 , спустя 16 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 80
Сообщений: 5308
Сила слова: 1.51

вставить этот код после всех директив #include
#pragma comment(lib, "Ws2_32.lib")
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
tmt    ↓ 
05 Ноябрь, 2011, 05:13:54 , спустя 4 минуты 38 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0

Frozzeg, Спасибо!) получилось
Записан
Nyaah    ↓ 
05 Ноябрь, 2011, 07:00:57 , спустя 1 час 47 минут 3 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 31
Сообщений: 479
Сила слова: 6.47

лудше всетаки в настройках проекта в список используемых библиотек добавить
Записан

Work, buy, consume, die
AlexanderC    ↓ 
13 Декабрь, 2011, 12:48:27 , спустя 37 дней 5 часов 47 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 135
Сила слова: 0.74

using namespace std; для слабаков....?!?
Записан

*Не всё  Windows™ что виснет, не всё  Linux что "да ну его..."
Ivan    ↓ 
13 Декабрь, 2011, 01:04:35 , спустя 16 минут 8 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 19
Сообщений: 922
Сила слова: 2.06


Frozzeg, Mr.Pihto, нереально читать код на перле

бывает вполне реально иногда)
 
using namespace std; для слабаков....?!?
Вроде тут оно не так критично ибо не так часто употребляется, не согласен разве что с такой записью:
Java
std::cout<<"Create sock: OK\n";
тру-вей использовать std:endl
Java
cout << "Create sock" << endl;
Записан

#define TRUE FALSE // удачной отладки суки
Страниц: 1 [2]
Печать
 

Перейти в: