Professional Documents
Culture Documents
57 while(1)
58 {
59 bzero(buf, MAX_BUFSIZE);
60 if(!read(connfd, buf, sizeof(buf)))
61 {
62 // There are many reasons for 'read' to fail
63 // So better attempt to close the socket.
64 CloseConnection(c);
65 return NULL;
66 }
67 write(connfd, buf, sizeof(buf));
68 }
69 return NULL;
70 }
71
72
73 int main(int argc, char *argv[])
74 {
75 // IANA has assigned port 7 for echo service.
76 // But 0-1023 are "Well-Known", and 1024–49151 are "Registered".
77 // Moreover, port 7 may require root privilege (sudo).
78 // So, consider changing port number if socket fails to bind.
79 int sockfd, connfd, port=7;
80 struct sockaddr_in serveraddr, *cli;
81 conn *c;
82 socklen_t len;
83 if(argc>=2)
84 {
85 port = atoi(argv[1]);
86 if(port<0)
87 port=7;
88 }
89 sockfd=socket(AF_INET, SOCK_STREAM, 0);
90 if(sockfd==-1)
91 {
92 safe_printf("Socket creation failed\n", 0, 0);
93 exit(0);
94 }
95 safe_printf("Socket successfully created\n", 0, 0);
96
97 bzero(&serveraddr, sizeof(serveraddr));
98 serveraddr.sin_family = AF_INET;
99 serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
100 serveraddr.sin_port = htons(port);
101 if(bind(sockfd, (SA *)&serveraddr, sizeof(serveraddr)))
102 {
103 safe_printf("Failed to bind socket (Tried @ port %d).\n", port, 0);
104 exit(0);
105 }
106 safe_printf("Socket successfully bound...\n", 0, 0);
107
108 if(listen(sockfd, 5))
109 {
110 safe_printf("Listen failed\n", 0, 0);
111 exit(0);
112 }
Shree Motilal Kanhaiyalal Fomra Institute of Technology
Echo Server in C 3