Ticket #6: tcp_recv.c

File tcp_recv.c, 1.8 KB (added by anonymous, 13 years ago)
Line 
1/* tcpserver.c */
2
3#include <sys/types.h>
4#include <sys/socket.h>
5#include <netinet/in.h>
6#include <arpa/inet.h>
7#include <stdio.h>
8#include <stdlib.h>
9#include <unistd.h>
10#include <errno.h>
11#include <string.h>
12
13
14int main()
15{
16 int sock, connected, bytes_recieved , true = 1;
17 char send_data [1024] , recv_data[1024];
18
19 struct sockaddr_in server_addr,client_addr;
20 int sin_size;
21
22 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
23 perror("Socket");
24 exit(1);
25 }
26
27 if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int)) == -1) {
28 perror("Setsockopt");
29 exit(1);
30 }
31
32 server_addr.sin_family = AF_INET;
33 server_addr.sin_port = htons(5000);
34 server_addr.sin_addr.s_addr = INADDR_ANY;
35 bzero(&(server_addr.sin_zero),8);
36
37 if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))
38 == -1) {
39 perror("Unable to bind");
40 exit(1);
41 }
42
43 if (listen(sock, 5) == -1) {
44 perror("Listen");
45 exit(1);
46 }
47
48 printf("\nTCPServer Waiting for client on port 5000");
49 fflush(stdout);
50
51
52 while(1)
53 {
54
55 sin_size = sizeof(struct sockaddr_in);
56
57 connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size);
58
59 printf("\n got a connection from (%s , %d)",
60 inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));
61
62 while (1)
63 {
64 bytes_recieved = recv(connected,recv_data,0,0);
65
66 printf("bytes_recieved %d errno %d\n", bytes_recieved, errno);
67 sleep (1);
68 }
69 }
70 close(sock);
71 return 0;
72}