python连接远程服务器_windows收不到组播

python连接远程服务器_windows收不到组播C/C++code//MulticastSocket.cpp:implementationfile//#include”stdafx.h”#include”MulticastSocket.h”#include”HuanRemoteServiceDlg.h”#include”atlconv.h”#ifdef_DEBUG#definenewDEBUG_NEW#undefTHI…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

C/C++ code// MulticastSocket.cpp : implementation file

//

#include “stdafx.h”

#include “MulticastSocket.h”

#include “HuanRemoteServiceDlg.h”

#include “atlconv.h”

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

CMulticastSocket::CMulticastSocket()

{

m_hWnd = NULL;

m_bConnected = FALSE;

m_sockRecv = INVALID_SOCKET;

m_sockGroup = INVALID_SOCKET;

}

CMulticastSocket::~CMulticastSocket()

{

}

BOOL CMulticastSocket::InitInstance()

{

WSADATA wsadata;

if(WSAStartup(0x0202, & wsadata) != 0)

{

TRACE(“ERROR : InitInstance !\n”);

return FALSE;

}

return TRUE;

}

BOOL CMulticastSocket::UninInstance()

{

if(WSACleanup() != 0)

{

TRACE(“ERROR : UninInstance – %d .\n”, WSAGetLastError());

return FALSE;

}

return TRUE;

}

BOOL CMulticastSocket::IsConnected()

{

return m_bConnected;

}

BOOL CMulticastSocket::CreateInstance(const char* strGroupAddr, unsigned short sPort, HWND hWnd)

{

if(m_bConnected == TRUE)

{

TRACE(“Has created successfully .\n”);

return TRUE;

}

m_hWnd = hWnd;

m_sockRecv = socket(AF_INET, SOCK_DGRAM, 0);

if(m_sockRecv == INVALID_SOCKET)

{

TRACE(“ERRROR : socket – %d .\n”, WSAGetLastError());

return FALSE;

}

int optval = 1;

if(setsockopt(m_sockRecv, SOL_SOCKET, SO_REUSEADDR, (char *) & optval, sizeof(optval)) == SOCKET_ERROR)

{

TRACE(“ERRROR : setsockopt(SO_REUSEADDR) – %d .\n”, WSAGetLastError());

return FALSE;

}

m_saLocal.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

m_saLocal.sin_family = AF_INET;

m_saLocal.sin_port = htons(sPort);

if(bind(m_sockRecv, (sockaddr *) & m_saLocal, sizeof(m_saLocal)) == SOCKET_ERROR)

{

TRACE(“ERRROR : bind(SO_REUSEADDR) – %d .\n”, WSAGetLastError());

return FALSE;

}

m_saGroup.sin_addr.S_un.S_addr = inet_addr(strGroupAddr);

m_saGroup.sin_family = AF_INET;

m_saGroup.sin_port = htons(sPort);

ip_mreq mcast;

mcast.imr_multiaddr.S_un.S_addr = m_saGroup.sin_addr.S_un.S_addr;

mcast.imr_interface.S_un.S_addr = m_saLocal.sin_addr.S_un.S_addr;

if (setsockopt(m_sockRecv, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) & mcast, sizeof(mcast)) == SOCKET_ERROR)

{

TRACE(“ERRROR : setsockopt(IP_ADD_MEMBERSHIP) – %d .\n”, WSAGetLastError());

return FALSE;

}

//optval = 16;

optval = 1;

if (setsockopt(m_sockRecv, IPPROTO_IP, IP_MULTICAST_TTL, (char *) & optval, sizeof(optval)) == SOCKET_ERROR)

{

TRACE(“ERRROR : setsockopt(IP_MULTICAST_TTL) – %d .\n”, WSAGetLastError());

return FALSE;

}

int ret = WSAAsyncSelect(m_sockRecv, m_hWnd, WM_MULTIPOINTEVENT, FD_WRITE | FD_READ | FD_QOS | FD_GROUP_QOS | FD_CONNECT);

if(ret == SOCKET_ERROR)

{

TRACE(“ERRROR : WSAAsyncSelect – %d .\n”, WSAGetLastError());

return FALSE;

}

m_bConnected = TRUE;

return TRUE;

}

int CMulticastSocket::RecvData(char * pData, int nSize, sockaddr * pSA, int * pSALen)

