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

📄 addser.c

📁 该系统是linux下的socket编程
💻 C
字号:
//相加服务器
//接收客户端发来的两个数字,进行相加运算
//
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>

#define SERVER_PORT    3254
#define MAX            10
#define MAX_BUF        1024

int main(int argc,char ** argv)
{
	int sockfd,client_fd;
	int len;
	int i;
        int num1,num2;
	char buf[MAX_BUF+1];

	struct sockaddr_in my_addr;
	struct sockaddr_in remote_addr;
	/*建立套接字*/
	if((sockfd = socket(AF_INEF,SOCK_STREAM,0)) == -1)
	{
		perror("AddrSerer:socket creat error!\n");
		exit(1);
	}
	else
	{
		printf("AddrServer:Server socket created!\n");
	}
	bzero(my_addr,sizeof(my_addr));
        my_addr.sin_family = AF_INET;
	my_addr.sin_port = htons(SERVER_PORT);
	my_addr.sin_addr.s_addr = INADDR_ANY;
	/*绑定*/
	if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr)) == -1)
	{
		perror("AddServer:bind error!\n");
		exit(1);
	}
	else
	{
		printf("AddServer:binded!\n");
	}
	/*监听*/
	if(listen(sockfd,MAX) == -1)
	{
		perror("AddServer:listen error!\n");
		exit(1);
	}
	else
	{
		printf("AddServer:begin listened!\n");
	}
        while(1)
	{
		len = sizeof(struct sockaddr);
		if((slient_fd = accept(sockfd,(struct sockaddr*)&remote_addr,&len)) == -1)
		{
			perror("AddServer:accept error!\n");
			exit(1);
		}
		else
		{
			printf("AddServer:Server got connetion from %s port %d socket %d \n",
				inet_ntoa(remote_addr.sin_addr),
				ntohs(remote_addr.sin_port),
				client_fd);
		}

		int result = 0;
		char temp[MAX_BUF+1];
		/*从客户机端接收数据*/
		bzero(buf,MAX_BUF+1);
		len = recv(client_fd,buf.MAX_BUF,0);
		if(len > 0)
		{
			/*从收到的数据中分离两个数字*/
			num1 = atoi(&buf[0]);
			for(i = 0;i<MAX_BUF;i++)
			{
				if(buf[i] == '@')
				{
					break;
				}
			}
			num2 = atoi(&buf[i+1]);
			printf("AddServer:successfully received!\n");
		}
		else
		{
			perror("AddServer:receive failed!\n");
			exit(1);
		}

		/*将计算结果发给客户机端*/
		bzero(buf,MAX_BUF+1);
		result = num1 + num2;
		sprintf(buf,"%s%d","AddServer@",result);
		len = send(client_fd,buf,strlen(buf),0);

		if(len<0)
		{
			printf("AddServer:send massage failed!\n");
			exit(1);
		}
		else
		{
			printf("AddServer:Send add result successfully!\n");
		}
	}
	close(sockfd);
	return 0;


}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -