Что нового

[Сеть, интернет] Приём и передача видеопотока через TCP соединение

Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Если бы хоть чучть-чуть разбирался бы в TCP,
то хоть какоето представление имелбы как это делать
;D ;D ;D
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
.....
Все что необходимо от TCP: TCPSend и TCPRecv.
Все остальное - обертки, дело техники.
Главное - это сформировать пакет для отправки. Т.е это либо страка в бинарном виде, или еще что-то, как-то. Вот как это сделать я не в курсе.
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
MMP бинарный протокол. Все числовые данные передаются как четырехбайтные целые
НЕ в сетевом формате, т. е. первым идет старший байт, последним младший.
Четырехбайтовые беззнаковые целые обозначаются UL

Текстовые данные передаются с префексированной длиной, т. е. сначала UL, а потом строка
(в кодировке windows-1251) длины UL без завершающего нуля. Обозначение в дальнейшем - LPS.
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Sergey2210 [?]
Если бы хоть чучть-чуть разбирался бы в TCP,
то хоть какоето представление имелбы как это делать

В Вашем случае, для начала, необходимо усвоить суть работы сетевых приложений.
Как устанавливается соединение между Клиентом и Сервером
Как происходит обмен между ними.
Да и многие другие моменты сетевого программирования. (А это отнюдь не самое легкое направление в программировании). К тому же как я понимаю Вам необходим сервер обрабатывающий не одно, а несколько подключений, раз вопрос идет об авторизации.
Кстати в справке довольно подробно описана работа TCP и уделив денек изучению примеров в справке, сможете сами написать небольшое Клиент-серверное приложение(даже с авторизацией). К тому же на форуме присутствует множество примеров.
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
У меня в справке в розделе TCP , UDP всё на английском,по этому сильно и не увлекался этим,
а сейчас потребовалось сделать клиент и наверное придётся новую справку скачивать, или
переводить через PROMT
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Sergey2210 [?]
MMP бинарный протокол. Все число
Вот и вопрос, как составить такой пакет данных. А уж для того, что бы его отправить, достаточно одной функции..
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Я кажется понял как отправлять пакет:

Пример но он не законченный,просто не знаю что
писать дальше

Код:
TCPStartup ( )

Dim $MRAServer = TCPNameToIP ("mrim.mail.ru")
Dim $MRAPort = 2042
Dim $MRAID = 0, $TCPSocket

_MRAStart("логин", "пароль")

Func _MRAStart($tEmail, $tPassword)
    ConsoleWrite("Attempting to connect to " & $MRAServer & @CRLF)
;//Старт соединения
    While 1
        $TCPSocket = TCPConnect ($MRAServer, $MRAPort)
        If $TCPSocket <> - 1 Then
            ExitLoop
        EndIf
    WEnd
    ConsoleWrite ("Connected to " & $MRAServer & @CRLF)
    
    _MRA_hello($MRAID)
    $MRAID +=1
EndFunc

Func _MRA_hello($tID)
    
    $MRA_hello = "0x1001 1.7 MRIM_CS_HELLO 20"& @CRLF
    TCPSend ($$TCPSocket, $MRA_hello)
    ConsoleWrite ("Отправленно >>> " & $MRA_hello)
    
;//Verify command
    While 1
        
        $TCPRecv = TCPRecv ($TCPSocket, 2048)
        If $TCPRecv <> "" Then
            If $TCPRecv = $MRA_hello Then
                ConsoleWrite ("Получено <<< " & $TCPRecv)
                ExitLoop
            Else
                ConsoleWrite ("Получено <<< " & $TCPRecv)
            EndIf
        EndIf
        
    WEnd
    
EndFunc


Вот здесь нужно дописать:

Код:
Func _MRA_hello($tID)
    
    $MRA_hello = "0x1001 1.7 MRIM_CS_HELLO "& @CRLF
    TCPSend ($$TCPSockett, $MRA_hello)
    ConsoleWrite ("Отправленно >>> " & $MRA_hello)



magic; Magic в данном случае это 0x1001
proto; Версия протокола 1.7
seq; Sequence не знаю
msg; Тип пакета MRIM_CS_HELLO
dlen; Длина данных не знаю
from; Адрес отправителя @IPAdress1
fromport; Порт отправителя не знаю

где magic это:
MMP бинарный протокол. Все числовые данные передаются как
четырехбайтные целые НЕ в сетевом формате, т. е. первым идет старший байт,
последним младший



Пакет: MMP бинарный протокол:
MRIM_CS_HELLO 0x1001
MRIM_CS_HELLO_ACK 0x1002
MRIM_CS_LOGIN_ACK 0x1004
MRIM_CS_LOGIN_REJ 0x1005
MRIM_CS_LOGIN_REJ 0x1005
MRIM_CS_PING 0x1006
MRIM_CS_MESSAGE 0x1008
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Да и ещё какой порт отправителя писать в придедушем сообщении?
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
[Сеть, интернет] Re: [Сеть, интернет] Приём и передача видеопотока через TCP соединение

Всё перепутал,вообщем наверное должно быть так: -->

magic // Магический ключ
0:rofl:EADBEEF ; Клиентский Magic ( C <-> S )

proto // Версия протокола
Вот здесь полная неразбериха,на языке С -
#define PROTO_VERSION_MAJOR 1
#define PROTO_VERSION_MINOR 7
#define PROTO_VERSION ((((u_long)(PROTO_VERSION_MAJOR))<<16)|(u_long)(PROTO_VERSION_MINOR))
#define PROTO_MAJOR(p) (((p)&0xFFFF0000)>>16)
#define PROTO_MINOR(p) ((p)&0x0000FFFF)


seq // Номер пакета
Не знаю что писать

msg // Тип пакета
MRIM_CS_HELLO или 0x1001

dlen // Длина данных
Не знаю что писать

from // Адрес отправителя
@IPAddress1

fromport // Порт отправителя
Не знаю что писать

reserved[16] // Зарезервировано
Не знаю что писать

Код:
$MRA_hello = "magic proto seq msg dlen from fromport "& @CRLF ; И наверное reserved[16] 
TCPSend ($TCPSocket, $MRA_hello)
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
[Сеть, интернет] Re: [Сеть, интернет] Приём и передача видеопотока через TCP соединение

PROTO = 0x1000A
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Кстати вот пример написанного MSN клиента

Код:
TCPStartup ( )

Dim $MSNConnectServer = TCPNameToIP ("messenger.hotmail.com")

Dim $MSNConnectPort = 1863
Dim $MSNCurrentID = 0, $TCPMainSocket

_MSNStart("[email protected]", "passwordhere")



Func _MSNStart($tEmail, $tPassword)
    ConsoleWrite("Attempting to connect to " & $MSNConnectServer & @CRLF)
;//Start connection
    While 1
        $TCPMainSocket = TCPConnect ($MSNConnectServer, $MSNConnectPort)
        If $TCPMainSocket <> - 1 Then
            ExitLoop
        EndIf
    WEnd
    ConsoleWrite ("Connected to " & $MSNConnectServer & @CRLF)
    
    _MSNVer($MSNCurrentID)
    $MSNCurrentID +=1
    _MSNCvr($MSNCurrentID, $tEmail)
    $MSNCurrentID +=1
    _MSNUsr($MSNCurrentID, $tEmail)
    
;//Connect to new server
    While 1
        $TCPMainSocket = TCPConnect ("207.46.111.72", 1863)
        If $TCPMainSocket <> - 1 Then
            ExitLoop
        EndIf
    WEnd
    
    $MSNCurrentID = 0

    _MSNVer($MSNCurrentID)
    $MSNCurrentID +=1
    _MSNCvr($MSNCurrentID, $tEmail)
    $MSNCurrentID +=1
    _MSNUsr($MSNCurrentID, $tEmail)
    
EndFunc

Func _MSNCvr($tID, $tEmail)
    
    $tVersionString = "CVR " & $tID & " 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS " & $tEmail & @CRLF
    TCPSend ($TCPMainSocket, $tVersionString)
    ConsoleWrite (">>> " & $tVersionString)
    
;//Version command
    While 1
        
        $TCPRecv = TCPRecv ($TCPMainSocket, 2048)
        If $TCPRecv <> "" Then
            ConsoleWrite ("<<< " & $TCPRecv)
            ExitLoop
        EndIf
        
    WEnd
EndFunc

Func _MSNVer($tID)
    
    $tVERString =  "VER " & $tID & " MSN9" & @CRLF
    TCPSend ($TCPMainSocket, $tVERString)
    ConsoleWrite (">>> " & $tVERString)
    
;//Verify command
    While 1
        
        $TCPRecv = TCPRecv ($TCPMainSocket, 2048)
        If $TCPRecv <> "" Then
            If $TCPRecv = $tVERString Then
                ConsoleWrite ("<<< " & $TCPRecv)
                ExitLoop
            Else
                ConsoleWrite ("<<< " & $TCPRecv)
            EndIf
        EndIf
        
    WEnd
    
EndFunc

Func _MSNUsr($tID, $tEmail)
    
    $tUsrString = "USR " & $tID & " TWN I " & $tEmail & @CRLF
    TCPSend ($TCPMainSocket, $tUsrString)
    ConsoleWrite (">>> " & $tUsrString)
    ;//USR command
    While 1
        
        $TCPRecv = TCPRecv ($TCPMainSocket, 2048)
        If $TCPRecv <> "" Then
            ConsoleWrite ("<<< " & $TCPRecv)
            ExitLoop
        EndIf
        
    WEnd
    TCPCloseSocket ($TCPMainSocket)
    
EndFunc
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Не знаю,поможет ли это чем нибудь,но я нашёл исходник маил агента,вот только он на delphi,если кто нибудь знает delphi,помогите на примере delphi сформировать пакеты для соединения с сервером Маил на autoit,пример в прикреплённом файле.
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Плагин протокола Mail.ru Агент
Или попробовать разобрать dll библиотеки подключения к mail.ru

источник:http://miranda-portal.ru/plugins/protocols/61-mra.html

Извените,прикрепить файл не смог,так как его размер должен быть
не более 200кб,вот ссылка архива с библиотеками
http://miranda-portal.ru/getfile-72
 
Верх