A somewhat complete communication. Need to add dynamic port assignment