在C语言中,客户端和服务器端编程是网络通信的基础,本文将详细讨论如何在Linux环境下使用C语言实现一个简单的客户端和服务器端通信程序。
客户端(Client)和服务器端(Server)是计算机网络中的两个基本角色,服务器端负责提供服务,如网页、文件传输等;客户端则向服务器发送请求并接收响应,两者之间通过套接字(Socket)进行通信。
以下是一个简单的C语言客户端代码,用于连接到服务器并发送数据:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define PORT 4321 // 服务器端口 #define MAXDATASIZE 100 int main(int argc, char *argv[]) { int sockfd, num; char buf[MAXDATASIZE]; struct hostent *he; struct sockaddr_in server; if (argc != 2) { printf("Usage: %s <IP Address> ", argv[0]); exit(1); } if ((he = gethostbyname(argv[1])) == NULL) { printf("gethostbyname() error "); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("socket() error "); exit(1); } bzero(&server, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr = *((struct in_addr *)he->h_addr); if (connect(sockfd, (struct sockaddr *)&server, sizeof(server)) == -1) { printf("connect() error "); exit(1); } char str[] = "horst "; if ((num = send(sockfd, str, sizeof(str), 0)) == -1) { printf("send() error "); exit(1); } if ((num = recv(sockfd, buf, MAXDATASIZE, 0)) == -1) { printf("recv() error "); exit(1); } buf[num 1] = '