socket通信-UDP协议源码
Posted C语言编程学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket通信-UDP协议源码相关的知识,希望对你有一定的参考价值。
//服务器源码
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <winsock2.h>
#pragma comment(lib,"ws2_32")
#include <stdio.h>
int main()
{
//加载套接字
WORD wVersionRequested;//WinSock库的版本号
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
//创建套接字
SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
//绑定套接字
bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
char recvBuf[1000];//接收数据
char sendBuf[1000];//发送数据
char tempBuf[1000];//交换区数据
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
while (1)
{
//等待并接收数据
recvfrom(sockSrv, recvBuf, 1000, 0, (SOCKADDR*)&addrClient, &len);
if ('q' == recvBuf[0])
{
sendto(sockSrv, "q", strlen("q") + 1, 0, (SOCKADDR*)&addrClient, len);
printf("结束!");
break;
}
sprintf(tempBuf, "%s 说:%s", inet_ntoa(addrClient.sin_addr), recvBuf);
printf("%s ", tempBuf);
//发送数据
printf("请输入数据: ");
scanf("%s",sendBuf);
sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrClient, len);
}
//关闭套接字
closesocket(sockSrv);
return 0;
}
//客户端源码
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <winsock2.h>
#pragma comment(lib,"ws2_32")
#include <stdio.h>
int main()
{
//加载套接字
WORD wVersionRequested;//WinSock库的版本号
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
//创建套接字
SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
char recvBuf[1000];//接收数据
char sendBuf[1000];//发送数据
char tempBuf[1000];//交互数据
int len = sizeof(SOCKADDR);
while (1)
{
//发送数据
printf("请输入数据: ");
scanf("%s",sendBuf);
sendto(sockClient, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrSrv, len);
//等待并接收数据
recvfrom(sockClient, recvBuf, 1000, 0, (SOCKADDR*)&addrSrv, &len);
if ('q' == recvBuf[0])
{
sendto(sockClient, "q", strlen("q") + 1, 0, (SOCKADDR*)&addrSrv, len);
printf("结束!");
break;
}
sprintf(tempBuf, "%s 说:%s", inet_ntoa(addrSrv.sin_addr), recvBuf);
printf("%s ", tempBuf);
}
//关闭套接字
closesocket(sockClient);
WSACleanup();
return 0;
}
上面的学习大纲,相信大家都很想学会项目开发,也是找工作的根本。
投资学习是终身授益的,伴随你一生的技术,相信自己技术能改变你一生的命运。想参与VIP系统学习班大团队的同学切勿错过,咨询或办理入学手续可以联系小编。
以上是关于socket通信-UDP协议源码的主要内容,如果未能解决你的问题,请参考以下文章