-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathudpsrv.cpp
45 lines (34 loc) · 1.14 KB
/
udpsrv.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <cstring>
using namespace std;
void echo_srv(int sock) {
char recvbuf[1024] = {0};
sockaddr_in peeraddr;
while(true) {
socklen_t peerlen = sizeof(peeraddr);
memset(recvbuf, 0, sizeof(recvbuf));
cout << "receiving..." << endl;
int n = recvfrom(sock, recvbuf, sizeof(recvbuf), 0, (sockaddr *)&peeraddr, &peerlen);
cout << "peer addr = " << inet_ntoa(peeraddr.sin_addr) << endl;
cout << "peer port = " << ntohs(peeraddr.sin_port) << endl;
cout << "message: ";
fputs(recvbuf, stdout);
sendto(sock, recvbuf, sizeof(recvbuf), 0, (sockaddr*)&peeraddr, sizeof(peeraddr));
cout << "server successfully send!" << endl;
cout << endl;
}
close(sock);
}
int main() {
int sock = socket(PF_INET, SOCK_DGRAM, 0);
sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sock, (sockaddr *)&servaddr, sizeof(servaddr));
echo_srv(sock);
return 0;
}