Files
haiku-beta6/src/tests/kits/net/at_client.c
T
ejakowatz 52a3801208 It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-09 12:24:59 +00:00

62 lines
1.2 KiB
C

#include <stdio.h>
#include <kernel/OS.h>
#include <string.h>
#include <sys/time.h>
#include <errno.h>
#include "sys/socket.h"
#include "netinet/in.h"
#include "arpa/inet.h"
#include "sys/select.h"
#include "sys/sockio.h"
#include "ufunc.h"
#define PORT 7772
#define HELLO_MSG "Hello from the server"
int main(int argc, char **argv)
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in sin;
int salen = sizeof(sin);
int rv, on = 1;
char buffer[50];
test_banner("Accept Test - Client");
ioctl(sock, FIONBIO, &on);
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = 0;
sin.sin_len = salen;
sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
rv = bind(sock, (const struct sockaddr*)&sin, salen);
if (rv < 0)
err(rv, "bind");
printf("Bound\n");
sin.sin_port = htons(PORT);
do {
rv = connect(sock, (const struct sockaddr*)&sin, salen);
} while (rv < 0 && errno == EINPROGRESS);
if (rv < 0 && errno != EISCONN)
err(errno, "connect");
printf("connected!\n");
do {
rv = read(sock, buffer, 50);
} while (rv < 0 && errno == EWOULDBLOCK);
if (rv < 0)
err(rv, "read");
printf("%s\n", buffer);
close(sock);
return (0);
}