SlideShare a Scribd company logo
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define SERVER_PORT 5432
#define MAX_LINE 256
int main(int argc, char * argv[])
{
FILE *fp;
struct hostent *hp;
struct sockaddr_in sin;
char *host;
char buf[MAX_LINE];
int s;
int len;
if (argc==2) {
host = argv[1];
}
else {
fprintf(stderr, "usage: simplex-talk hostn");
exit(1);
}
/* translate host name into peer’s IP address */
hp = gethostbyname(host);
if (!hp) {
fprintf(stderr, "simplex-talk: unknown host: %sn",
host);
exit(1);
}
/* build address data structure */
bzero((char *)&sin, sizeof(sin));
sin.sin_family = AF_INET;
bcopy(hp->h_addr, (char *)&sin.sin_addr, hp->h_length);
sin.sin_port = htons(SERVER_PORT);
/* active open */
if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
perror("simplex-talk: socket");
exit(1);
}
if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
perror("simplex-talk: connect");
close(s);
exit(1);
}
/* main loop: get and send lines of text */
while (fgets(buf, sizeof(buf), stdin)) {
buf[MAX_LINE-1] = '0';
len = strlen(buf) + 1;
send(s, buf, len, 0);
}
}
Post your initial response to the Discussion Questions by
midnight on Thursday. Then by Sunday at midnight CST/CDT
you must provide a substantive response to two or
more classmates' posts. Use the concepts learned from the text
as well as from outside sources (at least two [2] are required)
for compiling the response to each Discussion Question. Cite
the sources used in the Discussion Question posting as well as
in the peer responses IAW APA Format.
Important: Your grade for the responses you post in our
Discussion Area will be determined not only by your responses
to the assignment questions, but also by your responses to your
fellow students' postings. Be sure to reply to at least one
posting for each Discussion Question. Otherwise, five points
will be deducted from your grade.
Discussion Questions
(Two questions from Chapter 6)
1. What industry forces might cause a propitious niche to appear
or disappear?
The environment or industry changes. The company or SBU
continues to make its products or services but the size of the
market changes. The company or SBU changes. The same
market demand continues for some specific products or services
but the company or SBU itself changes so that there is no longer
asynchronization between itself and the market. If a company or
SBU loses its niche, it is likely to get much less profitable
unless it gets a new niche. The specifics of what might happen
depends upon how the company had lost its niche. The
possibilities of class discussion can be almost endless.
2. What does a business have to consider when trying to follow
a cost leadership strategy and a differentiation strategy
simultaneously? Can you name a company doing this?
A cost leadership strategy is a “company’s ability to design,
produce, and market a comparable product more efficiently than
their competitors (Wheelen 2015).” A differentiation strategy is
a “company’s ability to provide unique and superior value to the
buyer in terms of product quality, special features, and after -
sale service (Wheelen 2015).” With that, if a business decides
to follow these two strategies simultaneously, it has to plan.
After finding a niche market, the company would need to
determine what price would be the most profitable for their
company as well as find a product that offers differentiation
(Thakur, 2014). An example of a company that does this is
Apple with their Iphones. In the electronic market, Apple and
Microsoft are dominating companies and they are often both
looking for ways to differentiate their product, while also
keeping their prices reasonable. With Apple, they offer product
quality as well as Apple only software including FaceTime and
Siri.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define SERVER_PORT 5432
#define MAX_PENDING 5
#define MAX_LINE 256
int main()
{
struct sockaddr_in sin;
char buf[MAX_LINE];
int len;
int s, new_s;
/* build address data structure */
bzero((char *)&sin, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(SERVER_PORT);
/* setup passive open */
if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
perror("simplex-talk: socket");
exit(1);
}
if ((bind(s, (struct sockaddr *)&sin, sizeof(sin))) < 0) {
perror("simplex-talk: bind");
exit(1);
}
listen(s, MAX_PENDING);
/* wait for connection, then receive and print text */
while(1) {
if ((new_s = accept(s, (struct sockaddr *)&sin, &len))
< 0) {
perror("simplex-talk: accept");
exit(1);
}
while (len = recv(new_s, buf, sizeof(buf), 0))
fputs(buf, stdout);
close(new_s);
}
}
/* server.c - code for example server program that uses TCP */
#ifndef unix
#define WIN32
#include <windows.h>
#include <winsock.h>
#else
#define closesocket close
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#endif
#include <stdio.h>
#include <string.h>
#define PROTOPORT 5193 /* default protocol port number */
#define QLEN 6 /* size of request queue */
int visits = 0; /* counts client connections */
/*------------------------------------------------------------------------
* * Program: server
* *
* * Purpose: allocate a socket and then repeatedly execute the
following:
* * (1) wait for the next connection from a client
* * (2) send a short message to the client
* * (3) close the connection
* * (4) go back to step (1)
* * Syntax: server [ port ]
* *
* * port - protocol port number to use
* *
* * Note: The port argument is optional. If no port is specified,
* * the server uses the default given by PROTOPORT.
* *
* *----------------------------------------------------------------------
--
* */
main(argc, argv)
int argc;
char *argv[];
{
struct hostent *ptrh; /* pointer to a host table entry */
struct protoent *ptrp; /* pointer to a protocol table entry */
struct sockaddr_in sad; /* structure to hold server.s
address */
struct sockaddr_in cad; /* structure to hold client.s address
*/
int sd, sd2; /* socket descriptors */
int port; /* protocol port number */
int alen; /* length of address */
char buf[1000]; /* buffer for string the server sends */
#ifdef WIN32
WSADATA wsaData;
WSAStartup(0x0101, &wsaData);
#endif
memset((char *)&sad,0,sizeof(sad)); /* clear sockaddr
structure */
sad.sin_family = AF_INET; /* set family to Internet */
sad.sin_addr.s_addr = INADDR_ANY; /* set the local IP
address */
/* Check command-line argument for protocol port and
extract */
/* port number if one is specified. Otherwise, use the
default */
/* port value given by constant PROTOPORT */
if (argc > 1) { /* if argument specified */
port = atoi(argv[1]); /* convert argument to binary */
} else {
port = PROTOPORT; /* use default port number */
}
if (port > 0) /* test for illegal value */
sad.sin_port = htons((u_short)port);
else { /* print error message and exit */
fprintf(stderr,"bad port number %sn",argv[1]);
exit(1);
}
/* Map TCP transport protocol name to protocol number */
if ( ((int)(ptrp = getprotobyname("tcp"))) == 0) {
fprintf(stderr, "cannot map "tcp" to protocol
number");
exit(1);
}
/* Create a socket */
sd = socket(PF_INET, SOCK_STREAM, ptrp->p_proto);
if (sd < 0) {
fprintf(stderr, "socket creation failedn");
exit(1);
}
/* Bind a local address to the socket */
if (bind(sd, (struct sockaddr *)&sad, sizeof(sad)) < 0) {
fprintf(stderr,"bind failedn");
exit(1);
}
/* Specify size of request queue */
if (listen(sd, QLEN) < 0) {
fprintf(stderr,"listen failedn");
exit(1);
}
/* Main server loop - accept and handle requests */
while (1) {
alen = sizeof(cad);
if ( (sd2=accept(sd, (struct sockaddr *)&cad, &alen))
< 0) {
fprintf(stderr, "accept failedn");
exit(1);
}
visits++;
sprintf(buf,"This server has been contacted %d
time%sn",
visits,visits==1?".":"s.");
send(sd2,buf,strlen(buf),0);
closesocket(sd2);
}
}
/* client.c - code for example client program that uses TCP */
#ifndef unix
#define WIN32
#include <windows.h>
#include <winsock.h>
#else
#define closesocket close
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#endif
#include <stdio.h>
#include <string.h>
#define PROTOPORT 5193 /* default protocol port number */
extern int errno;
char localhost[] = "localhost"; /* default host name */
/*------------------------------------------------------------------------
* * Program: client
* *
* * Purpose: allocate a socket, connect to a server, and print all
output
* * Syntax: client [ host [port] ]
* *
* * host - name of a computer on which server is executing
* * port - protocol port number server is using
* *
* * Note: Both arguments are optional. If no host name is
specified,
* * the client uses "localhost"; if no protocol port is
* * specified, the client uses the default given by
PROTOPORT.
* *
* *----------------------------------------------------------------------
--
* */
main(argc, argv)
int argc;
char *argv[];
{
struct hostent *ptrh; /* pointer to a host table entry */
struct protoent *ptrp; /* pointer to a protocol table entry */
struct sockaddr_in sad; /* structure to hold an IP address
*/
int sd; /* socket descriptor */
int port; /* protocol port number */
char *host; /* pointer to host name */
int n; /* number of characters read */
char buf[1000]; /* buffer for data from the server */
#ifdef WIN32
WSADATA wsaData;
WSAStartup(0x0101, &wsaData);
#endif
memset((char *)&sad,0,sizeof(sad)); /* clear sockaddr
structure */
sad.sin_family = AF_INET; /* set family to Internet */
/* Check command-line argument for protocol port and
extract */
/* port number if one is specified. Otherwise, use the
default */
/* port value given by constant PROTOPORT */
if (argc > 2) { /* if protocol port specified */
port = atoi(argv[2]); /* convert to binary */
} else {
port = PROTOPORT; /* use default port number */
}
if (port > 0) /* test for legal value */
sad.sin_port = htons((u_short)por t);
else { /* print error message and exit */
fprintf(stderr,"bad port number %sn",argv[2]);
exit(1);
}
/* Check host argument and assign host name. */
if (argc > 1) {
host = argv[1]; /* if host argument specified */
} else {
host = localhost;
}
/* Convert host name to equivalent IP address and copy to
sad. */
ptrh = gethostbyname(host);
if ( ((char *)ptrh) == NULL ) {
fprintf(stderr,"invalid host: %sn", host);
exit(1);
}
memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length);
/* Map TCP transport protocol name to protocol number.
*/
if ( ((int)(ptrp = getprotobyname("tcp"))) == 0) {
fprintf(stderr, "cannot map "tcp" to protocol
number");
exit(1);
}
/* Create a socket. */
sd = socket(PF_INET, SOCK_STREAM, ptrp->p_proto);
if (sd < 0) {
fprintf(stderr, "socket creation failedn");
exit(1);
}
/* Connect the socket to the specified server. */
if (connect(sd, (struct sockaddr *)&sad, sizeof(sad)) < 0) {
fprintf(stderr,"connect failedn");
exit(1);
}
/* Repeatedly read data from socket and write to user.s
screen. */
n = recv(sd, buf, sizeof(buf), 0);
while (n > 0) {
write(1,buf,n);
printf("n: %dn", n);
n = recv(sd, buf, sizeof(buf), 0);
}
printf("n: %dn", n);
/* Close the socket. */
closesocket(sd);
/* Terminate the client program gracefully. */
exit(0);
}
#include stdio.h#include systypes.h#include syssocket.h

More Related Content

PDF
Network Programming Assignment Help
PPT
Sockets
PPT
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
PPT
sockets_intro.ppt
PDF
lab04.pdf
PPTX
Socket programming
PPT
Socket Programming
PDF
Network Programming Assignment Help
Sockets
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
sockets_intro.ppt
lab04.pdf
Socket programming
Socket Programming

Similar to #include stdio.h#include systypes.h#include syssocket.h (20)

PPT
Basic socket programming
PPT
03 sockets
PPTX
L5-Sockets.pptx
PPT
03-socketprogramming for college students.ppt
PPT
03-socketprogrsamming forcoleeger students.ppt
PDF
socketProgramming-TCP-and UDP-overview.pdf
PPT
Sockets intro
PPT
Introduction to sockets tcp ip protocol.ppt
PDF
Socket programming
PDF
Networking lab
PDF
PDF
Download full ebook of Linux Socket Programming Walton Sean instant download pdf
PDF
CC++ echo serverThis assignment is designed to introduce network .pdf
PPT
Application Layer and Socket Programming
PPT
LECTURE-17(Socket Programming) Detailed.
PPT
Socket programming-tutorial-sk
DOCX
Udp socket programming(Florian)
PPTX
Basics of sockets
PPT
lecture03 on socket programming000000.ppt
PPT
lecture03for socket programming college.ppt
Basic socket programming
03 sockets
L5-Sockets.pptx
03-socketprogramming for college students.ppt
03-socketprogrsamming forcoleeger students.ppt
socketProgramming-TCP-and UDP-overview.pdf
Sockets intro
Introduction to sockets tcp ip protocol.ppt
Socket programming
Networking lab
Download full ebook of Linux Socket Programming Walton Sean instant download pdf
CC++ echo serverThis assignment is designed to introduce network .pdf
Application Layer and Socket Programming
LECTURE-17(Socket Programming) Detailed.
Socket programming-tutorial-sk
Udp socket programming(Florian)
Basics of sockets
lecture03 on socket programming000000.ppt
lecture03for socket programming college.ppt
Ad

More from SilvaGraf83 (20)

DOCX
1 Evidence-Based Practices to Guide Clinica
DOCX
1 Green Book Film Analysis Sugiarto Mulj
DOCX
1 Film Essay 1 Film from 1940-1970
DOCX
1 Department of Health and Human Performance, College of Ch
DOCX
1 FIN 2063 INSURANCE FINANCIAL PLANNING Case As
DOCX
1 Faculty of Science, Engineering and Computi
DOCX
1 EARLY C
DOCX
1 Case Grading Procedure Your grade from each case
DOCX
1 Kilimanjaro is a snow-covered mountain 19,710 feet hi
DOCX
1 Assignment 2 Winter 2022Problem 1 Assume yo
DOCX
1 COU 680 Adult Psychosocial Assessment Sabrina Da
DOCX
1 Literature Review on How Biofilm Affect the
DOCX
1 Canterbury Tales (c. 12th century)
DOCX
1 Math 140 Exam 2 COC Spring 2022 150 Points
DOCX
1 Lessons from the past How the deadly second wave
DOCX
1 Lockheed Martin Corporation Abdussamet Akca
DOCX
1 Lab 9 Comparison of Two Field Methods in a Scien
DOCX
1 LAB MODULE 5 GLOBAL TEMPERATURE PATTERNS Note P
DOCX
1 Instructions for Coming of Age in Mississippi
DOCX
1 Institutional Assessment Report 2012-13
1 Evidence-Based Practices to Guide Clinica
1 Green Book Film Analysis Sugiarto Mulj
1 Film Essay 1 Film from 1940-1970
1 Department of Health and Human Performance, College of Ch
1 FIN 2063 INSURANCE FINANCIAL PLANNING Case As
1 Faculty of Science, Engineering and Computi
1 EARLY C
1 Case Grading Procedure Your grade from each case
1 Kilimanjaro is a snow-covered mountain 19,710 feet hi
1 Assignment 2 Winter 2022Problem 1 Assume yo
1 COU 680 Adult Psychosocial Assessment Sabrina Da
1 Literature Review on How Biofilm Affect the
1 Canterbury Tales (c. 12th century)
1 Math 140 Exam 2 COC Spring 2022 150 Points
1 Lessons from the past How the deadly second wave
1 Lockheed Martin Corporation Abdussamet Akca
1 Lab 9 Comparison of Two Field Methods in a Scien
1 LAB MODULE 5 GLOBAL TEMPERATURE PATTERNS Note P
1 Instructions for Coming of Age in Mississippi
1 Institutional Assessment Report 2012-13
Ad

Recently uploaded (20)

PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
Lesson notes of climatology university.
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
Weekly quiz Compilation Jan -July 25.pdf
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Complications of Minimal Access Surgery at WLH
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
01-Introduction-to-Information-Management.pdf
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Yogi Goddess Pres Conference Studio Updates
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Lesson notes of climatology university.
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Weekly quiz Compilation Jan -July 25.pdf
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Complications of Minimal Access Surgery at WLH
O5-L3 Freight Transport Ops (International) V1.pdf
202450812 BayCHI UCSC-SV 20250812 v17.pptx
Microbial diseases, their pathogenesis and prophylaxis
01-Introduction-to-Information-Management.pdf
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
2.FourierTransform-ShortQuestionswithAnswers.pdf
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
Final Presentation General Medicine 03-08-2024.pptx
Module 4: Burden of Disease Tutorial Slides S2 2025
Pharmacology of Heart Failure /Pharmacotherapy of CHF
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Yogi Goddess Pres Conference Studio Updates
3rd Neelam Sanjeevareddy Memorial Lecture.pdf

#include stdio.h#include systypes.h#include syssocket.h

  • 1. #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define SERVER_PORT 5432 #define MAX_LINE 256 int main(int argc, char * argv[]) { FILE *fp; struct hostent *hp; struct sockaddr_in sin; char *host; char buf[MAX_LINE]; int s; int len; if (argc==2) { host = argv[1]; } else { fprintf(stderr, "usage: simplex-talk hostn"); exit(1); } /* translate host name into peer’s IP address */ hp = gethostbyname(host); if (!hp) { fprintf(stderr, "simplex-talk: unknown host: %sn", host); exit(1); } /* build address data structure */
  • 2. bzero((char *)&sin, sizeof(sin)); sin.sin_family = AF_INET; bcopy(hp->h_addr, (char *)&sin.sin_addr, hp->h_length); sin.sin_port = htons(SERVER_PORT); /* active open */ if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) { perror("simplex-talk: socket"); exit(1); } if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) { perror("simplex-talk: connect"); close(s); exit(1); } /* main loop: get and send lines of text */ while (fgets(buf, sizeof(buf), stdin)) { buf[MAX_LINE-1] = '0'; len = strlen(buf) + 1; send(s, buf, len, 0); } } Post your initial response to the Discussion Questions by midnight on Thursday. Then by Sunday at midnight CST/CDT you must provide a substantive response to two or more classmates' posts. Use the concepts learned from the text as well as from outside sources (at least two [2] are required) for compiling the response to each Discussion Question. Cite the sources used in the Discussion Question posting as well as in the peer responses IAW APA Format. Important: Your grade for the responses you post in our Discussion Area will be determined not only by your responses to the assignment questions, but also by your responses to your fellow students' postings. Be sure to reply to at least one posting for each Discussion Question. Otherwise, five points
  • 3. will be deducted from your grade. Discussion Questions (Two questions from Chapter 6) 1. What industry forces might cause a propitious niche to appear or disappear? The environment or industry changes. The company or SBU continues to make its products or services but the size of the market changes. The company or SBU changes. The same market demand continues for some specific products or services but the company or SBU itself changes so that there is no longer asynchronization between itself and the market. If a company or SBU loses its niche, it is likely to get much less profitable unless it gets a new niche. The specifics of what might happen depends upon how the company had lost its niche. The possibilities of class discussion can be almost endless. 2. What does a business have to consider when trying to follow a cost leadership strategy and a differentiation strategy simultaneously? Can you name a company doing this? A cost leadership strategy is a “company’s ability to design, produce, and market a comparable product more efficiently than their competitors (Wheelen 2015).” A differentiation strategy is a “company’s ability to provide unique and superior value to the buyer in terms of product quality, special features, and after - sale service (Wheelen 2015).” With that, if a business decides to follow these two strategies simultaneously, it has to plan. After finding a niche market, the company would need to determine what price would be the most profitable for their company as well as find a product that offers differentiation (Thakur, 2014). An example of a company that does this is Apple with their Iphones. In the electronic market, Apple and Microsoft are dominating companies and they are often both looking for ways to differentiate their product, while also
  • 4. keeping their prices reasonable. With Apple, they offer product quality as well as Apple only software including FaceTime and Siri. #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define SERVER_PORT 5432 #define MAX_PENDING 5 #define MAX_LINE 256 int main() { struct sockaddr_in sin; char buf[MAX_LINE]; int len; int s, new_s; /* build address data structure */ bzero((char *)&sin, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(SERVER_PORT); /* setup passive open */ if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) { perror("simplex-talk: socket"); exit(1); } if ((bind(s, (struct sockaddr *)&sin, sizeof(sin))) < 0) { perror("simplex-talk: bind"); exit(1); } listen(s, MAX_PENDING);
  • 5. /* wait for connection, then receive and print text */ while(1) { if ((new_s = accept(s, (struct sockaddr *)&sin, &len)) < 0) { perror("simplex-talk: accept"); exit(1); } while (len = recv(new_s, buf, sizeof(buf), 0)) fputs(buf, stdout); close(new_s); } } /* server.c - code for example server program that uses TCP */ #ifndef unix #define WIN32 #include <windows.h> #include <winsock.h> #else #define closesocket close #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #endif #include <stdio.h> #include <string.h> #define PROTOPORT 5193 /* default protocol port number */ #define QLEN 6 /* size of request queue */ int visits = 0; /* counts client connections */ /*------------------------------------------------------------------------ * * Program: server * * * * Purpose: allocate a socket and then repeatedly execute the
  • 6. following: * * (1) wait for the next connection from a client * * (2) send a short message to the client * * (3) close the connection * * (4) go back to step (1) * * Syntax: server [ port ] * * * * port - protocol port number to use * * * * Note: The port argument is optional. If no port is specified, * * the server uses the default given by PROTOPORT. * * * *---------------------------------------------------------------------- -- * */ main(argc, argv) int argc; char *argv[]; { struct hostent *ptrh; /* pointer to a host table entry */ struct protoent *ptrp; /* pointer to a protocol table entry */ struct sockaddr_in sad; /* structure to hold server.s address */ struct sockaddr_in cad; /* structure to hold client.s address */ int sd, sd2; /* socket descriptors */ int port; /* protocol port number */ int alen; /* length of address */ char buf[1000]; /* buffer for string the server sends */ #ifdef WIN32 WSADATA wsaData; WSAStartup(0x0101, &wsaData); #endif memset((char *)&sad,0,sizeof(sad)); /* clear sockaddr structure */ sad.sin_family = AF_INET; /* set family to Internet */
  • 7. sad.sin_addr.s_addr = INADDR_ANY; /* set the local IP address */ /* Check command-line argument for protocol port and extract */ /* port number if one is specified. Otherwise, use the default */ /* port value given by constant PROTOPORT */ if (argc > 1) { /* if argument specified */ port = atoi(argv[1]); /* convert argument to binary */ } else { port = PROTOPORT; /* use default port number */ } if (port > 0) /* test for illegal value */ sad.sin_port = htons((u_short)port); else { /* print error message and exit */ fprintf(stderr,"bad port number %sn",argv[1]); exit(1); } /* Map TCP transport protocol name to protocol number */ if ( ((int)(ptrp = getprotobyname("tcp"))) == 0) { fprintf(stderr, "cannot map "tcp" to protocol number"); exit(1); } /* Create a socket */ sd = socket(PF_INET, SOCK_STREAM, ptrp->p_proto); if (sd < 0) { fprintf(stderr, "socket creation failedn"); exit(1); } /* Bind a local address to the socket */ if (bind(sd, (struct sockaddr *)&sad, sizeof(sad)) < 0) { fprintf(stderr,"bind failedn"); exit(1); } /* Specify size of request queue */
  • 8. if (listen(sd, QLEN) < 0) { fprintf(stderr,"listen failedn"); exit(1); } /* Main server loop - accept and handle requests */ while (1) { alen = sizeof(cad); if ( (sd2=accept(sd, (struct sockaddr *)&cad, &alen)) < 0) { fprintf(stderr, "accept failedn"); exit(1); } visits++; sprintf(buf,"This server has been contacted %d time%sn", visits,visits==1?".":"s."); send(sd2,buf,strlen(buf),0); closesocket(sd2); } } /* client.c - code for example client program that uses TCP */ #ifndef unix #define WIN32 #include <windows.h> #include <winsock.h> #else #define closesocket close #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #endif #include <stdio.h>
  • 9. #include <string.h> #define PROTOPORT 5193 /* default protocol port number */ extern int errno; char localhost[] = "localhost"; /* default host name */ /*------------------------------------------------------------------------ * * Program: client * * * * Purpose: allocate a socket, connect to a server, and print all output * * Syntax: client [ host [port] ] * * * * host - name of a computer on which server is executing * * port - protocol port number server is using * * * * Note: Both arguments are optional. If no host name is specified, * * the client uses "localhost"; if no protocol port is * * specified, the client uses the default given by PROTOPORT. * * * *---------------------------------------------------------------------- -- * */ main(argc, argv) int argc; char *argv[]; { struct hostent *ptrh; /* pointer to a host table entry */ struct protoent *ptrp; /* pointer to a protocol table entry */ struct sockaddr_in sad; /* structure to hold an IP address */ int sd; /* socket descriptor */ int port; /* protocol port number */ char *host; /* pointer to host name */ int n; /* number of characters read */ char buf[1000]; /* buffer for data from the server */
  • 10. #ifdef WIN32 WSADATA wsaData; WSAStartup(0x0101, &wsaData); #endif memset((char *)&sad,0,sizeof(sad)); /* clear sockaddr structure */ sad.sin_family = AF_INET; /* set family to Internet */ /* Check command-line argument for protocol port and extract */ /* port number if one is specified. Otherwise, use the default */ /* port value given by constant PROTOPORT */ if (argc > 2) { /* if protocol port specified */ port = atoi(argv[2]); /* convert to binary */ } else { port = PROTOPORT; /* use default port number */ } if (port > 0) /* test for legal value */ sad.sin_port = htons((u_short)por t); else { /* print error message and exit */ fprintf(stderr,"bad port number %sn",argv[2]); exit(1); } /* Check host argument and assign host name. */ if (argc > 1) { host = argv[1]; /* if host argument specified */ } else { host = localhost; } /* Convert host name to equivalent IP address and copy to sad. */ ptrh = gethostbyname(host); if ( ((char *)ptrh) == NULL ) { fprintf(stderr,"invalid host: %sn", host); exit(1); }
  • 11. memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); /* Map TCP transport protocol name to protocol number. */ if ( ((int)(ptrp = getprotobyname("tcp"))) == 0) { fprintf(stderr, "cannot map "tcp" to protocol number"); exit(1); } /* Create a socket. */ sd = socket(PF_INET, SOCK_STREAM, ptrp->p_proto); if (sd < 0) { fprintf(stderr, "socket creation failedn"); exit(1); } /* Connect the socket to the specified server. */ if (connect(sd, (struct sockaddr *)&sad, sizeof(sad)) < 0) { fprintf(stderr,"connect failedn"); exit(1); } /* Repeatedly read data from socket and write to user.s screen. */ n = recv(sd, buf, sizeof(buf), 0); while (n > 0) { write(1,buf,n); printf("n: %dn", n); n = recv(sd, buf, sizeof(buf), 0); } printf("n: %dn", n); /* Close the socket. */ closesocket(sd); /* Terminate the client program gracefully. */ exit(0); }