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

📄 server.c

📁 用C语言开发的在Linux平台上的TFTP(RFC1380)服务器端和客户端. 支持目录列表, 可变块大小(RFC2348). 传输模式只支持二进自制模式. 停止等待机制作为数据传输的基本机制
💻 C
字号:
/********************************************** * Author: ideawu(www.ideawu.net) * Date: 2007-04 * File: server.c *********************************************/#include "tftpx.h"#include "work_thread.h"void config(){	conf_document_root = ".";//"/home/ideawu/books";}int main (int argc, char **argv){	int sock;	int done = 0;	// Server exit.	socklen_t addr_len;	pthread_t t_id;	struct sockaddr_in server;		config();		if((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0){		printf("Server socket could not be created.\n");		return 0;	}		server.sin_family = AF_INET;	server.sin_addr.s_addr = INADDR_ANY;	server.sin_port = htons(SERVER_PORT);	if (bind(sock, (struct sockaddr *) &server, sizeof(server)) < 0){		printf("Server bind failed. Server already running? Proper permissions?\n");		return 2;	}		printf("Server started.\n");		struct tftpx_request *request;	addr_len = sizeof(struct sockaddr_in);	while(!done){		request = (struct tftpx_request *)malloc(sizeof(struct tftpx_request));		memset(request, 0, sizeof(struct tftpx_request));		request->size = recvfrom(				sock, &(request->packet), MAX_REQUEST_SIZE, 0,				(struct sockaddr *) &(request->client),				&addr_len);		request->packet.cmd = ntohs(request->packet.cmd);		printf("Receive request.\n");		if(pthread_create(&t_id, NULL, work_thread, request) != 0){			printf("Can't create thread.\n");		}	}	return 0;}

⌨️ 快捷键说明

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