Отправка данных по udp в сокет windows server

Я пытаюсь отправить UDP-пакеты в сокет на 64-разрядной машине Windows. На стороне сервера запущено приложение, которое создало сокет с помощью socket () API Windows, а затем привязывается к определенному порту.

Сокет был создан на стороне сервера как socket (2, 2, 0). Итак, тип сокета - UDP.

Я использую Python на стороне клиента для связи с ним. Однако я не получаю желаемого ответа. Мне нужно отправить следующие 3 DWORD в формате: DWORD1 + DWORD2 + DWORD3

DWORD1 = 0xAABBCCDD
DWORD2 = 0x0
DWORD3 = 0x1


#! /usr/bin/python

import socket
import time

ip_addr = '192.168.2.6'
port = 1234

addr = (ip_addr, port)

buffer = '\xdd\xcc\xbb\xaa' + '\x00\x00\x00\x00' + '\x01\x00\x00\00'

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((ip_addr, port))

s.sendto(buffer, addr)

data, server = s.recvfrom(1024)

print data

Нужно ли мне отправлять пакеты UDP с прямым или обратным порядком байтов? Серверная часть - это 64-битная машина с Windows.

Разница в обратном порядке байтов от младшего до большого контролируется вашим приложением - не обязательно сетевым уровнем операционной системы. Кроме того, как настроить сокет в Windows? Вы все время говорите о "серверном сокете Windows", это обычно не так. Windows не создает сокеты из ниоткуда, а приложение делает? Так с какой программой вы пытаетесь общаться? Я предлагаю вам сделать struct.pack('B', 0) и struct.pack('>I', 2864434397), так вам будет легче изменить порядок байтов.

Torxed 26.10.2018 08:15

Окна имеют прямой порядок байтов, и у вас есть окна на обоих концах.

Marichyasana 26.10.2018 08:49

@Torxed: Я отредактировал вопрос, чтобы сделать его более понятным. На другом компьютере с Windows работает 64-битное приложение, которое создало сокет с использованием Windows API, например socket (), а затем привязывается к нему. Это UDP-сокет, а затем он привязывается к порту 1234 на стороне сервера. Все, что я хочу знать, правильно ли я отправляю данные со стороны клиента? К сожалению, у меня нет исходного кода для серверного приложения, которое создало сокет. Но у меня есть подробности о розетке.

Neon Flash 26.10.2018 11:42

Это действительно зависит от того, чего хочет это приложение с закрытым исходным кодом. Да, вы правильно отправляете данные. Но вопрос в том, правильные ли данные ожидает другое программное обеспечение? Windows или API, используемые для создания сокета, не имеют ничего общего с тем, как анализируются данные или как ожидается их анализ.

Torxed 26.10.2018 14:29
0
4
257
0

Другие вопросы по теме