阅读背景:

【转】C++ Socket UDP "Hello World!"

来源:互联网 

//////////////////////////////////////////////////////////////////////////
// UDPServer.cpp

#include <stdio.h>
#include <WINSOCK2.H>

#pragma comment(lib,"WS2_32.lib")
#define BUF_SIZE	64

int main(void)
{
	WSADATA	wsd;
	SOCKET	s;
	int		nRet;

	// 初始化套接字动态库
	if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
	{
		printf("WSAStartup failed !\n");
		return 1;
	}

	// 创建套接字
	s = socket(AF_INET,SOCK_DGRAM,0);
	if(s == INVALID_SOCKET)
	{
		printf("socket() failed ,Error Code:%d\n",WSAGetLastError());
		WSACleanup();
		return 1;
	}

	SOCKET		socketSrv = socket(AF_INET,SOCK_DGRAM,0);
	SOCKADDR_IN addrSrv;
	SOCKADDR_IN addrClient;
	char		buf[BUF_SIZE];
	int			len = sizeof(SOCKADDR);

	// 设置服务器地址
	ZeroMemory(buf,BUF_SIZE);
	addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(5000);

	// 绑定套接字
	nRet = bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
	if(SOCKET_ERROR == nRet)   
    {   
        printf("bind failed !\n");   
        closesocket(s);   
        WSACleanup();   
        return -1;   
    }

	// 从客户端接收数据
	nRet = recvfrom(socketSrv,buf,BUF_SIZE,0,(SOCKADDR*)&addrClient,&len);
	if(SOCKET_ERROR == nRet)   
    {   
        printf("recvfrom failed !\n");   
        closesocket(s);   
        WSACleanup();   
        return -1;   
    }
	// 打印来自客户端发送来的数据
	printf("Recv From Client:%s\n",buf);

	// 向客户端发送数据
	sendto(socketSrv,"UDP Hello World !",sizeof("UDP Hello World !"),0,(SOCKADDR*)&addrClient,len);
	closesocket(s);
	WSACleanup();
	return 0;
}

///////////////////////////////////////



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: