socket UDP发送数据返回10013 20C

win7系统,已经是Administrator用户,单播使用的28900端口,并没有其他进程占用端口。在使用sendFrameData函数之前,用了一次广播sendFrameBoradCast。之后在使用单播时,就出现10013错误码,请各位大大帮我解答,谢谢了!!!

int IBUdpDev::sendFrameBoradCast(IBFrame &mFrame)
{
int errCode = -1;;
DWORD sendLen = 0;
DWORD dataLen = 0;
errCode = WSAStartup(MAKEWORD(2, 2), &wasData);
if (errCode != 0)
{
return -1;
}
SOCKET bcSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (bcSocket == INVALID_SOCKET)
{
errCode = WSAGetLastError();
closesocket(bcSocket);
printf("%s: socket eror errCode:%d\n", func, errCode);
return errCode;
}

//3.设置该套接字为广播类型,
bool opt = true;
setsockopt(bcSocket, SOL_SOCKET, SO_BROADCAST, reinterpret_cast<char FAR *>(&opt), sizeof(opt));

//4.设置发往的地址
sockaddr_in addrbc;            //发往的地址    
memset(&addrbc, 0, sizeof(addrbc));
addrbc.sin_family = AF_INET;               //地址类型为internetwork
addrbc.sin_addr.s_addr = INADDR_BROADCAST; //设置ip为广播地址
addrbc.sin_port = htons(BROADCAST_PORT);             //端口号为

int nlen = sizeof(addrbc);
sendLen = mFrame.getFrameLen();
dataLen = sendLen;
BYTE *data = mFrame.getFrameBuffer();

if (!data)
{
    closesocket(bcSocket);
    printf("%s: !data  errCode:%d\n", __func__, errCode);
    return errCode;
}

while (dataLen > 1024) 
{
    if (sendto(bcSocket, (char *)&data[sendLen - dataLen], 1024, 0, reinterpret_cast<sockaddr*>(&addrbc),
        nlen) == SOCKET_ERROR)
    {
        errCode = WSAGetLastError();
        closesocket(bcSocket);
        printf("%s: sendto 11  errCode:%d\n", __func__, errCode);
        return errCode;
    }
    dataLen = dataLen - 1024;
}

if (dataLen > 0)
{
    if (sendto(bcSocket, (char *)&data[sendLen - dataLen], dataLen, 0, reinterpret_cast<sockaddr*>(&addrbc),
        nlen) == SOCKET_ERROR)
    {
        errCode = WSAGetLastError();
        closesocket(bcSocket);
        printf("%s: sendto 22  errCode:%d\n", __func__, errCode);

        return errCode;
    }

    dataLen = 0;
}

closesocket(bcSocket);
WSACleanup();
return 0;

}

int IBUdpDev::sendFrameData(IBFrame &mFrame, const char *mIp, int mPort)
{
int errCode = -1;;
DWORD sendLen = 0;
DWORD dataLen = 0;
errCode = WSAStartup(MAKEWORD(2, 2), &wasData);
if (errCode != 0)
{
return errCode;
}

SOCKET sendSocket= socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sendSocket == INVALID_SOCKET){
    errCode = WSAGetLastError();
    closesocket(sendSocket);

    return errCode;
}

//4.设置发往的地址
sockaddr_in addrsend;            //发往的地址  
memset(&addrsend, 0, sizeof(addrsend));
addrsend.sin_family = AF_INET;              //地址类型为internetwork
addrsend.sin_addr.s_addr = inet_addr(mIp);  //设置ip为
addrsend.sin_port = htons(mPort);               //端口号为
int nlen = sizeof(addrsend);
sendLen = mFrame.getFrameLen();
dataLen = sendLen;
BYTE *data = mFrame.getFrameBuffer();

if (!data)
{
    closesocket(sendSocket);
    printf("%s: !data  errCode:%d\n", __func__, errCode);
    return errCode;
}

if (dataLen > 0) 
{
    if (sendto(sendSocket, (char *)&data[sendLen - dataLen], dataLen, 0, reinterpret_cast<sockaddr*>(&addrsend),
        nlen) == SOCKET_ERROR)
    {
        errCode = WSAGetLastError();
        closesocket(sendSocket);
        printf("%s: sendto 22  errCode:%d\n", __func__, errCode);

        return errCode;
    }

    dataLen = 0;
}

closesocket(sendSocket);
WSACleanup();
return 0;

}

4个回答

广播使用的端口和单播使用的端口要一致

qq_22701117
qq_22701117 为什么要使用相同的端口,如果使用相同的端口,那单播不也就需要设置成广播模式?
2 年多之前 回复

建议用5000以后的端口

qq_22701117
qq_22701117 应该不是端口号的问题
2 年多之前 回复

广播使用的端口和单播使用的端口不一样

广播和单播使用的端口要相同

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linux socket udp发送数据返回socket错误22

linux下用c网络编程用sendto发送数据,总返回socket error代号22是什么错误呢?

udp获取发送端的发送端口

udp进行数据接收,怎样获取发送方的发送端口,用GetPeerName()函数不行啊!谢谢大家!

c# udp sendto目标未开 receivefrom接收不到数据

使用UDP转发数据,转发程序接收数据发给另一个程序C,如果这时接收程序C关了,那么转发程序不再接收数据,而第一个程序一直在发数据 A客户端调用sendto发数据给B客户端 B客户端接受数据后,sendto给C客户端 如果C客户端未开,B发送1条数据后,发送后无异常也不知道成功没,但B不再接收A客户端的数据,即receiveFrom方法也不能用 如果C客户端一直开,则B客户端既能接收数据,又能发送数据 B就是个转发的,C断了之后,B竟然不接收A的数据了 请问大神们,这是个什么原因

Socket同时读写问题,两边都可以发送接收数据

有个协议通过socket通讯,两边都可以发送接收数据。完整的指令是一个请求对应一个应答。 正常来说是需要有个读线程用来监听对方主动发过来的数据,当接收到数据后我就返回个响应信息给对方。我这边主动发送指令后也要进行读取对方响应的消息。但我该如何设计请求与响应这一对信息呢?Socket.Receive又是阻塞的,我希望最好是一个线程接收对方的指令,一个我这边主动发的指令,互相不干扰。

python udp的问题,收不到服务器的返回数据

本来是做个dns解析程序,本地记录找不到的话再向别的服务器请求,但是现在只写了一部分,直接将来自客户端的请求转发给202.106.0.20,但是完全没反应,收不到服务器返回的数据报。求解答 import os import socket import threading #字典,用来存放域名-ip键值对 domain_ip={} #去掉域名字符串最后的换行符 def DelLastChar(str): str_list=list(str) str_list.pop() return "".join(str_list) #从数据报中分离出网址字节码存入list def get_request(your_list): my_list = [] new_list = [] my_list.extend(your_list) re_list = [] thelen = my_list[0] try: while thelen != 0: new_list = new_list + my_list[1:thelen+1] my_list[0:thelen+1] = [] thelen = my_list[0] new_list.append('.') except IndexError: print ("The format of datagram is false!") new_list.pop() return new_list #将网址字节码转换成域名 def digit_to_domian(d_list): length=len(d_list); for index in range(length): if d_list[index]!='.': d_list[index]=chr(d_list[index]) return ''.join(d_list); def make(re_ip,msg): tmp_list = [] for ch in msg: tmp_list.append(ch) tmp_list[4:12] = ['\x00','\x01','\x00','\x01','\x00','\x00','\x00','\x00'] tmp_list = tmp_list+['\xc0','\x0c','\x00','\x01','\x00\ ','\x01','\x00','\x00','\x02','\x58','\x00','\x04'] dive_ip = socket.inet_aton(re_ip) ch_ip = [] for each_ch in dive_ip: ch_ip.append(each_ch) tmp_list = tmp_list + ch_ip re_msg = ''.join(tmp_list) return re_msg #从本地文件读入域名-ip到字典中 data = open('dnsrelay.txt') for each_line in data: domain_ip.setdefault(DelLastChar(each_line.split(' ',1)[-1]),each_line.split(' ',1)[0]) data.close() #监听本地53端口 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind(('127.0.0.1', 53)) print('Bind UDP on 53...') while True: data,(client,port) = s.recvfrom(1024) if(port==53): print(data)#this line can not run else: request = [] request = list(data) domain=digit_to_domian(get_request(request[12:])) s.sendto(data,('202.106.0.20',53)) print(domain)

