📄 server.c
字号:
/***************
// name : server.c
// author : pyy
// date : 2007-11-24
****************/
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
int port = 8000;
int main()
{
struct sockaddr_in sin;
struct sockaddr_in pin;
int mysock;
int tempsock;
int addrsize;
char str[100],str1[20],str2[20],str3[20];
char buf[100];
int i,len1,len2;
float c;
/*建立socket*/
mysock = socket(AF_INET, SOCK_STREAM, 0);
if(mysock == -1) { perror("call to socket"); exit(1); }
/* 建立IPv4地址*/
bzero(&sin, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons(port);
/*绑定socket*/
if(bind( mysock, (struct sockaddr *)&sin,sizeof(sin)) == -1)
{perror("call to bind"); exit(1);}
/*监听Client 端*/
if(listen(mysock,20) == -1)
{perror("call to listem"); exit(1);}
printf("Accepting connections......\n");
while(1)
{
/*接收client 端连接*/
tempsock = accept(mysock, (struct sockaddr *)&pin, &addrsize);
if(tempsock == -1) { perror("call to accept"); exit(1);};
/*接收client 端传来的信息*/
len1 = recv(tempsock, str, 100, 0);
printf("\n 收到字符数: %d\n",len1);
str[len1]=0;
printf("received from client: %s \n", str);
/*分析处理client 端传来的信息*/
if(len1>0)
{
strcpy(str1, strtok(str," "));
printf("第一个字符串为: %s \n",str1);
strcpy(str2, strtok(NULL," "));
printf("第二个字符串为: %s \n",str2);
strcpy(str3, strtok(NULL," "));
printf("第三个字符串为: %s \n",str3);
c = atof(str3)*1.05;
sprintf(buf ," 商品号为 %s\n 商品名为 %s\n 含税价为%.2f\n",str1,str2,c);
}
/*将处理过的信息返回给client端*/
len2 = strlen(buf);
if( send(tempsock, buf, len2, 0) == -1)
{
perror("call to send"); exit(1);
}
/*关闭与client 端的连接*/
close(tempsock);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -