6 #include <sys/socket.h>
7 #include <netinet/in.h>
15 struct sockaddr_in saddr;
17 fd = socket (PF_INET, SOCK_STREAM, 0);
19 saddr.sin_family = AF_INET;
20 saddr.sin_port = htons (5222);
21 saddr.sin_addr.s_addr = INADDR_ANY;
23 bind (fd, (struct sockaddr*) &saddr, sizeof (struct sockaddr_in));
31 int server_loop (int fd)
34 struct sockaddr_in saddr;
36 saddr_size = sizeof (struct sockaddr_in);
37 client = accept (fd, (struct sockaddr*) &saddr, &saddr_size);
38 fprintf (stderr, "Accepted connection from %s:%d.\n",
39 inet_ntoa (saddr.sin_addr), ntohs (saddr.sin_port));
47 struct sockaddr_in saddr;
50 host = gethostbyname ("jabber.org");
52 fd = socket (PF_INET, SOCK_STREAM, 0);
54 saddr.sin_family = AF_INET;
55 saddr.sin_port = htons (5222);
56 saddr.sin_addr = *(struct in_addr*) host->h_addr;
58 if (connect (fd, (struct sockaddr*) &saddr, sizeof (struct sockaddr_in)) < 0)
60 fprintf (stderr, "%s\n", strerror (errno));
65 fprintf (stderr, "Connected to jabber.org:5222.\n");
72 int client_loop (int client, int server)
83 FD_SET (client, &fds);
84 FD_SET (server, &fds);
85 select (FD_SETSIZE, &fds, NULL, NULL, NULL);
86 if (FD_ISSET (client, &fds))
88 r = read (client, buffer, 256);
95 write (server, buffer, r);
97 if (FD_ISSET (server, &fds))
99 r = read (server, buffer, 256);
106 write (client, buffer, r);
119 proxy = server_create ();
120 client = server_loop (proxy);
121 server = client_create ();
122 if (client_loop (client, server) < 0)
124 fprintf (stderr, "%s\n", strerror (errno));