Форум программистов, компьютерный форум CyberForum.ru

WinSock tcp client/server - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Время в С++ http://www.cyberforum.ru/cpp-beginners/thread712000.html
Здравствуйте! может мне ктонибудь подсказть нормальный способ ввода времени вида hh:mm:ss Ато я пока только смог сделать вондальский способ ввода)) #include <iostream> #include <conio.h> using namespace std; int main() {
C++ Массивы в ООП Ботанический сад и цветы. Цветы цветут при соблюдении ряда условий: время года, температура и влажность. Класс обработчик реализует поиск цветов, которые должны цвести при существующих начальных данных. Вот набросала код, не могу вписать в него массивы. Даже массив имени цветка не получается - при проверке выводит только первую букву введенного имени. Помогите пожалуйста, нужно чтоб пользователь... http://www.cyberforum.ru/cpp-beginners/thread711991.html
Первая программа на VC + OpenCV C++
Я загрузил OpenCV отсюда http://sourceforge.net/projects/opencvlibrary/?source=dlp и раскрыл его в C:\OpenCV\ У меня win7 64 bit Подключаю OpenCV к VC++ 2010 Express как сказано здесь http://locv.ru/wiki/1.6_%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%B8_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0 Include Directories: C:\OpenCV\include\opencv...
Алгоритмы сортировки. Подсчетом C++
#include <iostream> #include <time.h> #include <stdlib.h> using namespace std; const int n = 10,m = 1; int a = {0}; int b = {0};
C++ Работа со строками http://www.cyberforum.ru/cpp-beginners/thread711982.html
Всем привет! Задача заключается в следующем: Дано текст, не важно какой, набор слов. Затем с клавиатуры вводится слово, вырезается из текста и на его место вставляется новое слово, которое тоже вводится с клавиатуры. Программа вроде не сложная, но в функциях строк вообще не разбираюсь, так и сам алгоритм составить не могу: #include <conio.h> #include <stdio.h> #include <iostream>...
C++ Распечатать фамилии детей данного детского сада, которые родились в определенном месяце; указать их возраст и группу #include<iostream.h> #include<conio.h> #include<math.h> #include<iomanip.h> void help(); float G_rez(); int exit(); struct sad { подробнее

Показать сообщение отдельно
Арсен_
 Аватар для Арсен_
2 / 2 / 0
Регистрация: 25.11.2012
Сообщений: 27
28.11.2012, 14:34     WinSock tcp client/server
Может у кого то есть пример простой реализации client/server на winsock ? неважно на каком языке.

Мне надо что бы сервер отправлял сообщения клиенту и наоборот. Некаких лишних потоков ненадо, размеры сообщений не будут превышать 255(символов).

В сети я нашел какую то реализацию, но она как то некорректно работает.

Кликните здесь для просмотра всего текста

Пример решения квадратного уравнения, коэффициенты которго передаются через сокеты.

Сервер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <sys/types.h>
#include <WinSock2.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <Mswsock.h>
 
//#pragma comment(lib,"wsock32")
 
char message[]="err\n";
 
