IXP425的BSP代码

源代码在线查看: server.c

软件大小: 23136 K
上传用户: zyb
关键词: IXP 425 BSP 代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				/* server.c - server process for simple client/server network demo */								static char *copyright = "Copyright 1986-1989, Wind River Systems, Inc.";								/*				modification history				--------------------				01i,31oct91,rrr  passed through the ansification filter						  -changed copyright notice				01h,25oct90,lpf  put back the HP version's bcopy.				01g,07jun89,gae  used ntohs on SERVER_NUM; changed SOCKADDR to struct sockaddr.				01c,06apr87,gae  caught some lint.  Got rid of excess includes.				01b,12jan87,jlf  minor rearrangement, to meet WRS coding conventions.						 changed  to " in includes.				01a,17sep86,llk  written.				*/								/*				DESCRIPTION				This is a simple demonstration of the server-client relationship.				This is the server. The other half of the demonstration is in client.c				*/								#include 				#include 				#include 								#include "serverDemo.h"				#if     defined(HOST_HP)				void bzero (s, n)				    char *s;				    int n;								    {				    memset (s, '\0', n);				    }				#endif								/*******************************************************************************				*				* main - server process				*				* This is a simple server program which communicates with a client				* through a socket.  It reads (recv's) characters, one at a time,				* from the client and echos them to standard output.  When the client				* goes away, the server also goes away (the server reads 0 characters				* from the socket).				*				* The server runs on UNIX, client runs on VxWorks.				*				* See the manual page on sockets for more information.				*/								main ()				    {				    int			sock, snew;	/* socket fd's */				    struct sockaddr_in	serverAddr;	/* server's address */				    struct sockaddr_in 	clientAddr;	/* client's address */				    int			client_len;	/* length of clientAddr */				    char		c;				    extern int		errno;		/* for UNIX error referencing */								    /* Zero out the sock_addr structures.				     * This MUST be done before the socket calls.				     */								    bzero (&serverAddr, sizeof (serverAddr));				    bzero (&clientAddr, sizeof (clientAddr));								    /* Open the socket.				     * Use ARPA Internet address format and stream sockets.				     * Format described in "socket.h".				     */								    sock = socket (AF_INET, SOCK_STREAM, 0);								    if (sock == -1)					exit (1);								    /* Set up our internet address, and bind it so the client can connect. */								    serverAddr.sin_family = AF_INET;				    serverAddr.sin_port = htons(SERVER_NUM);								    printf ("\nBinding SERVER\n", serverAddr.sin_port);								    if (bind (sock, (struct sockaddr *)&serverAddr, sizeof (serverAddr))											== -1)					{					printf ("bind failed, errno = %d\n", errno);					close (sock);					exit (1);					}								    /* Listen, for the client to connect to us. */								    printf ("Listening to client\n");								    if (listen (sock, 2) == -1)					{					printf ("listen failed\n");					close (sock);					exit (1);					}								    /* The client has connected.  Accept, and receive chars */								    printf ("Accepting CLIENT\n");								    client_len = sizeof (clientAddr);								    snew = accept (sock, (struct sockaddr *)&clientAddr, &client_len);								    if (snew == -1)					{					printf ("accept failed\n");					close (sock);					exit (1);					}								    printf ("CLIENT: port = %d: family = %d: addr = %lx:\n",						ntohs(clientAddr.sin_port), clientAddr.sin_family,						ntohl(clientAddr.sin_addr.s_addr));								    /* repeatedly recieve characters from client and put on stdout */								    for (;;)					{					if (recv (snew, &c, 1, 0) == 0)					    {					    /* client has disappeared */					    break;					    }									putchar (c);					}								    /* close the socket from the UNIX side */								    close (sock);				    close (snew);								    printf ("\n...goodbye\n");				    }							

相关资源