socket如何实现其中的发送回调函数和完成发送的代码功能

c#socket异步通信中的SendCallback类包含在静态类中如何实现其中的发送回调函数和完成发送的代码功能 以及错误如何解决![![图片说明](https://img-ask.csdn.net/upload/201509/16/1442378500_213820.jpg)图片说明](https://img-ask.csdn.net/upload/201509/16/1442378441_762401.jpg) using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.ComponentModel; using System.Data; using System.Windows.Forms; using System.Threading; namespace DAL { /// <summary> /// Socket接口 /// </summary> static class socket { //Socket public static Socket clientSocket; /// <summary> /// socket连接 /// </summary> /// <returns> /// true 成功 /// false 失败 /// </returns> public static bool SocketConnect() { byte[] receive_buff = new byte[256]; ManualResetEvent connectDone = new ManualResetEvent(false); //连接的信号 ManualResetEvent readDone = new ManualResetEvent(false); //读信号 ManualResetEvent sendDone = new ManualResetEvent(false); //发送结束 //从配置文件获取IP string SocketIP = DAL.Common.ReadConfigString("Recover", "IP"); //从配置文件获取端口 int SocketPort = Convert.ToInt32(DAL.Common.ReadConfigString("Recover", "Port")); //创建IP地址 IPAddress IP = IPAddress.Parse(SocketIP); try { //创建socket实例 clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建网络端点 IPEndPoint ipEnd = new IPEndPoint(IP, SocketPort); //EndPoint ipEnd = (EndPoint)remotepoint; //与目标终端连接 clientSocket.BeginConnect(ipEnd, new AsyncCallback(ConnectCallback), clientSocket);//调用回调函数 connectDone.WaitOne(); if (clientSocket.Connected) { return true; } else { return false; } } catch (Exception e) { string strError = ""; strError += "\r\n SocketIP = " + SocketIP.ToString(); strError += "\r\n SocketPort = " + SocketPort.ToString(); DAL.Common.WriteErrorLog(e, strError); return false; } } public static void ConnectCallback(IAsyncResult ar) { bool connect_flag = false; ManualResetEvent connectDone = new ManualResetEvent(false); //连接的信号 Socket client = (Socket)ar.AsyncState; client.EndConnect(ar); connect_flag = true; connectDone.Set(); } /// <summary> /// Socket发送数据 /// </summary> /// <param name="strSend"> /// 数据的内容 /// </param> public static void SocketSend(string strSend) { Socket tcpsend; //发送创建套接字 ManualResetEvent sendDone = new ManualResetEvent(false);//发送结束 int length = strSend.Length; Byte[] Bysend = new byte[length]; try { Bysend = System.Text.Encoding.Default.GetBytes(strSend); //将字符串指定到指定Byte数组 tcpsend.BeginSend(Bysend, 0, Bysend.Length, 0, new AsyncCallback(SendCallback), tcpsend); //异步发送数据 sendDone.WaitOne(); } catch (Exception e) { string strError = ""; DAL.Common.WriteErrorLog(e, strError); } } private void SendCallback(IAsyncResult ar) //发送的回调函数 { Socket client = (Socket)ar.AsyncState; int bytesSend = client.EndSend(ar); //完成发送 sendDone.Set(); }![图片说明](https://img-ask.csdn.net/upload/201509/16/1442378304_186857.jpg)

