📄 server.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 + -