📄 server.c
字号:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/tcp.h>
#include <time.h>
int main()
{
int fd;
int address_len;
struct sockaddr_in address;
fd_set fdset,fcset;
FILE *fb;
fd = socket(AF_INET, SOCK_STREAM, 0);
address.sin_family = AF_INET;
address.sin_addr.s_addr = htonl(INADDR_ANY);
address.sin_port = htons(8888);
address_len = sizeof(address);
bind(fd, (struct sockaddr *)&address, address_len);
listen(fd, 64);
while(1)
{
struct sockaddr_in client_address;
int len,z;
int client_sockfd;
char data_send[29467],data_recv[20];
struct timeval timeout;
int on = 1;
timeout.tv_sec = 1;
timeout.tv_usec = 0;
FD_ZERO(&fdset);
FD_CLR(fd, &fdset);
FD_SET(fd, &fdset);
if((select(fd+1, &fdset, NULL, NULL, &timeout))< 0)
{
printf("cannot select.\n\r");
}
if ((fb = fopen("Blue.jpg","rb")) == NULL)
{
printf("Open faile!!!");
exit(0);
}
if(FD_ISSET(fd, &fdset))
{
len = sizeof(client_address);
client_sockfd = accept(fd, (struct sockaddr *)&client_address, &len);
setsockopt(client_sockfd,IPPROTO_TCP,TCP_NODELAY,(char*)&on,sizeof on);
FD_ZERO(&fcset);
FD_CLR(client_sockfd,&fcset);
FD_SET(client_sockfd,&fcset);
select(client_sockfd+1,&fcset,NULL,NULL,&timeout);
//strcpy(data_send,"wowowowhaha");
//fread(buff_send,1,11740,fp);
//z = send(s,buff_send,11740,0);
fread(data_send,28468.2,1,fb);
//z = send(s,buff_send,11740,0);
//z = send(client_sockfd,data_recv, 20,0);
z = send(client_sockfd,htonl(data_send), 28468.2,0);
/*
while(z>0)
{
z = send(client_sockfd,data_send,20,0);
//if(z<=0)
//break;
if(FD_ISSET(client_sockfd,&fcset))
//printf("read buff=%s\n\r",data_recv);
z = recv(client_sockfd,data_recv,20,0);
usleep(10000);
}
*/
printf("close socket now\n\r");
close(fb);
close(client_sockfd);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -