UDP服务器端代码:

#include "stdafx.h"  
#include <winsock2.h>  
#include <iostream>  
#pragma comment(lib,"ws2_32.lib")  
#define  PORT 9000  //对外服务端口  
  
using namespace  std;  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
    WSADATA wsaData={0};  
    int iResutl = WSAStartup(0x0202,&wsaData);  
  
    SOCKET sock = socket(AF_INET,SOCK_DGRAM,0);  
    if(sock == INVALID_SOCKET)  
    {  
        cout <<"创建套接字失败!" <<endl;  
    }  
  
    sockaddr_in sa     ={AF_INET};  
    sa.sin_port        = htons(PORT);//开放给外部的端口  
    sa.sin_addr.s_addr = 0;          //本机地址  
    int n = bind(sock,(sockaddr*)&sa,sizeof(sa));  
    if(SOCKET_ERROR == n)  
    {  
        cout << "端口绑定失败!"<<endl;  
    }  
  
    cout << "UDP服务器启动" <<endl;  
    char buff[1000]={0};  
  
    sockaddr_in form;  
    int len = sizeof(form);  
    int ret = 0;  
    while(ret =recvfrom(sock,buff,1000,0,(sockaddr*)&form,&len))  
    {  
        cout << "IP地址来自:" << inet_ntoa(form.sin_addr) <<"端口:"<< 
        htons(form.sin_port) <<endl; 
         
        cout << buff << endl;  
        memset(buff,0,1000);  
    }  
      
    return 0;  
}

UDP客户端代码如下:

#include <winsock2.h>  
#pragma comment(lib,"ws2_32.lib")  
#define PORT 8050 //自己的端口  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
    //UDP客户端  
    WSADATA wsaData={0};  
    int iResult = WSAStartup(0x0202,&wsaData);  
  
    SOCKET sock = socket(AF_INET,SOCK_DGRAM,0);//UDP协议类型  
  
    SOCKADDR_IN sa={AF_INET,htons(PORT)};  
    int n = bind(sock,(sockaddr*)&sa,sizeof(sa));//绑定端口,可以不填端口  
  
  
    SOCKADDR_IN to={AF_INET};  
    to.sin_port = htons(9000);                   //对方端口  
    to.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //对方IP地址  
    int a = sendto(sock,"hello",5,0,(sockaddr*)&to,sizeof(to));  
  
}

用MFC类库中的CSocket类写客户端代码如下:

// Client.cpp : 定义控制台应用程序的入口点。  
#include "stdafx.h"  
#include <afxwin.h>  
#include <afxsock.h>  
#include <iostream>  
using namespace std;  
int _tmain(int argc, _TCHAR* argv[])  
{  
    //控制台中要加这一句,否则出错  
    if(!AfxWinInit(::GetModuleHandle(NULL),NULL,::GetCommandLine(),0))  
    {  
        return FALSE;  
    }  
  
    AfxSocketInit();//初始化Socket库  
  
    CSocket sock;  
    BOOL ret = sock.Create(29081,SOCK_DGRAM);  
    if(!ret)  
    {  
       cout << "Socket创建错误" << WSAGetLastError() <<endl;  
    }  
      
    char buff[1000]={"hello123"};  
    sock.SendTo(buff,strlen(buff),9000,_T("127.0.0.1"));  
  
    getchar();  
  
    return 0;  
}