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

📄 server.c

📁 vxworks下的一个网络通信的例子
💻 C
字号:
#include "vxWorks.h"
#include "fioLib.h"
#include "stdio.h"
#include "unistd.h"
#include "string.h"
#include "usrLib.h"
#include "errnoLib.h"
#include "hostLib.h"
#include "sockLib.h"
#include "socket.h"
#include "inetLib.h"
#include "in.h"
#include "assert.h"

#define SERVER_NUM 1100
int server (void)
    {    int sock, newsock;	/* socket fd's */
    struct sockaddr_in	serverAddr;	/* server's address */    struct sockaddr_in 	clientAddr;	/* client's address */    int			client_len;	/* length of clientAddr */    char		buffer[30];
    char    sendstring[]="server send reciver ack!";
    extern int		errno;		/* for UNIX error referencing */    /* Zero out the sock_addr structures.     * This MUST be done before the socket calls.     */    bzero ((char *)&serverAddr, sizeof (serverAddr));
    bzero ((char *)&clientAddr, sizeof (clientAddr));
    /* Open the socket.     * Use ARPA Internet address format and stream sockets.     * Format described in "socket.h".     */    if(sock = socket (AF_INET, SOCK_STREAM, 0)<0)
    	{
    		printf ("socket create failed, errno = %d\n", errno);
    	}

    /* Set up our internet address, and bind it so the client can connect. */
    serverAddr.sin_family = AF_INET;    serverAddr.sin_port = htons(SERVER_NUM);
    serverAddr.sin_addr.s_addr=htons(INADDR_ANY);
    printf ("\nBinding SERVER\n", serverAddr.sin_port);    if (bind (sock, (struct sockaddr *)&serverAddr, sizeof (serverAddr))							== ERROR)
	{	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) == ERROR)
	{	printf ("listen failed\n");	close (sock);	exit (1);	}    /* The client has connected.  Accept, and receive chars */    printf ("Accepting CLIENT\n");    client_len = sizeof (clientAddr);    newsock = accept (sock, (struct sockaddr *)&clientAddr, &client_len);
    if (newsock == ERROR)
	{	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 */    while(1)
	{	if (recv(newsock, buffer,sizeof(buffer), 0) == ERROR)
	    {	    /* client has disappeared */	    break;	    }
	printf("from client:%s\n",buffer);

	if (send(newsock, sendstring,strlen(sendstring), 0) == ERROR)
	    {	    /* client has disappeared */	    break;	    }
	}    /* close the socket from the UNIX side */    close (sock);    close (newsock);
    printf ("\n...goodbye\n");
	return 1;
    }

⌨️ 快捷键说明

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