#include "iostream"
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
#define Const_BufLength 1024
#define Const_Port 12345
BOOL InitSocket(void);
WSADATA wsaData;
SOCKET m_socket;
sockaddr_in SerAdd,CliAdd;
int main()
{
if(!InitSocket())
{
cout<<"套接字初始化出错,即将退出"<<endl;
WSACleanup();
system("pause");
return -1;
}
int iLength=sizeof(CliAdd);
int retval;
char strSendMsg[Const_BufLength];
char strRecvMsg[Const_BufLength];
while(1)
{
cout<<"等待客户端回应"<<endl;
memset(strRecvMsg,0,sizeof(strRecvMsg));
retval=recvfrom(m_socket,strRecvMsg,Const_BufLength,0,(SOCKADDR*)&CliAdd,&iLength);
if(retval==SOCKET_ERROR)
{
cout<<"接受失败,错误ID为:"<<WSAGetLastError()<<endl;
break;
}
else if(retval==0)
{
break;
}
else
{
cout<<"IP:Port\t"<<inet_ntoa(CliAdd.sin_addr)<<":"<<ntohs(CliAdd.sin_port)<<'\t'<<strRecvMsg<<endl;
}
memset(strSendMsg,0,sizeof(strSendMsg));
cout<<"收到客户消息,直接转发消息"<<endl;
strcpy(strSendMsg,strRecvMsg);
if(strcmp(strSendMsg,"exit")==0)
{
strcpy(strSendMsg,"收到客户下线的消息,我是服务器,我也下线了");
retval=sendto(m_socket,strSendMsg,sizeof(strSendMsg),0,(SOCKADDR*)&CliAdd,sizeof(CliAdd));
closesocket(m_socket);
WSACleanup();
return 0;
}
retval=sendto(m_socket,strSendMsg,sizeof(strSendMsg),0,(SOCKADDR*)&CliAdd,sizeof(CliAdd));
if(retval==SOCKET_ERROR)
{
cout<<"发送失败,错误ID为:"<<WSAGetLastError()<<endl;
break;
}
else if(retval==0)
{
break;
}
else
{
cout<<"发送成功!"<<endl;
}
}
closesocket(m_socket);
WSACleanup();
return 0;
}
BOOL InitSocket(void)
{
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
cout<<"加载winsock失败,错误ID为:"<<WSAGetLastError()<<endl;
exit(0);
}
m_socket=socket(AF_INET,SOCK_DGRAM,0);
if(INVALID_SOCKET==m_socket)
{
cout<<"套接字创建失败!错误ID为:"<<WSAGetLastError()<<endl;
return FALSE;
}
SerAdd.sin_family=AF_INET;
SerAdd.sin_port=htons(Const_Port);
SerAdd.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
int retval;
retval=bind(m_socket,(SOCKADDR*)&SerAdd,sizeof(SOCKADDR));
if(SOCKET_ERROR==retval)
{
closesocket(m_socket);
cout<<"端口绑定失败! 错误ID为:"<<WSAGetLastError()<<endl;
return FALSE;
}
return TRUE;
}
c++ udp 程序(含服务端和客户端源码)
5星 · 超过95%的资源 需积分: 45 182 浏览量
2009-05-23
09:10:11
上传
评论 6
收藏 4.47MB RAR 举报
monkeywuming
- 粉丝: 1
- 资源: 15
最新资源
- Unity导入Excel文件自动创建class文件和ScriptObject文件,并转化成ScriptObject的插件pro版
- UE4仅k位移产生完美行走动作-UE4项目
- 基于 Python 的校园导航系统
- tensorflow-2.6.3-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.6.2-cp39-cp39-win-amd64.whl
- tensorflow-2.6.2-cp39-cp39-manylinux2010-x86-64.whl
- 基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统源码+使用说明+全部资料.zip
- BPNN-预测.rar
- 灾难分类数据集 PNG(12类 4.8K+ 张图像)
- java8和17的windows、linux版本
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
前往页