TCP(传输把持协定)是互联网中最常用的传输层协定之一,它供给了坚固、有序的数据传输效劳。C言语因其高机能跟机动性,成为实现TCP编程的首选言语。本文将深刻探究C言语TCP通信的核心技巧,帮助读者轻松控制收集编程。
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);
bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
listen(sockfd, 10);
struct sockaddr_in clientaddr;
int connfd = accept(sockfd, (struct sockaddr *)&clientaddr, sizeof(clientaddr));
int n;
char buf[1024];
while ((n = read(connfd, buf, sizeof(buf))) > 0) {
write(connfd, buf, n);
}
close(connfd);
close(sockfd);
以下是一个简单的TCP效劳器跟客户端示例:
server.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int sockfd, connfd;
struct sockaddr_in servaddr, clientaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8080);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket");
exit(1);
}
bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
listen(sockfd, 10);
while (1) {
int len = sizeof(clientaddr);
connfd = accept(sockfd, (struct sockaddr *)&clientaddr, &len);
char buf[1024];
int n = read(connfd, buf, sizeof(buf));
write(connfd, buf, n);
close(connfd);
}
close(sockfd);
return 0;
}
client.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int sockfd;
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8080);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket");
exit(1);
}
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
char buf[1024];
printf("Enter message: ");
fgets(buf, sizeof(buf), stdin);
write(sockfd, buf, strlen(buf));
read(sockfd, buf, sizeof(buf));
printf("Server: %s", buf);
close(sockfd);
return 0;
}
C言语TCP编程是收集编程的核心技巧之一。经由过程本文的介绍,读者可能轻松控制C言语TCP编程的核心知识,并可能应用所学知识开辟简单的TCP利用顺序。