C语言监听服务器消息的详细实现
在C语言中,监听服务器消息通常涉及使用套接字编程,以下是一个详细的示例,展示如何使用C语言在客户端监听服务器发送的消息。
一、基本概念
套接字(Socket)是网络通信的基本单元,用于在不同主机之间进行数据传输,在C语言中,常用的套接字类型有流套接字(SOCK_STREAM,基于TCP协议)和数据报套接字(SOCK_DGRAM,基于UDP协议),本示例以流套接字为例,因为它提供了可靠的面向连接的服务。
二、代码实现
以下是一个简单的C语言客户端程序,用于连接到服务器并监听服务器发送的消息:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #define SERVER_IP "127.0.0.1" #define SERVER_PORT 8080 #define BUFFER_SIZE 1024 int main() { int sock; struct sockaddr_in server_addr; char buffer[BUFFER_SIZE]; ssize_t bytes_received; // 创建套接字 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } // 设置服务器地址结构体 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); if (inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr) <= 0) { perror("invalid address / Address not supported"); close(sock); exit(EXIT_FAILURE); } // 连接到服务器 if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("connection with the server failed"); close(sock); exit(EXIT_FAILURE); } printf("Connected to the server at %s:%d ", SERVER_IP, SERVER_PORT); // 监听服务器消息 while (1) { bytes_received = recv(sock, buffer, BUFFER_SIZE 1, 0); if (bytes_received < 0) { perror("recv failed"); break; } else if (bytes_received == 0) { printf("Server closed the connection "); break; } buffer[bytes_received] = '