計算機網路實驗 (socket的簡單練習)

2021-06-20 18:29:35 字數 1715 閱讀 4272

書上用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位址,如果租用到則可以了解它分配到的是什麼位址...