#include<WINSOCK2.H>
#include<stdio.h>
#include<stdlib.h>
#pragma comment(lib, "WS2_32.lib")
int main()
{
WSADATA wsadata; //WSADATA变量,用于初始化windows socket
SOCKET RecvSocket; //发送消息的SOCKET
SOCKADDR_IN RecvAddr; //服务器端地址
u_short port = 8805; //服务器端监听地址
char RecvBuf[1024]; //发送数据的缓冲区
int BufLen = 1024; //缓冲区大小
SOCKADDR_IN SenderAddr; //客户端的地址
int SenderAddrSize = sizeof(SenderAddr);
int retVal = -1;
int i;
//初始化winsock
WSAStartup(MAKEWORD(2, 2), &wsadata);
//创建接收数据包的socket
RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
//设置本机地址和端口
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(port);
RecvAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
//将socket与指定端口和IP绑定
retVal = bind(RecvSocket, (SOCKADDR *)&RecvAddr, sizeof(RecvAddr));
if (SOCKET_ERROR == retVal)
{
printf("bind failed\n");
closesocket(RecvSocket);
WSACleanup();
return -1;
}
else
printf("bind success\n");
//接收数据
printf("Recving data:\n");
while (TRUE)
{
retVal = recvfrom(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR *)&SenderAddr, &SenderAddrSize);
if (SOCKET_ERROR == retVal)
{
printf("recv failed !\n");
closesocket(RecvSocket);
WSACleanup();
return -2;
}
else//打印接收到的数据
{
printf("retVal=%d\n", retVal);
for (i = 0; RecvBuf[i]!='\0'; i++)
printf("%c", RecvBuf[i]);
printf("\n");
}
//将收到的数据回复给客户端
printf("send data to client:\n");
retVal = sendto(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR *)&SenderAddr, SenderAddrSize);
if (SOCKET_ERROR == retVal)
{
printf("send failed !\n");
closesocket(RecvSocket);
WSACleanup();
return -3;
}
else//打印发给客户端的数据
{
printf("retVal=%d\n", retVal);
for (i = 0; RecvBuf[i] != '\0'; i++)
printf("%c", RecvBuf[i]);
printf("\n");
}
}
//关闭socket
printf("Finished recving data.\n");
closesocket(RecvSocket);
WSACleanup();
system("pause");
return 0;
}
windows平台下基于UDP的socket编程
需积分: 42 56 浏览量
2015-07-01
17:12:28
上传
评论 1
收藏 2KB ZIP 举报
qianlimaboy
- 粉丝: 0
- 资源: 2
最新资源
- 基于 Java的扫雷程序毕业设计
- axure9 里面有码 axure9 里面有码
- 551-2404242311-1.amr
- 自己搭建的关于springboot整合mybatis的框架.zip
- 这是一个保存Springboot+MyBaits项目的仓库.zip
- tensorflow-gpu-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.4-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-gpu-2.7.4-cp38-cp38-manylinux2010-x86-64.whl
- 詹佳 陈敏 口语2.mp3
- 图书管理系统毕业设计Java语言实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