On Mar 21, 2013, at 7:57 PM, Tomás Coiro wrote:

> I've been seeing the examples of Racket to make a server, and although I 
> learned a lot, I'd love to know how to actually launch it so, for example, a 
> friend can see my page from his house.
> 
> 
> For the best example, let's say i have the Hello World server, what changes 
> do i need to make so someone can access it from a browser? can I use a 
> webpage likewww.hello.com ? Can I do it from my computer?    
> 
> 
> #lang web-server/insta
> 
> ;; A "hello world" web server
> (define (start request)
> (response/xexpr
> '(html
> (body "Hello World"))))

On the Racket side, making your server open to the web is actually quite easy:

#lang racket

(require web-server/servlet-env
         web-server/http/xexpr)

;; A "hello world" web server
(define (start request)
  (response/xexpr
   '(html
     (body "Hello World"))))

(serve/servlet start
               #:listen-ip #f
               #:port 27803)

The #:listen-ip #f tells Racket that you want to accept connections from any 
machine, not just from your own.

There's no need to deal with tcp-level stuff.

Having said this, the real challenge may be in routing your friend's request to 
your computer. That is: if you want your friend's request to come to your 
computer, you need an IP address that your friend's computer can use to reach 
you.

If you're like most people, your computer is connected to an ISP (internet 
service provider) through a router. To find out what your IP address is, try 
visiting a site like "www.dnsstuff.com". At the top, in teeny tiny letters, it 
will tell you your IP address; it will look like four numbers separated by 
periods. Suppose it's 62.241.212.42. (I just made that up.) Since your web 
server will be running on port 27803 (that's what I put in the racket program, 
above), your friend will need to visit

http://62.241.212.42:27803

to get to your server. Note that most ISPs occasionally change your IP address; 
if you grab it now, it may not still be accurate next week.

But wait! If you try this, chances are high that it won't work.  That's because 
most people are behind a router, and maybe one or more firewalls as well.  In 
order to fix this, you need to open "pinholes" through your routers and 
firewalls to ensure that requests for this port that arrive at your house get 
properly routed to your computer. This will probably involve configuring your 
router and/or your machine's firewall. 

To summarize: from the Racket standpoint, it's easy; however, you're probably 
going to have to do a bunch of work to allow your friend to reach your computer.

And, of course, apologies if you already knew all of this.

Best,

John Clements



____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to