本程序使用VS2008编写,代码如下:
- #include <winsock2.h>
- #include <stdio.h>
- //在编译采用了WINSOCK2.H的应用程序时,需要链接到WS2_32.LIB库
- #pragma comment(lib,"WS2_32.LIB")
- void main()
- {
- WSADATA wsaData;
- SOCKET SendingSocket;
- SOCKADDR_IN ReceiverAddr;
- int Port = 8060;
- // char SendBuf[1024] = {1};
- // int BufLength = 1024;
- int Ret;
- //初始化Winsock 2.2版本
- if((Ret = WSAStartup(MAKEWORD(2,2),&wsaData)) !=0)
- {
- printf("ERROR:WSAStartup failed with %d/n",Ret);
- return;
- }
- //创建一个新的套接字来接收数据报
- if((SendingSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) == INVALID_SOCKET)
- {
- printf("ERROR:SOCKET failed with %d/n",WSAGetLastError());
- WSACleanup();
- return;
- }
- //建立一个SOCKADDR_IN结构,来识别发送数据报的目的地
- ReceiverAddr.sin_family = AF_INET;
- ReceiverAddr.sin_port = htons(Port);
- ReceiverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
- //把一个数据报发送到接收者
- if((Ret = sendto(SendingSocket,"hello",5,0,(SOCKADDR *)&ReceiverAddr,sizeof(ReceiverAddr)))
- == SOCKET_ERROR)
- {
- printf("ERROR: sendto failed with error %d/n", WSAGetLastError());
- closesocket(SendingSocket);
- WSACleanup();
- return;
- }
- //应用程序完成发送数据报后,关闭套接字
- closesocket(SendingSocket);
- //应用程序结束后 ,调用WSACleanup
- WSACleanup();
- }