//服务器代码
#include "Winsock2.h"
#include "string.h"
#include "stdio.h"
#include "time.h"
#include "stdarg.h"
#include "stdlib.h"
#pragma comment(lib,"Ws2_32");
void errexit(const char*format,...)
{
va_list args;
va_start(args,format);
vfprintf(stderr,format,args);
va_end(args);
WSACleanup();
exit(1);
}
SOCKET passivesock(const char* service_name,const char* transport_type,int qlen){
struct servent *pse;
struct protoent *ppe;
struct sockaddr_in servaddr;
int sock_type;
SOCKET serv_sock;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.S_un.S_addr=INADDR_ANY;
if(pse=getservbyname(service_name,transport_type))
servaddr.sin_port=htons(ntohs((u_short)pse->s_port));
else if((servaddr.sin_port=htons((u_short)atoi(service_name)))==0)
errexit("Cann't get %s",service_name);
if((ppe=getprotobyname(transport_type))==0)
errexit("Cann't get %s",transport_type);
if(strcmp(transport_type,"udp")==0)
sock_type=SOCK_DGRAM ;
else if(strcmp(transport_type,"tcp")==0)
sock_type=SOCK_STREAM;
else errexit("cann't support %s",transport_type);
serv_sock=socket(PF_INET,sock_type,ppe->p_proto);
if(serv_sock==INVALID_SOCKET)
errexit("cann't create socket %d",WSAGetLastError());
bind(serv_sock,(sockaddr*)&servaddr,sizeof(sockaddr));
if( sock_type==SOCK_STREAM&&listen(serv_sock,qlen)==SOCKET_ERROR)
errexit(" cann't listen on %s port %d",service_name,WSAGetLastError());
return serv_sock;
}
void daytime(char buf[])
{
time_t now;
(void)time(&now);
sprintf(buf,"%s",ctime(&now));
}
int main(){
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2), &wsadata);
char* stuname="peng zheng pu";
char* stuno="201122010139";
char buf[128];
struct sockaddr_in rsin ;
SOCKET ssock;
SOCKET msock=passivesock("daytime","tcp",128);
while(1)
{
int alen=sizeof(rsin);
ssock=accept(msock,(struct sockaddr*)&rsin,&alen);
if(ssock==INVALID_SOCKET)
errexit("accept failed : %d",WSAGetLastError());
fprintf(stdout,"Received request from %s\n",inet_ntoa(rsin.sin_addr));
daytime(buf);
strcat(buf,stuname);
strcat(buf,stuno);
(void)send(ssock,buf,sizeof(buf),0);
(void)closesocket(ssock);
}
return 0;
}
#include "Winsock2.h"
#include "string.h"
#include "stdio.h"
#include "time.h"
#include "stdarg.h"
#include "stdlib.h"
#pragma comment(lib,"Ws2_32");
void errexit(const char*format,...)
{
va_list args;
va_start(args,format);
vfprintf(stderr,format,args);
va_end(args);
WSACleanup();
exit(1);
}
SOCKET passivesock(const char* service_name,const char* transport_type,int qlen){
struct servent *pse;
struct protoent *ppe;
struct sockaddr_in servaddr;
int sock_type;
SOCKET serv_sock;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.S_un.S_addr=INADDR_ANY;
if(pse=getservbyname(service_name,transport_type))
servaddr.sin_port=htons(ntohs((u_short)pse->s_port));
else if((servaddr.sin_port=htons((u_short)atoi(service_name)))==0)
errexit("Cann't get %s",service_name);
if((ppe=getprotobyname(transport_type))==0)
errexit("Cann't get %s",transport_type);
if(strcmp(transport_type,"udp")==0)
sock_type=SOCK_DGRAM ;
else if(strcmp(transport_type,"tcp")==0)
sock_type=SOCK_STREAM;
else errexit("cann't support %s",transport_type);
serv_sock=socket(PF_INET,sock_type,ppe->p_proto);
if(serv_sock==INVALID_SOCKET)
errexit("cann't create socket %d",WSAGetLastError());
bind(serv_sock,(sockaddr*)&servaddr,sizeof(sockaddr));
if( sock_type==SOCK_STREAM&&listen(serv_sock,qlen)==SOCKET_ERROR)
errexit(" cann't listen on %s port %d",service_name,WSAGetLastError());
return serv_sock;
}
void daytime(char buf[])
{
time_t now;
(void)time(&now);
sprintf(buf,"%s",ctime(&now));
}
int main(){
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2), &wsadata);
char* stuname="peng zheng pu";
char* stuno="201122010139";
char buf[128];
struct sockaddr_in rsin ;
SOCKET ssock;
SOCKET msock=passivesock("daytime","tcp",128);
while(1)
{
int alen=sizeof(rsin);
ssock=accept(msock,(struct sockaddr*)&rsin,&alen);
if(ssock==INVALID_SOCKET)
errexit("accept failed : %d",WSAGetLastError());
fprintf(stdout,"Received request from %s\n",inet_ntoa(rsin.sin_addr));
daytime(buf);
strcat(buf,stuname);
strcat(buf,stuno);
(void)send(ssock,buf,sizeof(buf),0);
(void)closesocket(ssock);
}
return 0;
}