{

if(m_bConnected == FALSE)

{

TRACE(“ERROR : RecvData – m_bConnected == FALSE .\n”);

return SOCKET_ERROR;

}

int ret;

if((ret = recvfrom(m_sockRecv, pData, nSize, 0, pSA, pSALen)) == SOCKET_ERROR)

{

TRACE(“ERROR : recvfrom – %d .\n”, WSAGetLastError());

return SOCKET_ERROR;

}

return ret;

}

int CMulticastSocket::SendData(const char * pData, int nSize)

{

if(m_bConnected == FALSE)

{

TRACE(“ERROR : SendData – m_bConnected == FALSE .\n”);

return SOCKET_ERROR;

}

int ret = sendto(m_sockRecv, pData, nSize, 0, (sockaddr *) & m_saGroup, sizeof(m_saGroup));

if(ret == SOCKET_ERROR)

{

TRACE(“ERROR : sendto — %d .\n”, WSAGetLastError());

return SOCKET_ERROR;

}

return ret;

}

void CMulticastSocket::Close()

{

if(m_sockRecv != INVALID_SOCKET)

{

///凑合着用

ip_mreq mcast;

mcast.imr_multiaddr.S_un.S_addr = m_saGroup.sin_addr.S_un.S_addr;

mcast.imr_interface.S_un.S_addr = m_saLocal.sin_addr.S_un.S_addr;

if (setsockopt(m_sockRecv, IPPROTO_IP, IP_DROP_MEMBERSHIP, (char *)&mcast, sizeof(mcast)) == SOCKET_ERROR)

{

TRACE(“ERRROR : setsockopt(IP_DROP_MEMBERSHIP) – %d .\n”, WSAGetLastError());

}

///

closesocket(m_sockRecv);

}

if(m_sockGroup != INVALID_SOCKET)

{

closesocket(m_sockGroup);

}

m_hWnd = NULL;

m_bConnected = FALSE;

m_sockRecv = INVALID_SOCKET;

m_sockGroup = INVALID_SOCKET;

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187075.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eclipse如何导入java文件_xml表格

    eclipse如何导入java文件_xml表格代码快速实现xml转换为Excel(xml转excel通用类-java-完成代码可作工具使用)用代码实现xml文件/数据转换为excel文件。(java)—-何潮背景:最近项目要做导出功能,但导出的数据对象类型实在太多了,一个个去实现;实在是没心情去做。于是———-意义:快速实现数据导出为什么是xmltoexcel?因为项目中可以直接使用xml数据。所以就选择xm…

    2022年8月22日
    9
  • win7 boot设置_重装系统boot missing

    win7 boot设置_重装系统boot missing转自 http://blog.wsdd.org/安装linux,vista/win7双系统后,怎么引导是个问题理论上,可以从windows的bootloader引导linux,也可以linux的grub引导windows但windows更霸道,经常霸占MBR,所以最好是linux不放MBR,然后从windows的bootloader引导linux把linux装在自己的分区,不要

    2022年10月12日
    5
  • JAVA和C++区别

    JAVA和C++区别 JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。Java和

    2022年7月7日
    17
  • linux开启ssh命令(linux开启端口命令)

    在使用SSH时,经常会出现用sshsecureshellclient连接linux连接不上:解决方法如下: 如果没安装ssh,其安装过程:1.以root身份登入系统(没登入系统和没有足够的权限都不能安装,晕,这不是废话)2.检查安装系统时是否已经安装SSH服务端软件包: rpm-qa|grepopenssh 若显示结果中包含openssh-serve

    2022年4月14日
    383
  • 第五章 更换cdh版本,hive的安装使用,原理讲解

    第五章 更换cdh版本,hive的安装使用,原理讲解第五章 更换cdh版本,hive的安装使用,原理讲解

    2022年4月23日
    70
  • Discuz论坛搬家教程

    Discuz论坛搬家教程搬家之前最好先备份1.备份数据库(管理中心->站长->数据库)2.复制整个bbs工程(ps:需要搬家的论坛,以下均用bbs代替)到新的服务器上;3.进入新下载的Discuz(ps:上官方下载一个和你以前论坛一样编码的最新版下来)安装目录upload/install里复制index.php文件到bbs/install目录下;(新Discuz安装包下载…

    2022年7月25日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号