最近鞏固下python語言,說真的,使用了這麼多腳本語言,仍是這門比較好玩點,快速,簡潔,容易上手更不用說了。html
socket 套接字是爲特定網絡協議(例如TCP/IP,ICMP/IP,UDP/IP等)套件對上的網絡應用程序提供者提供當前可移植標準的對象。socket是容許發送和接受數據。創建通訊通道,網絡通訊的每一個端點擁有一個套接字對象爲前提。python
python socket 這就是python的一個模塊,至於怎麼使用這個模塊,你們能夠查看 如下的網址,裏面的python資料都很全的。http://docs.python.org/2/library/socket.html(英文的,不過你們能夠大概看下,而後看實例就懂得了,很容易) 服務器
如下寫的代碼仍是不夠完美,哪位高手路過的,請多指點,上代碼...............網絡
1 服務器端app
[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:\n%s"%(time.ctime(),data)) else:#這個就是接收socket的輸入 data = receive_data.recv(1024) print "<客戶端發送的信息>",data server.close()
2 客戶端socket
[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:\n%s"%(time.ctime(),client_data)) client.close()
3 測試!!!ide
服務器端執行:測試
[root@localhost ~]# python server.py 請等待鏈接,親!耐心點......
客戶端執行:優化
[root@localhost ~]# python clien.py 請輸入聊天的話題,親>>>>>:
4 服務器端和客戶端聊天對話測試:server
客戶端發起對話鏈接: [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界面的通信軟件.