📄 pong.c
字号:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdlib.h>
#include <net/if.h>
#define BUFMAX 100
int main(void)
{
int pong_sockfd;
struct sockaddr_in pong_addr, recv_addr;
int recv_addr_len;
char recv_buf[BUFMAX], *send_buf = "pres\n";
int recv_len;
char buf[BUFMAX];
if ((pong_sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("create socket error!");
}
//绑定到7000端口
bzero((char *) &pong_addr, sizeof(pong_addr));
pong_addr.sin_family = AF_INET;
pong_addr.sin_addr.s_addr = htonl(INADDR_ANY);
pong_addr.sin_port = htons(7000);
if (bind(pong_sockfd, (struct sockaddr *)&pong_addr, sizeof(pong_addr)) < 0) {
perror("bind service socket error!");
}
//一直监听
for(;;) {
printf("In pong service...\n");
bzero((char *) &recv_addr, sizeof(recv_addr));
recv_len = recvfrom(pong_sockfd, recv_buf, BUFMAX, 0, (struct sockaddr *) &recv_addr, &recv_addr_len);
recv_buf[recv_len] = '\0';
if (0 == strcmp(recv_buf, "ping\n")) {
//just a test
printf("recv buf : %s, recv_ip : %s, recv_port : %d\n", recv_buf, inet_ntoa(recv_addr.sin_addr), ntohs(recv_addr.sin_port));
if (sendto(pong_sockfd, send_buf, strlen(send_buf), 0, (struct sockaddr *) &recv_addr, sizeof(recv_addr)) < 0) {
perror("sendto error");
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -