引言C语言因其高效、灵活和可移植性,在嵌入式系统、操作系统和网络编程等领域有着广泛的应用。TCP(传输控制协议)是网络编程中最为常见的协议之一,它提供了可靠的数据传输服务。本文将带您入门C语言TCP编...
C语言因其高效、灵活和可移植性,在嵌入式系统、操作系统和网络编程等领域有着广泛的应用。TCP(传输控制协议)是网络编程中最为常见的协议之一,它提供了可靠的数据传输服务。本文将带您入门C语言TCP编程,并通过实战案例解锁网络编程技巧。
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它提供了数据传输的可靠性、顺序性和完整性。
C语言中,TCP编程通常采用套接字(Socket)来实现。套接字是网络通信的基石,它代表了网络上两个程序之间的连接。
int sockfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);
bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));listen(sockfd, 5);struct sockaddr_in cli_addr;
int clilen = sizeof(cli_addr);
int newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen);char buffer[1024];
int n = read(newsockfd, buffer, 1024);
if (n > 0) { write(newsockfd, buffer, n);
}close(newsockfd);
close(sockfd);int sockfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);
connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));char buffer[1024];
int n = read(sockfd, buffer, 1024);
if (n > 0) { write(sockfd, buffer, n);
}close(sockfd);以下是一个简单的文件传输程序,包括服务器和客户端。
// ...(与前面服务器端代码类似)...
char filename[] = "example.txt";
FILE *file = fopen(filename, "rb");
if (file == NULL) { perror("Error opening file"); exit(1);
}
int n = send(newsockfd, filename, strlen(filename), 0);
while ((n = fread(buffer, 1, sizeof(buffer), file)) > 0) { send(newsockfd, buffer, n, 0);
}
fclose(file);// ...(与前面客户端代码类似)...
char buffer[1024];
int n = recv(sockfd, buffer, sizeof(buffer), 0);
if (n > 0) { FILE *file = fopen(buffer, "wb"); if (file == NULL) { perror("Error opening file"); exit(1); } while ((n = recv(sockfd, buffer, sizeof(buffer), 0)) > 0) { fwrite(buffer, 1, n, file); } fclose(file);
}本文介绍了C语言TCP编程的基础知识和实战技巧。通过学习本文,您应该能够创建简单的TCP服务器和客户端,并实现基本的网络通信功能。在实际应用中,您可以根据需求对程序进行扩展和优化。