Aracılığıyla paylaş


CAsyncSocket::SendToEx

Belirli bir hedefe (tutamaçları IPv6 adresleri) veri göndermek için bu üye işlevini çağırın.

int SendToEx(
   const void* lpBuf,
   int nBufLen,
   UINT nHostPort,
   LPCTSTR lpszHostAddress = NULL,
   int nFlags = 0 
);

Parametreler

  • lpBuf
    Aktarılacak verileri içeren bir arabellek.

  • nBufLen
    Veri uzunluğu lpBuf bayt.

  • nHostPort
    Yuva uygulamasını tanımlayan bağlantı noktası.

  • lpszHostAddress
    Bu nesneye bağlı yuva ağ adresi: "ftp.microsoft.com" veya "128.56.22.8" gibi noktalı bir sayı gibi bir makine adı.

  • nFlags
    Çağrının yapıldığı biçimini belirtir.Bu işlevin semantiği soket seçenekleri tarafından belirlenir ve nFlags parametresi.Bu sonuncusu aşağıdaki değerlerden herhangi birine sahip C++ birleştirilerek oluşturulur OR işleci:

    • msg_dontroute veri yönlendirme tabi olmamalıdır belirtir.Windows Sockets tedarikçi bu bayrak yoksaymayı seçebilirsiniz.

    • msg_oob bant içi veri gönderme (sock_stream sadece).

Dönüş Değeri

Herhangi bir hata oluşursa, SendToEx toplam gönderilen karakter sayısını verir.(Bu belirtilen sayıdan daha az olabileceğine dikkat edin nBufLen.) Aksi halde, değeri socket_error iade edilir ve belirli bir hata kodu çağırarak alınabilir GetLastError.Aşağıdaki hatalar bu üye işlev için geçerlidir:

  • WSANOTINITIALISED başarılı bir AfxSocketInit Bu API kullanmadan önce gerçekleştirilmelidir.

  • wsaenetdown Windows Sockets başlatılmasının algılanan ağ alt sistemi başarısız oldu.

  • wsaeacces İstenen adres bir yayın adresi olsa da, uygun bayrağı ayarlı değil.

  • WSAEINPROGRESS engelleyen bir Windows yuva işlemi devam ediyor.

  • wsaefaultlpBuf veya lpSockAddr parametreleri kullanıcı adres alanının bir parçası olmayan veya lpSockAddr bağımsız değişkeni çok küçük (boyutunu küçük bir sockaddr yapısı).

  • WSAEINVAL ana makine adı geçersiz.

  • wsaenetreset Windows Sockets uygulaması bebeği bıraktığı çünkü bağlantıyı sıfırlamanız gerekir.

  • WSAENOBUFSWindows Sockets uygulaması arabellek kilitlenme raporları.

  • wsaenotconn Yuva bağlı değil (sock_stream sadece).

  • wsaenotsock bir soket tanımlayıcısı değil.

  • WSAEOPNOTSUPP   msg_oob belirtildi, ancak yuva türü değil sock_stream.

  • wsaeshutdown yuva; aşağı Kapat Çağrı yapılamaz SendToEx sonra bir yuvada ShutDown ile çağrılan nHow 1 veya 2'ye ayarlayın.

  • wsaewouldblock yuva işaretlenmiş olarak yapmayan ve istenen işlem engellenebilir.

  • WSAEMSGSIZE socket türüdür sock_dgram, ve veri birimini Windows Sockets uygulaması tarafından desteklenen en büyük değerinden daha büyük.

  • wsaeconnaborted sanal devrenin zaman aşımı veya diğer hata iptal edildi.

  • wsaeconnreset sanal devrenin uzak uç tarafından sıfırlandı.

  • WSAEADDRNOTAVAIL belirtilen adres yerel makineden kullanılabilir değil.

  • wsaeafnosupport ile bu yuva adresleri belirtilen ailesinde kullanılamaz.

  • wsaedestaddrreq bir hedef adresi gereklidir.

  • wsaenetunreach şu anda bu ana bilgisayardan ağa ulaşılamıyor.

Notlar

Bu yöntem aynı şey CAsyncSocket::SendTo IPv6 işler dışında aynı zamanda gibi eski iletişim kuralları yöneliktir.

SendToExdatagramı veya akış yuvalarda kullanılır ve bir yuvada giden veri yazmak için kullanılır.Datagram yuva için temel ağların en büyük IP paket boyutu tarafından belirtilmiş olan aşamaz olunması gereken iMaxUdpDg öğesinin wsadata yapısı doldurulan tarafından AfxSocketInit.Veri atomically temel protokol hata geçirmek için çok uzun ise, WSAEMSGSIZE iade edilir ve hiçbir veri iletilir.

Dikkat edin işleminin başarıyla tamamlanması, bir SendToEx verileri başarıyla teslim edildiğini göstermez.

SendToExyalnızca üzerinde kullanılan bir sock_dgram tarafından tanımlanan belirli bir yuva bir datagram göndermek için yuva lpSockAddr parametresi.

Bir yayın göndermek için (üzerinde bir sock_dgram yalnızca), adres, lpSockAddr parametresi oluşturulmuş özel IP adresini kullanarak INADDR_BROADCAST (WINSOCK Windows Sockets üstbilgi dosyasında tanımlanır.h) ile birlikte istenen bağlantı noktası numarası.Veya, eğer lpszHostAddress parametresi null, yuvanın yayın için yapılandırılmamış.Yayın bir datagram parçalanma ortaya çıktığı, boyutu aşan genellikle önerilmez (üstbilgiler hariç) datagram veri kısmının 512 bayt aşmaması gerektiğini anlamına gelir.

Gereksinimler

Başlık: afxsock.h

Ayrıca bkz.

Başvuru

CAsyncSocket sınıfı

Hiyerarşi grafik

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::Send