⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 该例子程序为cgi相关的小程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>



#define PORT		1234
#define BUFF_SIZE	1024

main(void)
{
	struct sockaddr_in		sin;
	struct sockaddr_in		pin;
	int						sock;
	int						temp_sock;
	int						addr_size;
	char					buff[BUFF_SIZE];
	int						i, len;
	
	/* Create socket */
	if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0){
		perror("call to socket!");
		exit(1);
	}
	
	/* Init */
	bzero(&sin, sizeof(sin));
	sin.sin_family = AF_INET;
	sin.sin_addr.s_addr = INADDR_ANY;
	sin.sin_port = htons(PORT);
	
	/* Bind */
	if(bind(sock, (struct sockaddr*)&sin, sizeof(sin)) < 0){
		perror("call to bind!");
		exit(1);
	}
	
	/* Listen */
	if(listen(sock, 10) < 0){
		perror("call to listen!");
	}
	
	printf("Accepting connections ... \n");
	for(;;){
		temp_sock = accept(sock, (struct sockaddr*)&pin, &addr_size);
		
		if(temp_sock < 0){
			perror("call to accept!");
			exit(1);
		}
		
		/* Receive data from client */
		if(recv(temp_sock, buff, BUFF_SIZE, 0) < 0){
			perror("call to recv!");
		}
		
		printf("receive from client: %s\n", buff);
		
		/* Data convert at server side */
		len = strlen(buff);
		for(i = 0; i < len; i ++){
			buff[i] = toupper(buff[i]);
		}
		
		/* Send data to client */
		if(send(temp_sock, buff, len, 0) < 0){
			perror("call to send!");
			exit(1);
		}
		
		/* Close */
		if(close(temp_sock) < 0){
			perror("call to close!");
			exit(1);
		}
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -