通信协议UDP

C | 2018-02-12 09:49:05 | 232次阅读 | 0评

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define  _CRT_SECURE_NO_WARNINGS
#include <winsock2.h>
#pragma comment(lib,"ws2_32")
#include <Winsock2.h>
#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\n", tempBuf);
//发送数据
printf("请输入数据:\n");
scanf("%s",sendBuf);
sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrClient, len);
}
//关闭套接字
closesocket(sockSrv);

return 0;
}

博友评论,共0条
最新评论
  • 陈同志:厉害