java udp 监听和发送数据同一个端口..

现在项目有一个需求.. 举例..给一个设备使用udp通过服务器的8001端口发送数据, 数据发送完成之后会有返回的信息,也是通过8001端口.. 我在代码里先开启了监听8001端口 然后再发送数据...结果.端口冲突..使用两个线程 也是冲突.. 求大神指导..给个思路

java socket 发送二进制流的问题

想通过java socket发送一个二进制流: 0x05 0x03 0x00 0x00 0x00 0x40 0x45 0xbe 说明:这个二进制不代表任何字符串,就是一个命令,服务器端能够识别。 做法是这样的,先申请一块空间赋值,然后发送出去。 char cmd[] = {0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0xbe}; os.print(cmd); os.flush 或者: char cmd[] = {0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0xbe}; String command = new String(cmd); os.print(command); os.flush 用wireshark抓包看的话, 实际发送的数据是: 0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0x3f. 这个是怎么回事儿?有大神知道吗? 我试了下,貌似数据大于0x80的都有这个问题,是不是二进制转化为字符的时候会有特殊处理?如果我真想要发送一个大于0x80的二进制该怎么处理?

wireshark可以抓到UDP包,但端口收不到数据

我将DSP与电脑用网线连接,DSP端向电脑以UDP协议向发送数据。电脑上用wireshark 可以抓到UDP包,但接收端口就是收不到UDP数据。请问这是怎么回事?

react native 的udp在接收服务器返回的数据的时候用了20s才接收到信息

