Webページでは数式を表すためにLaTeX表記が使えるMathJaxを利用しています。
WebブラウザにはSafari/Chrome/Firefoxを使って下さい(IEでは表示できないようです。)
ネットワークプログラミング(1)
TCPサーバスクリプト
同時接続数(処理可能なスレッド)を5としたサーバスクリプト
#!/usr/bin/env python # -*- coding: utf-8 -*- ##### server process(prescribed listening port) with maximun 5 threads # usage: # $ ./tcp_server.py ### import socket import threading bind_ip = "127.0.0.1" bind_port = 9999 # create socket object server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # bind ip + port as a server server.bind((bind_ip, bind_port)) # listen with maximum 5 waiting queues server.listen(5) ### server while loop print "Listening on %s: %d" % (bind_ip, bind_port) # thread processing a task from clients def handle_client(client_socket): request = client_socket.recv(1024) # print data (max buffer size 1024) sent from client print "Received: %s" % request # send a message "Ack" to client client_socket.send("Ack!, connecting..") client_socket.close() while True: # event: a conncetion from client client, addr = server.accept() print "Accepted connection from %s: %d" % (addr[0], addr[1]) # preapre execution for thread processing by a client connecion client_handler = threading.Thread(target=handle_client, args=(client,)) # start thread client_handler.start()
次のような、実行結果を得る。
$ ./tcp_server.py Listening on 127.0.0.1: 9999 Accepted connection from 127.0.0.1: 58989 Received: Hello server
クライアントスクリプト
指定したサーバに接続してサーバからの応答を表示する
#!/usr/bin/env python # -*- coding: utf-8 -*- ##### coonect a server specifying server_addr server_port ## usage: # $ ./tcp_client.py server_addr server_port #### import socket import sys # For web server ##target_host = "www.google.com" ##target_port = 80 #target_host = "127.0.0.1" #target_port = 9999 argvs = sys.argv target_host = argvs[1] target_port = int(argvs[2]) # create socket object client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #connecting the target host client.connect((target_host, target_port)) # send data to the server ## for web server #client.send("GET / HTTP/1.1/\nHost: google.com\r\n\r\n") client.send("Hello server") #received data from connecting server with buffer size 4096 response = client.recv(4096) print response
実行結果の例である。
$ ./tcp_client.py 127.0.0.1 9999 Ack!, connecting..