picotcp udp updates

This commit is contained in:
Joseph Henry
2016-12-05 10:28:02 -08:00
parent 152938d7e7
commit e640cd016b
16 changed files with 263 additions and 186 deletions

View File

@@ -11,7 +11,7 @@
#define MAXBUF 1024*1024
void echo( int sd ) {
void echo(int sock) {
char bufin[MAXBUF];
struct sockaddr_in remote;
int n;
@@ -19,10 +19,11 @@ void echo( int sd ) {
long count = 0;
while (1) {
usleep(50);
sleep(1);
//usleep(50);
count++;
// read a datagram from the socket (put result in bufin)
n=recvfrom(sd,bufin,MAXBUF,0,(struct sockaddr *)&remote,&len);
n=recvfrom(sock,bufin,MAXBUF,0,(struct sockaddr *)&remote,&len);
// print out the address of the sender
printf("DGRAM from %s:%d\n", inet_ntoa(remote.sin_addr), ntohs(remote.sin_port));
@@ -31,7 +32,8 @@ void echo( int sd ) {
} else {
printf("GOT %d BYTES (count = %ld)\n", n, count);
// Got something, just send it back
// sendto(sd,bufin,n,0,(struct sockaddr *)&remote,len);
// sendto(sock,bufin,n,0,(struct sockaddr *)&remote,len);
printf("RX = %s\n", bufin);
}
}
}
@@ -42,13 +44,13 @@ int main(int argc, char *argv[]) {
printf("usage: udp_server <port>\n");
return 0;
}
int ld, port = atoi(argv[1]);
int sock, port = atoi(argv[1]);
socklen_t len;
struct sockaddr_in skaddr;
struct sockaddr_in skaddr2;
// Create socket
if ((ld = socket( PF_INET, SOCK_DGRAM, 0)) < 0) {
if ((sock = socket( PF_INET, SOCK_DGRAM, 0)) < 0) {
printf("error creating socket\n");
return 0;
}
@@ -57,17 +59,18 @@ int main(int argc, char *argv[]) {
skaddr.sin_addr.s_addr = htonl(INADDR_ANY);
skaddr.sin_port = htons(port);
// Bind to address
if (bind(ld, (struct sockaddr *) &skaddr, sizeof(skaddr))<0) {
if (bind(sock, (struct sockaddr *) &skaddr, sizeof(skaddr))<0) {
printf("error binding\n");
return 0;
}
// find out what port we were assigned
len = sizeof( skaddr2 );
if (getsockname(ld, (struct sockaddr *) &skaddr2, &len)<0) {
printf("error getsockname\n");
return 0;
}
//if (getsockname(sock, (struct sockaddr *) &skaddr2, &len)<0) {
// printf("error getsockname\n");
// return 0;
//}
// Display address:port to verify it was sent over RPC correctly
/*
port = ntohs(skaddr2.sin_port);
int ip = skaddr2.sin_addr.s_addr;
unsigned char d[4];
@@ -76,8 +79,8 @@ int main(int argc, char *argv[]) {
d[2] = (ip >> 16) & 0xFF;
d[3] = (ip >> 24) & 0xFF;
printf("bound to address: %d.%d.%d.%d : %d\n", d[0],d[1],d[2],d[3], port);
*/
// RX
echo(ld);
echo(sock);
return(0);
}