急!急!急!socket的udp上传文件sendto和recvfrom问题。
各位大牛们!最近在弄个udp上传文件的程序。调了好久了,一直有这个问题。首先贴上代码:
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(60000); ///server的监听端口
//server.sin_addr.s_addr=inet_addr("222.35.136.224"); ///server的地址
server.sin_addr.s_addr=inet_addr("192.168.28.148"); //主机的地址(主机作为服务器)
SOCKET socket1 = socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP);
DWORD dwTemp = 0;
DWORD dwSend = 0;
while(dwFileSize > 0)
{
dwSend = sendto(socket1, cBuf+dwTemp ,min(500,dwFileSize) ,0 ,(struct sockaddr*)&server, len);
if(SOCKET_ERROR == dwSend)
{
CString str;
str.Format(_T("Error on send file %d\n"), WSAGetLastError());
AfxMessageBox(str);
}
dwTemp = dwSend;
dwFileSize -= dwSend;
}
char recvBuf[1024] = {0};
dwTemp = 0;
DWORD dwRecv = 0;
while(TRUE)
{
dwRecv = recvfrom(socket1, recvBuf, 1024, 0,(struct sockaddr*)&server, &len);
if(dwRecv == SOCKET_ERROR)
{
CString str;
str.Format(_T("recieve error: %d\n"), WSAGetLastError());
AfxMessageBox(str);
return 0;
}
if(dwRecv == 0)//success
{
break;
}
}
sendto函数发送成功,返回发送的字节数,但是服务器这边收不到数据。
recvfrom函数一直阻塞住,不返回任何值。
各位大牛帮帮忙啊!看看哪里出里问题!弄了好几天了,头疼啊!!!
ps:服务器应该没有问题,我用其他的代码调通过。
[解决办法]
发送程序大概问题不大,你用网络抓包工具先看你这里发没发出去,如果发出去了在服务器上用网络抓包工具看有没有收到,这样就容易定位问题到底在那里了
[解决办法]
你客户端 和服务端是写在一起的? 看看通信通了没
[解决办法]
首先把服务器与客户端放在一台机子上调试下,看看通不通再说。
[解决办法]
防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙防火墙