2 AcessOS Test Network Application
\r
4 #include <acess/sys.h>
\r
10 // === PROTOTYPES ===
\r
11 int main(int argc, char *argv[], char *envp[]);
\r
12 int OpenTCP(const char *AddressString, short PortNumber);
\r
15 int main(int argc, char *argv[], char *envp[])
\r
18 int client_running = 1;
\r
20 // Connect to the remove server
\r
21 server_fd = OpenTCP( argv[1], atoi(argv[2]) );
\r
22 if( server_fd == -1 ) {
\r
23 fprintf(stderr, "Unable to create socket\n");
\r
27 while( client_running )
\r
30 char buffer[BUFSIZ];
\r
35 FD_SET(server_fd, &fds);
\r
37 rv = select(server_fd+1, &fds, NULL, NULL, NULL);
\r
40 if( FD_ISSET(server_fd, &fds) )
\r
42 // Read from server, and write to stdout
\r
45 len = read(server_fd, BUFSIZ, buffer);
\r
46 write(1, len, buffer);
\r
47 } while( len == BUFSIZ );
\r
50 if( FD_ISSET(0, &fds) )
\r
52 // Read from stdin, and write to server
\r
55 len = read(0, BUFSIZ, buffer);
\r
56 write(server_fd, len, buffer);
\r
57 write(1, len, buffer);
\r
58 } while( len == BUFSIZ );
\r
67 * \brief Initialise a TCP connection to \a AddressString on port \a PortNumber
\r
69 int OpenTCP(const char *AddressString, short PortNumber)
\r
76 addrType = Net_ParseAddress(AddressString, addrBuffer);
\r
77 if( addrType == 0 ) {
\r
78 fprintf(stderr, "Unable to parse '%s' as an IP address\n", AddressString);
\r
82 // Finds the interface for the destination address
\r
83 iface = Net_GetInterface(addrType, addrBuffer);
\r
84 if( iface == NULL ) {
\r
85 fprintf(stderr, "Unable to find a route to '%s'\n", AddressString);
\r
89 printf("iface = '%s'\n", iface);
\r
91 // Open client socket
\r
92 // TODO: Move this out to libnet?
\r
94 int len = snprintf(NULL, 100, "/Devices/ip/%s/tcpc", iface);
\r
96 snprintf(path, 100, "/Devices/ip/%s/tcpc", iface);
\r
97 fd = open(path, OPENFLAG_READ|OPENFLAG_WRITE);
\r
103 fprintf(stderr, "Unable to open TCP Client for reading\n");
\r
107 // Set remote port and address
\r
108 printf("Setting port and remote address\n");
\r
109 ioctl(fd, 5, &PortNumber);
\r
110 ioctl(fd, 6, addrBuffer);
\r
113 printf("Initiating connection\n");
\r
114 if( ioctl(fd, 7, NULL) == 0 ) {
\r
115 // Shouldn't happen :(
\r
116 fprintf(stderr, "Unable to start connection\n");
\r
120 // Return descriptor
\r