不多说上图 ![图片说明](https://img-ask.csdn.net/upload/201706/08/1496910842_925325.png) 我想服务器发送一条指令 10s返回了我发的这条指令 20s返回服务器该返回的值 (socket.on执行了2次) 比如我发条指令GET-OK 返回值是OK 就是说我socket.send(GET-OK) socket.on(GET-OK) socket.on(OK)

完成端口,接收数据不完全,recv返回0

一个项目,使用完成端口,SOCKET的套接字。recv函数返回0。 具体问题是这样的,我能接收大部分数据,但是每次都少了1436个比特。我看了一下,是因为recv返回0。 然后,我看到网上说这个函数,说是连接被关闭了。我又在发送端发送完了之后,调用shutdown,而不是用的closesocket。 接收端部分代码: while (true) { RtlZeroMemory(fileBuf, DATA_BUFSIZE); nlen = recv(perHandleData->socket, fileBuf, DATA_BUFSIZE, 0); fileInfo->file.Write(fileBuf, nlen); fileCount += nlen; if (fileCount >= fileInfo->dwFileSize||nIndex>=10) { break; } if (nlen == 0) { nIndex++; } } ``` ``` 我发送端用的是循环发送,接收端用的是循环接收。接收端跳出有两种情况,全部接受和recv返回了0。其实只要recv返回了一次0的话,就可以直接跳出循环的了。我这里还是用的十次。 而发送端并没有closesocket,只是调用shutdown停止发送。 请问,我接受不全,是什么原因啊?我看到网上说的另一种情况是:recv函数在等待协议接收数据时网络中断了。 具体是什么原因我也不清楚。请哪位大牛帮帮忙! 分不多,麻烦啦

关于网络调试助手的udp协议的数据传输

用网络调试助手,使用的是 UDP协议传输数据包,怎么样可以把它接受的数据当成要的发送的数据然后发送到别的地方,求大神指教

java socket客户端连接基于netty4的服务端连接成功后如何接受到服务的响应数据?

在client连接netty4服务器后,能够发送数据,并且服务器也能够接受到,但是返回消息时,client无法接收; 在使用while(true)后只能持续发送消息,无法读取服务端返回的消息。

udp 20ms 接收保存端口数据 数据出现重复 缺失,怎么解决?有偿帮忙-急

udp 20ms 接收保存端口数据 数据出现重复 缺失,怎么解决? 代码如下: radarParaCC = new MyUdpClientRadarControl(this); radarParaCC->setUdpPort(8850); radarParaCC->setReceType(5); connect(radarParaCC ,SIGNAL(sendRadarDataFrom23(char*)) ,this ,SLOT(jiexiRadarDataFrom23(char*))); udp部分: void MyUdpClientRadarControl::InitUDPSocket() { //m_groupAddress = QHostAddress("239.255.43.21");//组播功能 m_udpSocket = new QUdpSocket(); //m_udpSocket->bind(QHostAddress::Any, m_UdpPort);//m_UdpPort m_udpSocket->bind(m_UdpPort); //udpSocket->bind(45454, QUdpSocket::ShareAddress); //udpSocket->joinMulticastGroup(groupAddress);//加入组播 connect(m_udpSocket, SIGNAL(readyRead()), this, SLOT(dataReceived()), Qt::DirectConnection); connect(this ,SIGNAL(_sendData()) ,this ,SLOT(dataSend())); } //接收数据 QMutex mutex; void MyUdpClientRadarControl::dataReceived() { char charCheck;//校验位,反正顺序的错位 while (m_udpSocket->hasPendingDatagrams())//hasPendingDatagrams返回true时表示至少有一个数据报在等待被读取 { /*QReadWriteLock lock; lock.lockForWrite(); lock.lockForRead();*/ qint64 iSize = m_udpSocket->pendingDatagramSize(); //接收的消息包:1字节消息类型+1字节结构类型+4字节消息长度+实际消息体 //_StructNetMsg acceptmsg; char accepd[27000]; //memset(accepd, 0, sizeof(accepd) / sizeof(char));//清空端口数据的缓存 qint64 iresult = m_udpSocket->readDatagram(accepd, iSize); WORD aa =(unsigned char)accepd[0]; WORD aa1 = (unsigned char)accepd[1]; WORD aa2 =(unsigned char) accepd[2]; WORD aa3 =(unsigned char) accepd[3]; WORD aa4 =(unsigned char) accepd[4]; WORD aa5 = (unsigned char)accepd[5]; WORD aa6 =(unsigned char) accepd[6]; if(iresult >0) { //allmsg.push_back(acceptmsg); //HG_ProOne_MainShow::instance()->w->dct->jiexiAdsbData(acceptmsg); if(m_receType == 1) { if(accepd[0] == 'M' &&accepd[1] == 'S' &&accepd[2] == 'G') { QString acceptmsg = accepd;// emit sendAdsbData(acceptmsg); } } else if(m_receType == 2) { emit sendYunTaiData(accepd); } else if(m_receType == 3) { emit sendRadarData(accepd); } else if(m_receType == 5) { /*msleep(10);*/ //对包的校验顺序进行验证 mutex.lock(); emit sendRadarDataFrom23(accepd);//@question mutex.unlock(); /* msleep(2);*/ //charCheck = accepd[2];//校验位,反正顺序的错位 /*m_udpSocket->reset();*/ /*qDebug() << (int)accepd[2]<<endl;*/ } //int a = 0; } //将接收到的数据入数据中心层 //memset(accepd, 0, sizeof(accepd) / sizeof(char));//清空端口数据的缓存 //HG_ProOne_MainShow::instance()->w->dct->ddfn->DealDataForNetputinReceiveData(m_iPNumber, acceptmsg);//putinReceiveDataForXW(getonemsg); /* m_udpSocket->*/ /*lock.unlock();*/ } } 保存文件部分: void RadarControl::jiexiRadarDataFrom23(char* corData) { mutex1.lock(); QStringList sections = luJCaiDada.split(QRegExp("[#]")); //把每一个块装进一个QStringList中 QString xmlpath1 = sections[0] + "time"; QFile file5("D:\\2"); //char* corData1; //corData1=corData; if (file5.open(QIODevice::WriteOnly | QIODevice::Append)) { file5.open(QIODevice::WriteOnly); QDataStream out(&file5); out.writeRawData(corData, 27); } file5.close(); } 在@question处

iOS UDP组播服务端收不到客户端发的数据

客户端可以收到服务器发的数据,反过来不行。我想实现双向多播,理论上是可行的吧? 多播绑定的端口是别人向自己发数据的端口吧?加入的多播组应该是向别人发送数据的地址吧? 使用GCDAsyncUdpSocket,为什么只绑定一个端口就行?不是还要绑定IP吗? 本地Socket的IP、端口与发送的目的IP、端口,有点绕晕了,请高手指教

QUdpSocket的writeDatagram函数阻塞

我使用udp发送数据.我预想中udp发送没必要阻塞.但是writeDatagram函数几百毫秒才返回. 不知道为什么.writeDatagram的目标IP不存在.目标端口没有打开

netty客户端向远程服务端发送数据包

首先,感谢每一位来关注的IT前辈,真诚希望您提出宝贵的意见。 我需要的效果: 1.客户端与服务端长连接TCP通信; 2.客户端通过自定义解码器,解析服务端返回的数据包; 3.客户端在服务端返回连接结果后,发送登录请求数据包,需要对数据自定义编码器解析; 4.因为是长连接,服务不能断,还需要发送登陆请求,以及其他验证消息。很重要。 **数据包结构:** 1.固定包头2字节; 2.消息体,全部为文本(ASCII码),汉字是GB2312编码。 3.固定包尾2字节; 我目前代码: public class TCPClient { public void connect(int port,String host)throws Exception{ //网络事件处理线程组 EventLoopGroup group=new NioEventLoopGroup(); //配置客户端启动类 Bootstrap b=new Bootstrap(); b.group(group).channel(NioSocketChannel.class) .option(ChannelOption.TCP_NODELAY, true)//设置封包 使用一次 大数据的写操作,而不是多次小数据的写操作 .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast("decoder",new DealMsg()); //设置自定义解码器 ch.pipeline().addLast("encoder",new MsgEncode()); //设置自定义编码器 ch.pipeline().addLast(new TCPClientHandler()); //设置客户端网络IO处理器 } }); //连接服务器 同步等待成功 ChannelFuture f = b.connect(new InetSocketAddress(host,port)); //同步等待客户端通道关闭 // f.channel().closeFuture().sync(); //不关闭会发生阻塞 Channel channel = f.sync().channel(); Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入"); CarData carData = new CarData(); String line = scanner.nextLine(); carData.setBody(line); //发送请求 channel.writeAndFlush(carData); } //释放线程组资源 // group.shutdownGracefully(); } } public class TCPClientHandler extends ChannelHandlerAdapter { @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { System.out.println("通信异常!!"); cause.printStackTrace(); } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { System.out.println("链接服务端成功!"); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { System.out.println("退出链接!!"); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { System.out.println("接受服务器数据:【 "+msg); } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { ctx.channel().writeAndFlush("数据读取完成!"); } }

windows下C++网络编程,发送组播报文,sendto()函数发送失败,WSAGetLastError()返回错误码为5

1:windows下C++网络编程,发送组播报文,sendto()函数发送失败,WSAGetLastError()返回错误码为5 2:代码如下: // WinsockServer_1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> const int MAX_BUF_LEN = 10; // Link with ws2_32.lib #pragma comment(lib, "Ws2_32.lib") int _tmain(int argc, _TCHAR* argv[]) { WORD wVersionRequested; WSADATA wsaData; int err; // 启动socket api wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { return -1; } if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return -1; } // 创建socket SOCKET connect_socket; connect_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (INVALID_SOCKET == connect_socket) { err = WSAGetLastError(); printf("error! error code is %d/n", err); return -1; } SOCKADDR_IN sin; sin.sin_family = AF_INET; sin.sin_port = htons(3779); //sin.sin_addr.s_addr = INADDR_BROADCAST; sin.sin_addr.s_addr = inet_addr("224.0.0.22");//设置广播地址,window下用这种形式方可 bool bOpt = true; //设置该套接字为广播类型 if (setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt)) == SOCKET_ERROR) { printf("setsockopt error"); return -1; } if (setsockopt(connect_socket, SOL_SOCKET, SO_DEBUG, (char*)&bOpt, sizeof(bOpt)) == SOCKET_ERROR) { printf("setsockopt error"); return -1; } setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt)); int nAddrLen = sizeof(SOCKADDR); char buff[MAX_BUF_LEN] = ""; while (1) { sprintf_s(buff, "%s","ss"); // 发送数据 int nSendSize = sendto(connect_socket, buff, strlen(buff), 0, (SOCKADDR*)&sin, nAddrLen); if (SOCKET_ERROR == nSendSize) { err = WSAGetLastError(); printf("error!, error code is %d/n", err); return -1; } printf("Send: %s/n", buff); Sleep(500); } return 0; }

本地测试中,客户端可以发送数据,但是服务端接收不到数据,具体如下:

vs2008,用C++写了一个服务端和一个客户端,本地测试中,客户端可以发送数据,但是服务端接收不到数据。 现在怀疑很可能是内存分配的问题,但是也怀疑是其他问题。 由于代码有点长就不贴上来了,我想请问一下,造成这种情况的可能原因是什么?

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

MySQL性能优化(五):为什么查询速度这么慢

前期回顾: MySQL性能优化(一):MySQL架构与核心问题 MySQL性能优化(二):选择优化的数据类型 MySQL性能优化(三):深入理解索引的这点事 MySQL性能优化(四):如何高效正确的使用索引 前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的。但这些还完全不够,还需要合理的设计查询。如果查询写的很糟糕,即使表结构再合理、索引再...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

网上很多的文章和帖子中在介绍秒杀系统时,说是在下单时使用异步削峰来进行一些限流操作,那都是在扯淡! 因为下单操作在整个秒杀系统的流程中属于比较靠后的操作了,限流操作一定要前置处理,在秒杀业务后面的流程中做限流操作是没啥卵用的。

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

疫情后北上广深租房价格跌了吗? | Alfred数据室

去年3月份我们发布了《北上广深租房图鉴》(点击阅读),细数了北上广深租房的各种因素对租房价格的影响。一年过去了,在面临新冠疫情的后续影响、城市尚未完全恢复正常运转、学校还没开学等情况下...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

Intellij IDEA 美化指南

经常有人问我,你的 IDEA 配色哪里搞的,我会告诉他我自己改的。作为生产力工具,不但要顺手而且更要顺眼。这样才能快乐编码,甚至降低 BUG 率。上次分享了一些 IDEA 有用的插件,反...

【相亲】96年程序员小哥第一次相亲,还没开始就结束了

颜值有点高,条件有点好

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

一图看完本文 一、 计算机网络体系结构分层 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为...

腾讯面试题: 百度搜索为什么那么快?

我还记得去年面腾讯时,面试官最后一个问题是:百度/google的搜索为什么那么快? 这个问题我懵了,我从来没想过,搜素引擎的原理是什么 然后我回答:百度爬取了各个网站的信息,然后进行排序,当输入关键词的时候进行文档比对……巴拉巴拉 面试官:这不是我想要的答案 我内心 这个问题我一直耿耿于怀,终于今天,我把他写出来,以后再问,我直接把这篇文章甩给他!!! 两个字:倒排,将贯穿整篇文章,也是面试官...

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问