0
Это моя программа отправки.Ошибка аутентификации Winsock UDP 10040
#pragma once
#pragma comment(lib,"Ws2_32.lib")
#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
WSAData wsaData;
WORD DllVersion = MAKEWORD(2,2);
int startup_RetVal = WSAStartup(DllVersion, &wsaData);
SOCKET sSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
SOCKADDR_IN addr;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_family = AF_INET;
addr.sin_port = htons(22222);
char buf[200000] = "AR*REF=";
int send_RetVal = sendto(sSocket, buf, 200000, NULL, (SOCKADDR*)&addr, sizeof(addr));
if(send_RetVal == SOCKET_ERROR)
{
cout <<" An error occured " << WSAGetLastError() << endl;
getchar();
}
return 0;
}
Я получаю сообщение об ошибке WSAEMSGSIZE (10040).
Целью является отправить файл размером 100 Кбайт по udp. Мне сказали, что аналогичная ошибка в .NET была решена следующим образом:
IPHostEntry^ IPHostTV;
IPEndPoint^ send_tv_ip;
Socket^ UDPSendTV;
int PortSendTV;
System::String^ IPSend;
send_tv_ip =
gcnew IPEndPoint(IPHostTV->AddressList[0], PortSendTV);
UDPSendTV =
gcnew Socket(send_tv_ip->Address->AddressFamily, SocketType::Dgram, ProtocolType::Udp);
//Increasing buffer and timeout
UDPSendTV->SendTimeout = 1000;
UDPSendTV->SendBufferSize = 100000;
UDPSendTV->SendTo(buff1, 0, size1, SocketFlags::None, send_tv_ip);
Как изменить мои сокеты, чтобы они работали правильно?
Итак, как мне это сделать? И что это такое, тогда 'UDPSendTV-> SendTimeout = 1000; UDPSendTV-> SendBufferSize = 100000; ' – user1744577
@ user1744577: Я не эксперт .NET, но это похоже на настройку тайм-аута отправки сокета и размера буфера отправки, который по-прежнему не позволит вам отправлять UDP-пакеты размером более 64 КБ. – Hasturkun
@ user1744577 реализовать некоторый протокол передачи файлов поверх UDP. Вам придется обрабатывать возможные потери сообщений и получать сообщения вне порядка, т. Е. Повторно выполнять большую часть TCP. Вы могли бы, конечно, просто переключиться на TCP, что все остальные используют для передачи файлов. –