gtpc1m70 | Transmission Control Protocol/Internet Protocol |
/**********************************************************/
/* This is a stream socket server sample program that */
/* accepts a connect request from a client program. */
/* When a message from the client program is received, */
/* the TCP server program echoes back the message to the */
/* client program. */
/**********************************************************/
/**********************************************************/
/* TPF Standard Header Files */
/**********************************************************/
#include <tpfeq.h>
#include <tpfio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <socket.h> /* Socket API Header File */
#define return_error -1
#define MAX_BUFFER_LEN 1024
qxyd()
{
struct sockaddr_in server_sockaddr_in, name_sockaddr_in;
char *recv_client_msg;
char server_name[50];
int client_sock;
int echo_len;
int rc;
int server_sock;
int sockaddr_in_length;
recv_client_msg = malloc(MAX_BUFFER_LEN);
sockaddr_in_length = sizeof(struct sockaddr_in);
/**************************/
/* Create a stream socket.*/
/**************************/
server_sock = socket(AF_INET,SOCK_STREAM,0);
if (server_sock == return_error)
{
printf("Error in opening stream socket\n");
exit(0);
}
/***********/
/* Bind it.*/
/***********/
server_sockaddr_in.sin_family = AF_INET;
server_sockaddr_in.sin_addr.s_addr = INADDR_ANY;
server_sockaddr_in.sin_port = 5003;
rc = bind(server_sock,(struct sockaddr *)&server_sockaddr_in,
sockaddr_in_length);
if (rc == return_error)
{
printf("Error in binding stream - %d\n",sock_errno());
close(server_sock);
exit(0);
}
/********************************/
/* Listen to any socket clients.*/
/********************************/
rc = listen(server_sock,5);
if (rc == return_error)
{
printf("Error in listening client socket - %d\n",sock_errno());
close(server_sock);
exit(0);
}
/**********************************************/
/* Call gethostname to obtain the server name */
/**********************************************/
rc = gethostname(server_name,sizeof(server_name));
if (rc == return_error)
{
printf("Error in getting host name - %d\n",sock_errno());
}
/********************************/
/* Print out server information.*/
/********************************/
printf("\nServer Information\n");
printf("-----------------------------------\n");
printf("Socket = %d\n",server_sock);
printf("Host ID = %x\n",gethostid());
printf("Host Name = %s\n",server_name);
printf("Host Family = %x\n",name_sockaddr_in.sin_family);
printf("Host Address = %x\n",name_sockaddr_in.sin_addr.s_addr);
printf("Host Port No = %d\n",name_sockaddr_in.sin_port);
printf("-----------------------------------\n\n");
/******************************************************************/
/* Accept a socket client. */
/******************************************************************/
client_sock = accept(server_sock,(struct sockaddr *)&name_sockaddr_in,
&sockaddr_in_length);
if (client_sock == return_error)
{
printf("Cannot accept any new clients - %d\n",sock_errno());
close(server_sock);
exit(0);
}
/********************************/
/* Print out client information.*/
/********************************/
printf("Client Information\n");
printf("-----------------------------------\n");
printf("Socket = %d\n",client_sock);
printf("Client Family = %x\n",name_sockaddr_in.sin_family);
printf("Client Address = %x\n",name_sockaddr_in.sin_addr.s_addr);
printf("Client Port No = %d\n",name_sockaddr_in.sin_port);
printf("-----------------------------------\n");
/**********************************************************/
/* Read client's message to find out how many messages the*/
/* server is receiving. */
/**********************************************************/
echo_len = read(client_sock,recv_client_msg,MAX_BUFFER_LEN);
if (echo_len == return_error)
{
printf("Error in reading message - %d\n",sock_errno());
(void)close(client_sock);
(void)close(server_sock);
exit(0);
}
else
{
printf("messages = %s\n",recv_client_msg);
}
rc = write(client_sock,recv_client_msg,echo_len);
if (rc == return_error)
{
printf("Error in sending echo - %d\n",sock_errno());
(void)close(client_sock);
(void)close(server_sock);
exit(0);
}
/*************************************************************/
/* Shutdown the communication link between client and server.*/
/*************************************************************/
rc = shutdown(client_sock,2);
if (rc == return_error)
{
printf("Error in shutting down the client - %d\n",
sock_errno());
}
/*********************************************/
/* Clean up all sockets and exit the program.*/
/*********************************************/
rc = close(client_sock);
if (rc == return_error)
{
printf("Error in closing client socket - %d\n",sock_errno());
}
(void)close(server_sock);
printf("Terminated communication normally\n");
exit(0);
}