文章作者:zhouzhen[E.S.T]
信息来源:
http://zhouzhen.blogchina.com(信息来源就应该这样写)
好久前的代码,大家看看。别拿鸡蛋砸偶啊。偶怕怕~
[code]
/*
server.c
2004.5.18
for linux
zhouzhen
*/
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sys/wait.h>
#define SERVPORT 3333 //server port
#define BACKLOG 10 //max links
#define MAXDATAS 100
main()
{
int sockfd,client_fd,recvbytes;
char buf[1024];
int fd;
int sin_size;
int file_length;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
char filename[10] ;
FILE * in ;
printf("******************************************
");
printf(" server
");
printf("******************************************
");
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("Socket error!");exit(1);} //create a socket
printf("Create a socket....
");
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
//bind
if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind error!");
exit(1);
}
printf("binding ok...
");
//listen
if(listen(sockfd,BACKLOG)==-1)
{
perror("listen error!");
exit(1);
}
printf("listening ....
");
while(1)
{
sin_size=sizeof(struct sockaddr_in);
printf("Receiving .....
");
if((client_fd=accept(sockfd,(struct sockaddr*)&my_addr,&sin_size))==-1)
{
perror("accept error! ");
exit(1);
}
printf("receive a connection from %s
",inet_ntoa(remote_addr.sin_addr) );
// 接受文件名长度
if((recvbytes=recv(client_fd,&file_length,4,0))==-1)
{
perror("recv error!");
exit(1);
}
// 接受文件名
if((recvbytes=recv(client_fd, filename, file_length, 0))==-1)
{
perror("recv error!");
exit(1);
}
// filename[recvbytes]='