//Client端代码
#include <winsock2.h>
#include <iostream.h>
#include <stdio.h>
void initClient(); int main()
{
initClient();
return 0;
} void initClient()
{
WSADATA wsaData;
int error=WSAStartup(MAKEWORD(2,2),&wsaData); if(error!=0)
{
cout < <"初始化DLL失败" < <endl;
return;
} if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2)
{
WSACleanup();
cout < <"版本出错" < <endl;
return;
} SOCKET s=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN sockSend;
sockSend.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockSend.sin_port=htons(4000);
sockSend.sin_family=AF_INET; char buff[1024];
strcpy(buff,"hello,it's the first!");
int i=500;
while(--i)
{
int lenword;
lenword=sendto(s,buff,strlen(buff)+1,0,(sockaddr *)&sockSend,sizeof(sockaddr));
cout < <lenword < <"," < <sockSend.sin_port < <":" < <sockSend.sin_addr.S_un.S_addr < <endl;
} closesocket(s); WSACleanup(); }
//Server端代码
#include <winsock2.h>
#include <iostream>
#include <stdio.h>
using namespace std;
void initNet(); int main()
{
initNet();
return 0;
} void initNet()
{
WSADATA wsaData;
int error=WSAStartup(MAKEWORD(1,1),&wsaData); if(error!=0)
{
cout < <"初始化DLL失败" < <endl;
return;
} if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
cout < <"版本出错" < <endl;
return;
} SOCKET s=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN sockSrc;
sockSrc.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sockSrc.sin_port=htons(4000);
sockSrc.sin_family=AF_INET; bind(s,(SOCKADDR *)&sockSrc,sizeof(SOCKADDR)); char recBuff[1024];
memset(recBuff,0,1024); SOCKADDR_IN sockRec;
int len=sizeof(SOCKADDR);
int x=-1;
cout < <sockSrc.sin_port < <":" < <sockSrc.sin_addr.S_un.S_addr < <endl;
while(x==-1)
{
x=recvfrom(s,recBuff,sizeof(recBuff),0,(sockaddr *)&sockRec,&len);
}
printf("the receive is:%s,%d \n",recBuff,x);
closesocket(s);
WSACleanup();
} 程序能够运行,客户端发送的数据服务端收不道,运行时客户端和服务都再一台机器上
大家帮查下错误,谢谢了
#include <winsock2.h>
#include <iostream.h>
#include <stdio.h>
void initClient(); int main()
{
initClient();
return 0;
} void initClient()
{
WSADATA wsaData;
int error=WSAStartup(MAKEWORD(2,2),&wsaData); if(error!=0)
{
cout < <"初始化DLL失败" < <endl;
return;
} if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2)
{
WSACleanup();
cout < <"版本出错" < <endl;
return;
} SOCKET s=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN sockSend;
sockSend.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockSend.sin_port=htons(4000);
sockSend.sin_family=AF_INET; char buff[1024];
strcpy(buff,"hello,it's the first!");
int i=500;
while(--i)
{
int lenword;
lenword=sendto(s,buff,strlen(buff)+1,0,(sockaddr *)&sockSend,sizeof(sockaddr));
cout < <lenword < <"," < <sockSend.sin_port < <":" < <sockSend.sin_addr.S_un.S_addr < <endl;
} closesocket(s); WSACleanup(); }
//Server端代码
#include <winsock2.h>
#include <iostream>
#include <stdio.h>
using namespace std;
void initNet(); int main()
{
initNet();
return 0;
} void initNet()
{
WSADATA wsaData;
int error=WSAStartup(MAKEWORD(1,1),&wsaData); if(error!=0)
{
cout < <"初始化DLL失败" < <endl;
return;
} if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
cout < <"版本出错" < <endl;
return;
} SOCKET s=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN sockSrc;
sockSrc.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sockSrc.sin_port=htons(4000);
sockSrc.sin_family=AF_INET; bind(s,(SOCKADDR *)&sockSrc,sizeof(SOCKADDR)); char recBuff[1024];
memset(recBuff,0,1024); SOCKADDR_IN sockRec;
int len=sizeof(SOCKADDR);
int x=-1;
cout < <sockSrc.sin_port < <":" < <sockSrc.sin_addr.S_un.S_addr < <endl;
while(x==-1)
{
x=recvfrom(s,recBuff,sizeof(recBuff),0,(sockaddr *)&sockRec,&len);
}
printf("the receive is:%s,%d \n",recBuff,x);
closesocket(s);
WSACleanup();
} 程序能够运行,客户端发送的数据服务端收不道,运行时客户端和服务都再一台机器上
大家帮查下错误,谢谢了
增加错误判断后发现是bind失败,求助大虾给个解决办法,先拜谢了