#include #include #include #include #include #include #define BUF_SIZE 30 void error_handling(char *message); int main(int argc, char *argv[]) { int recv_sock; int str_len; char buf[BUF_SIZE]; struct sockaddr_in adr; if (argc != 2) { printf("Usage : %s \n", argv[0]); exit(1); } recv_sock = socket(PF_INET, SOCK_DGRAM, 0); memset(&adr, 0, sizeof(adr)); adr.sin_family = AF_INET; adr.sin_addr.s_addr = htonl(INADDR_ANY); adr.sin_port = htons(atoi(argv[1])); if (bind(recv_sock, (struct sockaddr *)&adr, sizeof(adr)) == -1) error_handling("bind() error"); while (1) { //通过 recvfrom 函数接收数据。如果不需要知道传输数据的主机地址信息,可以向 recvfrom 函数的第 5、6 个参数分别传入 NULL、0 str_len = recvfrom(recv_sock, buf, BUF_SIZE - 1, 0, NULL, 0); if (str_len < 0) break; buf[str_len] = 0; fputs(buf, stdout); } close(recv_sock); return 0; } void error_handling(char *message) { fputs(message, stderr); fputc('\n', stderr); exit(1); }