書上用c寫的,還要在linux下執行。在網上找了下python寫socket
(鏈結).
you cannot but admit python is just so beautiful!
原鏈結的**有點問題,沒有實現持續的監聽。稍微改了一下,就可以在命令列下,像qq那樣即時文字聊天了
server.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket
from time import ctime
'''host為空表示bind可以繫結到所有有效位址上
port 必須要大於1024
bufsiz為緩衝區 我們設定為1k
'''host = ''
port = 23456
bufsiz = 1024
addr = (host,port)
tcpsersock = socket.socket(socket.af_inet, socket.sock_stream)
tcpsersock.bind(addr)
tcpsersock.listen(5) #引數表示允許多少連線同時連進來
try:
while true:
'''進入伺服器的無限迴圈中,等待連線到來
得到客戶端訊息後在訊息前加乙個時間戳後返回
'''print 'waiting for connection...'
new_s,addr = tcpsersock.accept()
print '...connected from ',addr
while true:
data = new_s.recv(bufsiz)
if not data:
new_s.close()
break
print data
data = raw_input('> ')
new_s.send('[%s] %s' %(ctime(),data))
except baseexception, e:
tcpsersock.close() #記住在伺服器退出時記得關閉
client.py
import socket
host = '127.0.0.1'
port = 23456
bufsiz = 1024
addr = (host,port) #目標位址和埠
tcpclisock = socket.socket(socket.af_inet, socket.sock_stream)
while true:
try:
tcpclisock.connect(addr)
break
except:
print 'error please waiting..'
while true:
data = raw_input('> ')
if not data:
break
tcpclisock.send(data)
data = tcpclisock.recv(bufsiz)
if not data:
break
print data
tcpclisock.close()
計算機網路實驗
1 實驗題目 幀的封裝 幀的封裝時任何資料鏈路層協議必須實現的功能,對幀的封裝建立在詳細了解該協議 pdu格式的基礎之上。本次試驗要求同學們自己動手實現 ppp協議和 mac協議的 pdu封裝程式。2 實驗內容 1 隨機生成 64位元組的資料 a,作為網際層 ip協議的 pdu。2 將a 封裝成字元...
計算機網路 期末實驗
1 什麼是arp?答 arp協議 位址解析協議 是 address resolutionprotocol 的縮寫。所謂 位址解析 就是主機在傳送幀前將目的邏輯位址轉換成目的實體地址的過程。在使用tcp ip協議的乙太網中,arp協議完成將ip位址對映到mac位址的過程。2 給出練習3實驗步驟和實驗結...
計算機網路 ipconfig實驗
no.2 總結ipconfig可用於顯示當前的tcp ip配置的設定值這些資訊一般用來檢驗人工配置的tcp ip設定是否正確。但是,如果計算機和所在區域網使用來動態主機配置協議 dhcp協議 ipconfig可以讓你了解年的計算機是否成功的租用到乙個ip位址,如果租用到則可以了解它分配到的是什麼位址...