⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 嵌入式Linux程序设计与应用案例 电子书源码 中国电力出版社
💻 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 + -