stream!=NULL

qq_33031581 2017-11-19 10:15:04
感觉问题应该是出在后面往图片里面写数据的地方,但是不知道哪里错了!接收几百个后就报错
#include "stdafx.h"
#include <winSock2.h>
#include<iostream>
using namespace std;
#pragma comment( lib, "ws2_32.lib")

#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR, 12)

SOCKET udpClientSocket;
int errorCode = 0;
DWORD WINAPI recvFromUdpServer(LPVOID param);

SOCKADDR_IN udpServerAddr;

int _tmain(int argc, _TCHAR* argv[])
{

WSADATA wsaData;
WORD version = MAKEWORD(2,2);
int ret = WSAStartup(version,&wsaData);
if(ret != 0)
{
printf("WSAStartup failed\n");
return(0);
}

udpClientSocket = socket(AF_INET,SOCK_DGRAM,0);
if(udpClientSocket == INVALID_SOCKET)
printf("udpClientSocket create failed\n");
SOCKADDR_IN udpClientAddr;
udpClientAddr.sin_family = AF_INET;
udpClientAddr.sin_port = htons(50001);
//udpClientAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.108");
udpClientAddr.sin_addr.S_un.S_addr = inet_addr("169.254.201.70");
ret = bind(udpClientSocket,(SOCKADDR*)&udpClientAddr,sizeof(SOCKADDR));
if(ret == SOCKET_ERROR)
printf("udpSocket bind error\n");


udpServerAddr.sin_family = AF_INET;
udpServerAddr.sin_port = htons(50002);
//udpServerAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.108");
udpServerAddr.sin_addr.S_un.S_addr = inet_addr("169.254.40.41");

//如果发送的目的地址不可达,接收时忽略收到的ICMP包
BOOL bNewBehavior = FALSE;
DWORD dwBytesReturned = 0;
WSAIoctl(udpClientSocket, SIO_UDP_CONNRESET, &bNewBehavior, sizeof bNewBehavior, NULL, 0, &dwBytesReturned, NULL, NULL);

HANDLE hThread;
DWORD dwThread;
hThread = ::CreateThread(NULL,NULL,recvFromUdpServer,NULL,0,&dwThread);

char a[10];
memset(a,1,10);
for(int i=0; i<10;i++)
{
ret = sendto(udpClientSocket, a, i, 0,(SOCKADDR*)&udpServerAddr,sizeof(SOCKADDR));

Sleep(10);
}
cout<<"already send"<<endl;
while(1)
Sleep(1000);

return 0;

}

DWORD WINAPI recvFromUdpServer(LPVOID param)
{
char recBuf[102400];
int ret;
sockaddr_in addrSrc;
int len = sizeof(sockaddr_in);
int errorCode;
while(1)
{

ret = recvfrom(udpClientSocket,recBuf,102400,0,(SOCKADDR*)&addrSrc,&len);
if(ret == SOCKET_ERROR)
{
errorCode = WSAGetLastError();
//return(0);
}

printf("udp receive data len = %d\n",ret);
char st[]="D:\\新建文件夹\\result.jpg";
FILE *fp=fopen(st,"w");
fwrite(recBuf,sizeof(char),100000,fp);
if(false)
{
closesocket(udpClientSocket);
printf("udp recv Thread exit\n");
return(1);
}

}

}
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
china_jeffery 2017-11-28
  • 打赏
  • 举报
回复
NULL判断、内存释放、野指针 http://blog.csdn.net/china_jeffery/article/category/7262968
赵4老师 2017-11-21
  • 打赏
  • 举报
回复
小心驶得万年船。 请判断每个函数调用的返回值。

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