在windows平台下UDP协议的服务器实现
// 创建Socket
// 设置Socket的一些属性 比如IP地址,端口号
// 绑定
#include "stdafx.h"
#include <iostream>
#include "winsock2.h"
#pragma comment( lib, "WS2_32.lib" )
using namespace std;
int _tmain( int argc , _TCHAR* argv[])
{
WSADATA wsaData ;
WSAStartup( MAKEWORD (
2, 2 ), &wsaData );
// 创建Socket
SOCKET RecvSocket ;
RecvSocket = socket ( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
// 设置Socket的一些属性 比如IP地址,端口号
sockaddr_in RecvAddr ;
RecvAddr.sin_family = AF_INET;
int Port =
27015;
RecvAddr.sin_port = htons( Port);
RecvAddr.sin_addr .s_addr = htonl( INADDR_ANY );
// 绑定
bind( RecvSocket ,
(SOCKADDR *)& RecvAddr, sizeof (RecvAddr)
);
cout<<"Receiving
datagrams... ...." <<endl;
char RecvBuf [1024];
int BufLen =
1024;
sockaddr_in SenderAddr ;
int SenderAddrSize = sizeof( SenderAddr );
while(1)
{
// 通过UDP协议 从客户端接收数据
// 通过UDP协议 从客户端接收数据
recvfrom( RecvSocket , RecvBuf, BufLen,
0, (SOCKADDR *)&SenderAddr,
& SenderAddrSize );
cout<<"Receiving
Data " <<RecvBuf<< "From
IP__"<< inet_ntoa(SenderAddr .sin_addr)<< "
Port___"<< SenderAddr.sin_port <<endl;
}
cout<<"Finish" <<endl;
closesocket( RecvSocket );
cout<<"Exiting" <<endl;
WSACleanup();
return 0;
}