前面我们了解了 UDP的编程步骤为:
客户端:创建套接字、接收消息、发送消息、接收消息
服务端:创建套接字、绑定地址信息、接收消息、发送消息、接收消息
(注:客户端不推荐绑定地址信息,因为有可能有多个客户端,如果绑定地址信息,就只能实现一个客户端和一个服务端之间发送数据)
现在让我们跟着步骤来写一下代码
UDP代码
客户端:
#include <arpa/inet.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sockfd < 0)
{
perror("socket");
return 0;
}
struct sockaddr_in peer_addr;
peer_addr.sin_family = AF_INET;
peer_addr.sin_port = htons(19999);
peer_addr.sin_addr.s_addr = inet_addr("192.168.115.133");
while(1)
{
std::string s;
getline(std::cin,s);
ssize_t send_size = sendto(sockfd,s.c_str(),s.size(),0,(struct sockaddr*)&peer_addr,sizeof(pe er_addr));
if(send_size < 0)
{
perror("sendto");
continue;
}
char buf[1024] = {
0};
ssize_t recv = recvfrom(sockfd, buf,sizeof(buf) - 1,0,NULL,NULL);
if(recv < 0)
{
perror("recvfrom");
continue;
}
printf("svr say:%s\n",buf);
}
close(sockfd);
return 0;
}
服务端:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <iostream>