Drupal 7 - How to show an upcoming event from site 1 on site 2? For Drupal 7, Is it possible to show an upcoming event from site A on site B's block?

Also, is it possible to show an upcoming event by category? For example, I wanna have an upcoming event for swimming class and an upcoming event for hiking group. However, they are all in one same calendar.

Thanks,
HL
You can use Shared Blocks, it has both drupal 6 and 7 stable releases: 

If you have a main site with blocks that you want to syndicate across several
other websites, you need this module!

Features:

Allows publishing and subscribing of Drupal blocks
Changes to published blocks are updated on sites with subscription blocks
Published blocks provides a JSON endpoint at sharedblocks/{module}/{delta}
Block subscriptions are updated on cron with an adjustable refresh interval