📄 server.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h>
#define SERVPORT 3490
#define BACKLOG 10
#define MAXDATASIZE 1000
int main()
{
FILE *fp;
int sockfd,client_fd;
int num;
char buff[MAXDATASIZE];
char filename[100];
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
socklen_t sin_size = sizeof(struct sockaddr_in);
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket创建出错!");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
// my_addr.sin_addr.s_addr = inet_addr("192.168.0.13");
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))
== -1)
{
perror("bind出错!");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1)
{
perror("listen出错!");
exit(1);
}
printf("server is running........\n");
if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr,
&sin_size)) == -1)
{
perror("accept出错");
exit(1);
}
else
{
printf("客户端已经连上\n");
}
printf("开始数据.......\n");
if (send(client_fd, "connect succeed!!! You can send file!!!", 100, 0) == -1)
{
perror("send出错!");
close(client_fd);
close(sockfd);
exit(0);
}
memset(buff, 0, 100);
num=recv(client_fd, buff, 100, 0);
printf("%s", buff);
memset(filename, 0, 100);
strcpy(filename,"/mnt/Nand1/");
strcat(filename,buff);
if ((fp = fopen(filename, "w")) == NULL)
{
printf ("can't open file");
exit(0);
}
while (1)
{
memset(buff, 0, 100);
num=recv(client_fd, buff, 100, 0);
if (num == 0)
{
printf("数据已经接收完!");
fclose(fp);
close(client_fd);
close(sockfd);
exit(0);
}
fprintf(fp, "%s", buff);
// printf("%s", buff);
}
fclose(fp);
close(client_fd);
close(sockfd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -