Test programma
/* Dit programmaatje zet een tcp verbinding op met de echo poort van de ntp0, */
/* dus alle karakters die je na het opstarten van dit proggie intikt worden door */
/* ntp0 ge-echo'd en dit proggie leest dit weer van de tcp connectie uit */
/*------------------------------------------------------------------------------ */
/* Doel: Test programmaatje die een tcp sock opent, met read en */
/* write kan dan naar de socket gelezen of geschreven worden. */
#include stdio.h>
#include sys/types.h>
#include sys/socket.h>
#include netinet/in.h>
#include arpa/inet.h>
#define TCP_POORT 7
#define HOST_ADDRES "190.22.221.1"
#define MAXLINE 512
void main ()
{
int sockfd;
struct sockaddr_in serv_addr;
bzero ((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr (HOST_ADDRES);
serv_addr.sin_port=htons(TCP_POORT);
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
printf("client:can't open socket");
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr))<0)
printf("client:can't connect to server");
ioroutine (stdin,sockfd);
close (sockfd);
exit(0);
}
ioroutine (karakterreeks,sockfd)
register FILE *karakterreeks;
register int sockfd;
{
int lengte;
char zendlijn[MAXLINE], ontvlijn[MAXLINE];
while (fgets(zendlijn,MAXLINE,karakterreeks) !=NULL)
{
lengte=strlen (zendlijn);
if (schrijfchars(sockfd,zendlijn,lengte) != lengte)
printf("Kan niet schrijven naar socket!!");
lengte=leeslijn(sockfd,ontvlijn,MAXLINE);
if (lengte < 0)
printf("Kan niet lezen van socket!!");
ontvlijn[lengte]=0;
fputs(ontvlijn,stdout);
}
if (ferror(karakterreeks))
printf("kan niet lezen van karakterreeks file");
}
int leeslijn (fd,ptr,maxlen)
register int fd;
register char *ptr;
register int maxlen;
{
int lengte,rc;
char buffer;
for (lengte=1;lengte0)
{
n_geschreven=write(fd,ptr,n_over);
if (n_geschreven <=0)
return(n_geschreven); /* ERROR!!!!!! */
n_over -=n_geschreven; /* verlaag nleft */
ptr +=n_geschreven; /* schuif pointer omhoog */
}
return (nbytes-n_over);
}
Terug