- We have seen several examples to controlling concurrency:
- Locks
- Immutable objects
- Single-threaded service
with the latest being single-threaded service. Be familiar with
this techinque and be prepared to apply it to avoid bad race conditions.
- Network programming
- Basic operations on a socket (receive/send a byte)
- Decorators such as DataInput and DataOutput that can send and receive primitive data types
- Protocol design
- Getting the job done: sending and receiving information reliably
- Constraints that affect protocol design (engineering considerations)
- Performance (throughput, latency)
- Security (what is done where?)
- Simple encryption
- Caesar cipher
- exclusive-or
-
For practice, consider how you would design a protocol and write the corresponding code to transmit and receive
objects:
- A maze from Lab 3
- A pencil
- How would you send such information encrypted, using Caesar or exclusive-or as the basis of encryption?