ping-client.cpp |
ping-server.cpp |
void *clientRecProc(void *arg){
printf("Started receiving thread\n"); struct cShared *sh = (struct cShared *)arg; Packet *recvPacket; PacketHdr *hdr; int seq_n; char type; int size; for(int i=0; i<sh->max; i++){ recvPacket = sh->my_recv_port->receivePacket(); hdr = recvPacket->accessHeader(); type = hdr->getOctet(0); seq_n = hdr->getIntegerInfo(1); size = recvPacket->getPayloadSize(); printf("Received packet: type = %c, sequence number = %d, size = %d\n", type, seq_n, size); } return NULL; } void startClient(int n){ ... struct cShared *sh; sh = (struct cShared*)malloc(sizeof(struct cShared)); sh->my_recv_port = my_recv_port; sh->max = n; pthread_t thread; printf("Creating receiving thread\n"); pthread_create(&(thread), 0, &clientRecProc, sh); int seq_n; char buffer[PING_SIZE]; memset(buffer, 0, PING_SIZE); Packet *my_packet = new Packet(); my_packet->fillPayload(PING_SIZE, buffer); PacketHdr *hdr = my_packet->accessHeader(); hdr->setOctet('0',0); for(seq_n=0; seq_n<n; seq_n++){ printf("Sending packet %d\n",seq_n); hdr->setIntegerInfo(seq_n,1); my_send_port->sendPacket(my_packet); usleep(1000000); } pthread_join(thread, NULL); delete my_packet; } |
printf("Start server\n"); Packet *recvPacket; PacketHdr *hdr; int seq_n; char type; int size; while(1){ recvPacket = my_recv_port->receivePacket(); hdr = recvPacket->accessHeader(); type = hdr->getOctet(0); seq_n = hdr->getIntegerInfo(1); size = recvPacket->getPayloadSize(); printf("Received packet: type = %c, sequence number = %d, size = %d\n", type, seq_n, size); hdr->setOctet('1', 0); my_send_port->sendPacket(recvPacket); } |
make
./ping-client 10 |
./ping-server |
Start ping client Creating receiving thread Sending packet 0 Started receiving thread Received packet: type = 1, sequence number = 0, size = 64 Sending packet 1 Received packet: type = 1, sequence number = 1, size = 64 Sending packet 2 Received packet: type = 1, sequence number = 2, size = 64 Sending packet 3 Received packet: type = 1, sequence number = 3, size = 64 Sending packet 4 Received packet: type = 1, sequence number = 4, size = 64 Sending packet 5 Received packet: type = 1, sequence number = 5, size = 64 Sending packet 6 Received packet: type = 1, sequence number = 6, size = 64 Sending packet 7 Received packet: type = 1, sequence number = 7, size = 64 Sending packet 8 Received packet: type = 1, sequence number = 8, size = 64 Sending packet 9 Received packet: type = 1, sequence number = 9, size = 64 |
Start server Received packet: type = 0, sequence number = 0, size = 64 Received packet: type = 0, sequence number = 1, size = 64 Received packet: type = 0, sequence number = 2, size = 64 Received packet: type = 0, sequence number = 3, size = 64 Received packet: type = 0, sequence number = 4, size = 64 Received packet: type = 0, sequence number = 5, size = 64 Received packet: type = 0, sequence number = 6, size = 64 Received packet: type = 0, sequence number = 7, size = 64 Received packet: type = 0, sequence number = 8, size = 64 Received packet: type = 0, sequence number = 9, size = 64 |