?? service.c
字號:
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define SERVER_PORT 20000 // define the defualt connect port id
#define LENGTH_OF_LISTEN_QUEUE 10 //length of listen queue in server
#define BUFFER_SIZE 255
#define WELCOME_MESSAGE "welcome to connect the server. "
int main(int argc, char **argv)
{
char receive[BUFFER_SIZE];
char sendata[BUFFER_SIZE];
char inputdata;
int servfd,clifd;
int length;
struct sockaddr_in servaddr,cliaddr;
if ((servfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("create socket error!\n");
exit(1);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERVER_PORT);
servaddr.sin_addr.s_addr = htons(INADDR_ANY);
if (bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
{
printf("bind to port %d failure!\n",SERVER_PORT);
exit(1);
}
if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) < 0)
{
printf("call listen failure!\n");
exit(1);
}
while (1)
{//server loop will nerver exit unless any body kill the process
char buf[BUFFER_SIZE];
long timestamp;
socklen_t length = sizeof(cliaddr);
clifd = accept(servfd,(struct sockaddr*)&cliaddr,&length);
if (clifd < 0)
{
printf("error comes when call accept!\n");
break;
}
strcpy(buf,WELCOME_MESSAGE);
//inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE);
printf("from client,IP:%s,Port:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
timestamp = time(NULL);
strcat(buf,"timestamp in server:");
strcat(buf,ctime(×tamp));
send(clifd,buf,BUFFER_SIZE,0);
/*
printf("please input send data:");
gets(sendata);
int lengthdata;
int i =0;
lengthdata = strlen(sendata);
send(clifd,sendata,lengthdata,0);
/*
char inputdata;
printf("go on please input y,stop client pleaseinput n:");
scanf("%c",&inputdata);
while(i<3)
{
if ((inputdata != 'y')& (inputdata != 'n'))
{
printf("scanf is wrong !please input again!!\n");
scanf("%c",&inputdata);
i= i+1;
}
}
if (inputdata =='n'|i>=3)
{
close(clifd);
return 0;
}
if(inputdata == 'y')continue;
*/
while(1)
{
printf("receive data!\n");
length = recv(clifd,receive,BUFFER_SIZE,0);
if (length = 0)
{
printf("No data!!\n");
}
else
{
puts(receive);
printf("\n");
}
printf("write n stop receiving data,other go on!!\n");
scanf("%c",&inputdata);
if(inputdata == 'n')
{
close(clifd);
return 0;
}
}
}//exit
close(servfd);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -