因特殊需求,需要固定发送端UDP数据的IP地址和端口号,以及接收端IP地址和端口号,程序如下:
#include "stdafx.h"
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
char szData[] = "this is an udp packet";
WSADATA wsd;
if(WSAStartup(MAKEWORD(2,2), &wsd))
return INVALID_SOCKET;
SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrLocal;// 发送端IP和端口
memset(&addrLocal, 0, sizeof(SOCKADDR_IN));
addrLocal.sin_family = AF_INET;
addrLocal.sin_addr.S_un.S_addr = htonl(INADDR_ANY); // 可以指定IP,若该IP不存在则绑定失败
addrLocal.sin_port = htons(100);
if(bind(sockClient, (SOCKADDR*)&addrLocal, sizeof(SOCKADDR)) == -1)
return -1;
SOCKADDR_IN addrSrv;// 接收端IP和端口
addrSrv.sin_family = AF_INET;
addrSrv.sin_addr.S_un.S_addr = inet_addr("192.168.1.2");
addrSrv.sin_port = htons(200);
sendto(sockClient, szData, sizeof(szData) / sizeof(char), 0, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
closesocket(sockClient);
WSACleanup();
return 0;
}