int main()
{
    WSADATA wData;
    //WORD version_request;
    SOCKET sock,listener;
    
    int socket_name_size;
    int bytes_read;
 
    char buff[1024];
    struct sockaddr_in addr;
 
    if(WSAStartup(MAKEWORD(1,1),&wData)!=0)
    {
        std::cout<<"socket not initialized\n";
        return 1;
    }
    std::cout<<"socket initialized\n";
 
    listener=socket(AF_INET,SOCK_STREAM,NULL);  //create socket
    std::cout<<"socket created\n";
 
    addr.sin_family=AF_INET;
    addr.sin_port=htons(3000);  //number port
    addr.sin_addr.s_addr=htonl(INADDR_ANY);
    socket_name_size=sizeof(addr);
    
    if(bind(listener,(struct sockaddr *)&addr,socket_name_size)<0)  //binding
    {
        std::cout<<"socket not binding\n";
        return 1;
    }
    std::cout<<"socket bind\n";
 
    listen(listener,1);
    std::cout<<"set listen\n";
 
    int *a=new int[2];
    char buffer1[15],buffer2[15];
    float answer1;
    float answer2;
 
 
    int error;
    while(true)
    {
        sock=accept(listener,NULL,NULL);
        if(sock<0)
        {
            std::cout<<"accept error\n";
            error=WSAGetLastError();
            std::cout<<error<<"\n";
            _getch();
            return 1;
        }
    
    for(int i=0;i<3;i++)
    {
        bytes_read=recv(sock,buff,10,0);
        if(bytes_read<0)
        {
            break;
        }
        std::cout<<buff<<"\n";
        a[i]=atoi(buff);
        std::cout<<"in number view "<<a[i]<<"\n";
    }   
 
    if(a[1]*a[1]-4*a[0]*a[2]>=0)
    {
    answer1=(-a[1]+sqrt(a[1]*a[1]-4.0*a[0]*a[2]))/(2*a[0]);
    answer2=(-a[1]-sqrt(a[1]*a[1]-4.0*a[0]*a[2]))/(2*a[0]);
    }
 
    if(a[1]*a[1]-4*a[0]*a[2]<0)
    {
        send(sock,message,sizeof(message),0);
        send(sock,message,sizeof(message),0);
        //break;
    }
 
 
    _gcvt(answer1,10,buffer1);
    _gcvt(answer2,10,buffer2);
    
    send(sock,buffer1,sizeof(buffer1),0);
    send(sock,buffer2,sizeof(buffer2),0);
 
    }
 
return 0;
}
Клиент:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <sys/types.h>
#include <winsock2.h>
#include <memory.h>
#include <conio.h>
 
 
int main()
{
    WSADATA wData;
    struct sockaddr_in addr,serv_addr;
    SOCKET sock;
    if(WSAStartup(MAKEWORD(1,1),&wData)!=0)
    {
        std::cout<<"socket not initialized\n";
    }
    std::cout<<"socket initialized\n";
 
    sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock==-1)
    {
        std::cout<<"socket not created\n";
    }
    
    addr.sin_family=AF_INET;
    addr.sin_port=htons(3000);
    addr.sin_addr.s_addr=htonl(INADDR_LOOPBACK);
    bind(sock,(struct sockaddr *)&addr,sizeof(addr));
 
    char HostName[1024];
    DWORD HostIP = 0;
    LPHOSTENT lphost;   
    gethostname(HostName, 1024);
    lphost=gethostbyname(HostName);
    serv_addr.sin_family=AF_INET;
    memcpy((char*)&serv_addr.sin_addr,lphost->h_addr,lphost->h_length);
    serv_addr.sin_port=htons(3000);
 
    int error;
    if(connect(sock,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
    {
        std::cout<<"connect error\n";
        error=WSAGetLastError();
        std::cout<<error<<"\n";
        _getch();
        return 1;
    }
    std::cout<<"connect success\n";
 
 
char message1[10];
char message2[10];
char message3[10];
 
char buff[15];
 
std::cout<<"insert value\n";
std::cin>>message1;
std::cin>>message2;
std::cin>>message3;
 
    send(sock,message1,sizeof(message1),0);
    send(sock,message2,sizeof(message2),0);
    send(sock,message3,sizeof(message3),0);
 
    recv(sock,buff,sizeof(buff),0); //3 param -sizeof accepted data
    std::cout<<"answer "<<buff<<"\n";
    recv(sock,buff,sizeof(buff),0);
    std::cout<<"answer "<<buff<<"\n";
    getch();
 
    shutdown(sock,2);
    closesocket(sock);
    WSACleanup();
    return 0;
 
}
В этом коде даже не передается IP сервера... Или может я не правльно понял?


PS поиском я пользовался, только в тех реализациях много лишнего.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru