最简单的UDP程序
不喜欢看太复杂的原理说明,只为快速地编出程序,这个是经过简化的最简单的UDP发送程序:
代码
// mywsk.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <stdio.h>
#include <winsock.h>
#pragma comment(lib, "Ws2_32.lib")
void handle_error(void); /* Error handler routine */
int main()
{
WORD wVersionRequested; /* 需要的socket dll 版本信息 */
WSADATA wsaData; /* data for socket lib initialization */
// 初始化winsock库
wVersionRequested = 0x0101; /* 版本号:1.1 */
if ( !WSAStartup( wVersionRequested, &wsaData ) )
{
// 这里要检查一下版本号是否正确,为简化,去掉了
// 打开一个UDP socket
SOCKET sock; /* socket */
struct sockaddr_in address; /* SOCKET地址 */
if ( (sock = socket(AF_INET, SOCK_DGRAM ,0 /*IPPROTO_UDP*/)) != INVALID_SOCKET )
{
address.sin_family=AF_INET; /* internet */
address.sin_port = htons(60000); /* 端口号 */
address.sin_addr.s_addr=inet_addr("127.0.0.1"); // 目的IP地址,向本机发送写"127.0.0.1"
// 循环发送
for(int i=0;i<5000;i++)
{
int err; /* 错误号 */
char buf[256];
sprintf(buf, "Hello,world! i=%d!",i);
// 发送这个字符串
err=sendto(sock,buf,strlen(buf),0,(struct sockaddr *)&address,sizeof(address));
printf("Sent: %s, err:%d\n", buf,err); // err>0时,为发送字节数
}
}
}
WSACleanup(); /* clean up before exit */
exit(0);
}