基于UDP的socket编程
UDP服务器代码
/*
* 基于udp的socket编程
*/
/*
* udp服务器端代码
*/
#include<winsock2.h>
#include<stdio.h>
#include<windows.h>
#include<iostream>
#include<ws2tcpip.h>
#pragma comment(lib, "WS2_32.lib")
using namespace std;
int main()
{
WSADATA data; //定义结构体变量
WORD w = MAKEWORD(2, 0); //定义套接字版本
::WSAStartup(w, &data); //初始化套接字库
SOCKET s; //定义套接字句柄
s = ::socket(AF_INET, SOCK_DGRAM, 0); //创建UDP套接字
sockaddr_in addr; //套接字地址结构变量
int n = sizeof(addr); //地址结构变量大小
addr.sin_family = AF_INET;
addr.sin_port = htons(75);
addr.sin_addr.S_un.S_addr = INADDR_ANY;
::bind(s, (sockaddr*)&addr, sizeof(addr)); //绑定套接字
cout << "UDP服务器启动..." << endl;
char buffer[10] = { 0 };
sockaddr_in addr2;
char sztext[] = "欢迎你\n"; //发送到客户端的数据
char clientAddr[30];
while (true)
{
//接受客户端的信息
if (::recvfrom(s, buffer, 10, 0, (sockaddr*)&addr2, &n) != 0)
{
cout << "已经连接上" << inet_ntop(AF_INET, &addr2.sin_addr, clientAddr, 30) << endl;
cout << buffer << endl;
//发送数据到客户端
::sendto(s, sztext, sizeof(sztext), 0, (sockaddr*)&addr2, n);
break;
}
}
::closesocket(s);
::WSACleanup();
if (getchar())
{
return 0;
}
else
{
::Sleep(100);
}
}
UDP客户端代码
/*
* UDP客户端代码
*/
#include<winsock2.h>
#include<stdio.h>
#include<windows.h>
#include<iostream>
#include<ws2tcpip.h>
#pragma comment(lib, "WS2_32.lib") //显示连接套接字库
using namespace std;
int main()
{
WSADATA data;
WORD w = MAKEWORD(2, 0);
::WSAStartup(w, &data);
SOCKET s;
s = ::socket(AF_INET, SOCK_DGRAM, 0); //创建UDP套接字
sockaddr_in addr, addr2;
int n = sizeof(addr);
char buff[10] = { 0 };
addr.sin_family = AF_INET;
addr.sin_port = htons(75);
inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr.S_un.S_addr);
cout << "UDP客户端已启动" << endl;
char sztext[] = "你好\n";
//发送信息
if (::sendto(s,sztext,sizeof(sztext), 0, (sockaddr*)&addr, n)!=0)
{
::recvfrom(s, buff, 10, 0, (sockaddr*)&addr2, &n);
cout << "服务器说:" << buff << endl;
::closesocket(s);
::WSACleanup();
}
if (getchar())
{
return 0;
}
else
{
::Sleep(100);
}
}
posted on 2022-07-13 23:19 xcxfury001 阅读(99) 评论(0) 收藏 举报
浙公网安备 33010602011771号