python socketクライアントとサーバ側の会話を実現


最近python言語を強固にして、本当のことを言って、こんなに多くのスクリプト言語を使って、やはりこの比較的に面白くて、迅速で、簡潔で、上手になりやすいのは言うまでもありません.
socketソケットは、TCP/IP、ICMP/IP、UDP/IPなどの特定のネットワークプロトコルのスイートペア上のネットワークアプリケーションプロバイダに現在の移植可能な基準を提供するオブジェクトである.socketは、データの送信と受信を許可します.ネットワーク通信の各エンドポイントにソケットオブジェクトがあることを前提とした通信チャネルを確立します.
python socketこれがpythonのモジュールです.このモジュールをどのように使うかについては、以下のURLを見ることができます.中のpython資料はすべてそろっています.http://docs.python.org/2/library/socket.html(英語ですが、大体見て、実例を見ればわかりますので、簡単です)
下记のコードはまだ完璧ではありませんて、どの达人が通りかかったので、多く指导して、上のコード......
1サーバ側
[root@localhost ~]# cat server.py
#coding:utf8
import time
import sys
import socket
import select
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1',8989))#  IP   
server.listen(10) #  
input = [server,sys.stdin]#sys.stdin     ,     
print '     , !   ......'
client,address = server.accept()#      IP  
print "    :",address
input.append(client)#      imput  
Ture = 1#       
while Ture:
    print"        , >>>>>:"
    input_data,out_data,except_data = select.select(input,[],[])#  select            
    for receive_data in input_data:#        ,            
       if receive_data == sys.stdin: #         ,             
           data = raw_input()
           if data == '^c':
               running = 0
               client.send(data) #      
               client.close()
               break
           client.send("    : %s:
%s"%(time.ctime(),data)) else:# socket data = receive_data.recv(1024) print "",data server.close()

2クライアント
 
[root@localhost ~]# cat clien.py
#coding:utf8
import time
import sys
import select
import socket
address = ('127.0.0.1',8989)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(address)
input = [client,sys.stdin]
Ture = 1
while Ture:
   print '        , >>>>>:'
   input_data,oupt_data,except_data = select.select(input,[],[])
                                                                                                                                                                          
   for receive_data in input_data:
       if receive_data == client:
           data = client.recv(1024)
           if data == '^c':
               running = 0
               print 'server exist'
               receive_data.close()
               print 'client is over'
               break
           print "",data
       else:
           client_data = raw_input()
           client.send("    : %s:
%s"%(time.ctime(),client_data)) client.close()

3テスト!!!
サーバ側の実行:
 
[root@localhost ~]# python server.py
     , !   ......

 
クライアント実行:
 
[root@localhost ~]# python clien.py
        , >>>>>:

4サーバ側とクライアント側の会話テスト:
 
         :
[root@localhost ~]# python clien.py
        , >>>>>:
  socket        ,   ?
        , >>>>>:
         :
[root@localhost ~]# python server.py
     , !   ......
    : ('127.0.0.1', 33371)
        , >>>>>:
     : Wed Jul 24 09:13:48 2013:
  socket        ,   ?
        , >>>>>:

 
 
        :
[root@localhost ~]# python server.py
     , !   ......
    : ('127.0.0.1', 33371)
        , >>>>>:
     : Wed Jul 24 09:13:48 2013:
  socket        ,   ?
        , >>>>>:
      ,         ,       ,   ?
        , >>>>>:
       :
[root@localhost ~]# python clien.py
        , >>>>>:
  socket        ,   ?
        , >>>>>:
     : Wed Jul 24 09:21:15 2013:
      ,         ,       ,   ?
        , >>>>>:

私のレベルが限られているため、コードは完璧ではありません.今度はQQインタフェースのような通信ソフトを書く時間があります.