这是一个点对点方式的UDP接收的例子,我该建一个什么样的工程运行它?
我下载的直接是.cpp文件,用VC打开编译后就出现错误,错误的原因大概是工程不对,所以很多unresolved external symbol的错误#include <winsock2.h>
#include <iostream.h>void main(void)
{
SOCKET sock;

//1.启动SOCKET库,版本为2.0
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 0 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) 
{
cout<<"Socket2.0初始化失败,Exit!";
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 ) 
{
WSACleanup();
return; 
} //2.创建套接字
sock = socket(AF_INET,SOCK_DGRAM,0);
if (sock == INVALID_SOCKET )
{
cout<<"Socket 创建失败,Exit!";
return;
} //3.绑定
sockaddr_in myaddr; //sockaddr_in相当于sockaddr结构
memset(&myaddr,0,sizeof(myaddr));
myaddr.sin_family=AF_INET;
//如果绑定地址不是本机地址或者ADDR_ANY,则recvfrom函数不会正确接收,而是立刻返回
  myaddr.sin_addr.s_addr = inet_addr("192.168.0.7");
//端口号必须和客户发往的端口号一致
myaddr.sin_port=htons(7861);
  bind(sock,(sockaddr*)&myaddr,sizeof(myaddr));

int fromlength = sizeof(SOCKADDR);
char buf[256]="";
long number=0;
while(1){
number++;
recv(sock,buf,sizeof(buf),0);
cout<<number<<":"<<buf<<endl;
memset(buf,0,sizeof(buf));
} if (!closesocket(sock)) 
{
WSAGetLastError();
return;
}
if (!WSACleanup())
{
WSAGetLastError();
return;
}
}

解决方案 »

  1.   

    unresolved external symbol的错误:
    在void main前面加上
    #pragma comment(lib, "ws2_32.lib")
      

  2.   

    这是显示的链接错误--------------------Configuration: UDP_Recv_P2P - Win32 Debug--------------------
    Compiling...
    UDP_Recv_P2P.cpp
    Linking...
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__WSAGetLastError@0
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__closesocket@4
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__recv@16
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__bind@12
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__htons@4
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__socket@12
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
    UDP_Recv_P2P.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
    Debug/UDP_Recv_P2P.exe : fatal error LNK1120: 9 unresolved externals
    执行 link.exe 时出错.UDP_Recv_P2P.exe - 1 error(s), 0 warning(s)
      

  3.   

    少了某库
    少了某lib
    少了某dll
    少了某include
    少了钻研
      

  4.   

    需要要导入库,添加头文件。msdn上有说...