UDP服务器客户端搭建
UDP服务器代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;char buffer[BUFFER_SIZE];struct sockaddr_in servaddr, cliaddr;sockfd = socket(AF_INET, SOCK_DGRAM, 0);memset(&servaddr, 0, sizeof(servaddr));memset(&cliaddr, 0, sizeof(cliaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));socklen_t len = sizeof(cliaddr);int n = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&cliaddr, &len);buffer[n] = '\0';printf("Client: %s\n", buffer);sendto(sockfd, buffer, strlen(buffer), 0, (struct sockaddr *)&cliaddr, len);return 0;
}
UDP客户端代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;char buffer[BUFFER_SIZE];struct sockaddr_in servaddr;sockfd = socket(AF_INET, SOCK_DGRAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");printf("Enter message: ");fgets(buffer, BUFFER_SIZE, stdin);sendto(sockfd, buffer, strlen(buffer), 0, (struct sockaddr *)&servaddr, sizeof(servaddr));recvfrom(sockfd, buffer, BUFFER_SIZE, 0, NULL, NULL);printf("Server: %s\n", buffer);return 0;
}
TCP并发服务器搭建
TCP并发服务器代码(多进程)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/wait.h>#define PORT 8080
#define BUFFER_SIZE 1024void handle_client(int connfd) {char buffer[BUFFER_SIZE];int n = read(connfd, buffer, BUFFER_SIZE);buffer[n] = '\0';printf("Client: %s\n", buffer);write(connfd, buffer, strlen(buffer));close(connfd);
}int main() {int sockfd, connfd;struct sockaddr_in servaddr, cliaddr;socklen_t len;sockfd = socket(AF_INET, SOCK_STREAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));listen(sockfd, 5);while (1) {len = sizeof(cliaddr);connfd = accept(sockfd, (struct sockaddr *)&cliaddr, &len);if (fork() == 0) {close(sockfd);handle_client(connfd);exit(0);}close(connfd);}return 0;
}
TCP客户端代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;char buffer[BUFFER_SIZE];struct sockaddr_in servaddr;sockfd = socket(AF_INET, SOCK_STREAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));printf("Enter message: ");fgets(buffer, BUFFER_SIZE, stdin);write(sockfd, buffer, strlen(buffer));read(sockfd, buffer, BUFFER_SIZE);printf("Server: %s\n", buffer);close(sockfd);return 0;
}
作业: