gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

網絡編程實例教程

第1章互聯網常見架構:

C/S:客戶端和服務端

常見:wechat/qq

B/S:瀏覽器和服務器

常見:所有瀏覽器都是BS架構

第2章什么是socket?

Socket就是一系列接口,把傳輸層一下的協議都封裝成了簡單的接口

2.1為什么要用套接字?

目的是要編寫一個CS架構的軟件

server端必須具備的特點:

1.一直對外服務

2.必須綁定一個固定的地址

3.支持并發

2.2套接字的類型:

1.基于文件類型的套接字:AF_UNIX

兩個文件同時位于一個機器上,則可以共用一個文件系統來進行通信

2.基于網絡類型的套接字:AF_INET

2.3套接字的工作流程:

先從服務端說起,服務端先初始化socket,然后與端口綁定,對端口進行監聽,調用accept阻塞,等待客戶端連接,在這時如果有個客戶端初始化一個socket,然后連接服務器connect,如果連接成功,這時客戶端與服務端的連接就建立了,客戶端發送數據請求,服務端接受請求并處理請求,然后把數據發送給客戶端,客戶端讀取數據,最后關閉連接,一次交互結束

2.4關于套接字的方法:

服務端套接字函數:

s.bind()綁定(主機,端口號)到套接字
s.listen()開始TCP監聽
s.accept()被動接受TCP客戶的連接,(阻塞式)等待連接的到來

客戶端套接字函數:

s.connect()主動初始化TCP服務器連接
s.connect_ex() connect()函數的擴展版本,出錯時返回出錯碼,而不是拋出異常

公共用途的套接字函數:

s.recv()接收TCP數據
s.send()發送TCP數據(send在待發送數據量大于己端緩存區剩余空間時,數據丟失,不會發完)
s.sendall()發送完整的TCP數據(本質就是循環調用send,sendall在待發送數據量大于己端緩存區剩余空間時,數據不丟失,循環調用send直到發完)
s.recvfrom()接收UDP數據
s.sendto()發送UDP數據
s.getpeername()連接到當前套接字的遠端的地址
s.getsockname()當前套接字的地址
s.getsockopt()返回指定套接字的參數
s.setsockopt()設置指定套接字的參數
s.close()關閉套接字

面向鎖的套接字方法:

s.setblocking()設置套接字的阻塞與非阻塞模式
s.settimeout()設置阻塞套接字操作的超時時間
s.gettimeout()得到阻塞套接字操作的超時時間

2.5基于tcp的socket通信

服務端:

importsocket

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',8080))
server.listen(3)
10

print('來自客戶端的請求')
print(addr)
data=conn.recv(1024)
print('來自客戶端的消息:',data)
conn.send(data.upper())
conn.close()

客戶端:

importsocket
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(('127.0.0.1',8080))

client.send(bytes('nihao',encoding='utf-8'))
data=client.recv(1024)
print('來自服務端的數據:',data)
client.close()

2.6通信循環問題

服務端:

importsocket

server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',8080))
server.listen(3)

conn,addr=server.accept()
print(addr)
while True:
data=conn.recv(1024)
iflen(data) ==0:break
print('來自客戶端的消息:',data)
conn.send(data.upper())
conn.close()

客戶端:

importsocket

client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

client.connect(('127.0.0.1',8080))

while True:
msg=input('>>: ').strip()
iflen(msg) ==0:continue
client.send(bytes(msg,encoding='utf-8'))
data=client.recv(1024)
print(data)

client.close()

2.7循環鏈接問題

importsocket

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind(('127.0.0.1',8080))

server.listen(5)

while True:
conn,addr=server.accept()

while True:
try:
data=conn.recv(1024)
iflen(data) ==0:break
print(data)
conn.send(data.upper())
exceptConnectionRefusedErrorase:
break
conn.close()

2.8tcp版ssh客戶端

服務端:

importsocket

importsubprocess

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind(('127.0.0.1',8080))

server.listen(5)

while True:
conn,addr=server.accept()

while True:
try:
data=conn.recv(1024)
iflen(data) ==0:break
obj=subprocess.Popen(data.decode('utf-8'),
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE
)
stdout=obj.stdout.read()
stderr=obj.stderr.read()
conn.send(stdout+stderr)
exceptConnectionRefusedErrorase:
break
conn.close()
server.close()

客戶端:

importsocket

client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

client.connect(('127.0.0.1',8080))

while True:
msg=input('>>: ').strip()
iflen(msg) ==0:continue
client.send(bytes(msg,encoding='utf-8'))
data=client.recv(1024)
print(data.decode('utf-8'))

client.close()

第3章粘包問題

要知道:只有tcp有粘包現象,UDP則永遠沒有

3.1什么是粘包?

就是接受方不知道消息之間的界限,不知道一次性提取多少字節所造成的

3.2解決辦法:

問題的根源在于,接受端不知大發送端將要傳送的字節流的長度,所以解決粘包的方法就是圍繞,如何讓發送端在發送數據前把自己將要發送的字節流總大小讓接收端知曉,然后接收端來一個死循環接受所有數據即可

解決粘包問題服務端:

importsocket
importstruct

importsubprocess

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind(('127.0.0.1',8080))

server.listen(5)

while True:
conn,addr=server.accept()

while True:
try:
data=conn.recv(1024)
iflen(data) ==0:break
obj=subprocess.Popen(data.decode('utf-8'),
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE
)
stdout=obj.stdout.read()
stderr=obj.stderr.read()

#發送固定長度的報頭
total_size=len(stdout) +len(stderr)
conn.send(struct.pack('i',total_size))

#真實數據
conn.send(stdout+stderr)
exceptConnectionRefusedErrorase:
break
conn.close()
server.close()

客戶端:

importsocket
importstruct

client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

client.connect(('127.0.0.1',8080))

while True:
msg=input('>>: ').strip()
iflen(msg) ==0:continue
client.send(bytes(msg,encoding='utf-8'))
#接受數據長度
header=client.recv(4)
total_size=struct.unpack('i',header)[0]
recv_size=0
res=b''
whilerecv_size < total_size:
recv_data=client.recv(1024)
res+=recv_data
recv_size+=len(recv_data)
print(res.decode('utf-8'))

client.close()

第4章一個簡單的基于UDP的socket客戶端和服務端

服務端:

importsocket

server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080))

while True:
data,client_addr=server.recvfrom(1024)
print('===>',data,client_addr)
server.sendto(data.upper(),client_addr)
server.close()

客戶端:

importsocket

client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

while True:
msg=input('>>: ').strip()
client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))
data,server_addr=client.recvfrom(1024)
print(data)
client.close()

第5章socketserver實現并發的效果

5.1TCP服務端:

5.2UDP服務端:

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
青青草视频国产| 日韩一区二区三区久久| 极品美女扒开粉嫩小泬| 日韩精品视频一区二区在线观看| 欧美s码亚洲码精品m码| 波多野结衣家庭教师在线| 国产v亚洲v天堂无码久久久 | 久久国产精品国产精品| 欧美视频国产视频| 99久久久无码国产精品性色戒| 国产在线视频综合| 欧美黑人经典片免费观看| 久久精品午夜福利| 性欧美在线视频| 九一国产精品视频| 亚洲福利精品视频| japanese在线视频| 一二三四视频社区在线| 91热这里只有精品| 男人的天堂视频在线| 中文字幕无码不卡免费视频| www.51色.com| 日本www在线视频| 欧美xxxxxbbbbb| 东北少妇不带套对白| 欧美黄色性生活| 成人在线观看毛片| 婷婷激情四射五月天| www.日本在线视频| 我要看一级黄色大片| 999一区二区三区| 色噜噜狠狠一区二区| 日本xxxxxxxxxx75| 日本福利视频导航| 成年网站在线免费观看| 97人人模人人爽人人澡| 成年人免费在线播放| 日本a在线天堂| 特黄视频免费观看| 不要播放器的av网站| 日本黄色片一级片| 亚洲综合在线一区二区| 日韩 欧美 高清| 男女猛烈激情xx00免费视频| 亚洲高清视频免费| 色国产在线视频| 国产在线青青草| 国产精品久久中文字幕| 8x8x华人在线| 国产福利精品一区二区三区| 中文字幕视频在线免费观看| 超碰网在线观看| 无码人妻丰满熟妇区96| 亚洲乱码日产精品bd在线观看| 亚洲娇小娇小娇小| 激情五月开心婷婷| 成人在线免费在线观看| 日韩五码在线观看| 美女黄色免费看| 欧美一级中文字幕| 欧美一级免费在线观看| 在线无限看免费粉色视频| 在线观看免费黄网站| 黄色高清无遮挡| 妞干网在线免费视频| 欧美日韩在线中文| 又粗又黑又大的吊av| 伊人成色综合网| 男人日女人下面视频| 欧美爱爱视频免费看| 国产免费黄色小视频| 国产肥臀一区二区福利视频| 日本精品免费在线观看| 蜜臀av午夜一区二区三区| 精品www久久久久奶水| 不卡av免费在线| 小泽玛利亚视频在线观看| 鲁一鲁一鲁一鲁一av| 免费成人黄色大片| www.-级毛片线天内射视视| 欧美三级午夜理伦三级老人| av磁力番号网| 欧美激情视频免费看| 欧美视频第一区| 午夜剧场在线免费观看| 夜夜夜夜夜夜操| 天堂а√在线中文在线| 一本大道东京热无码aⅴ| 国产精品www在线观看| 久久精品免费一区二区| 午夜dv内射一区二区| 亚洲综合婷婷久久| 今天免费高清在线观看国语| 草草视频在线免费观看| 久久精品免费一区二区| 一区二区三区视频在线观看免费| 制服丝袜中文字幕第一页| 影音先锋男人的网站| 国产午夜福利在线播放| 一区二区三区入口| 欧美少妇一区二区三区| 久久久久久久久久久久久国产精品| 少妇一级淫免费播放| 欧美一级中文字幕| 91av在线免费播放| 91制片厂免费观看| 国产二级片在线观看| 欧美激情第3页| 成人在线免费观看视频网站| 北条麻妃在线观看| 亚洲高清av一区二区三区| 黄页网站在线观看视频| 天天综合网久久| 欧美又粗又长又爽做受| 亚洲高清免费在线观看| 成人性免费视频| 激情文学亚洲色图| aa免费在线观看| 成人免费看片视频在线观看| 国产视频一区二区视频| 免费视频爱爱太爽了| 奇米视频888| 少妇高潮喷水久久久久久久久久| 色偷偷中文字幕| 一级黄色香蕉视频| 国产免费裸体视频| 亚洲高清av一区二区三区| 男人操女人免费| 色欲色香天天天综合网www| 亚洲一区精品视频在线观看| 欧美精品一区免费| 欧美视频在线第一页| 北条麻妃亚洲一区| 国产区二区三区| 人妻精品无码一区二区三区 | 日日碰狠狠添天天爽超碰97| 久久久国产精华液999999 | 成人性做爰aaa片免费看不忠| 在线观看17c| 蜜臀一区二区三区精品免费视频| 国产精品后入内射日本在线观看| 18视频在线观看娇喘| www.51色.com| 欧美三级午夜理伦三级富婆| 北条麻妃69av| 欧美,日韩,国产在线| 国产免费裸体视频| 日日噜噜夜夜狠狠久久丁香五月| 亚洲免费999| 四虎永久在线精品无码视频| 精品久久一二三| 精品一区二区三区无码视频| 4444在线观看| 青青在线免费视频| 男女激烈动态图| 国产精品jizz在线观看老狼| 亚洲无在线观看| 国产在线视频三区| 欧美aaa在线观看| 欧美一级免费在线| 精品一区二区成人免费视频| 一起操在线视频| 婷婷免费在线观看| 玖玖爱视频在线| 伊人国产精品视频| 黄色免费高清视频| 成人黄色片免费| av在线播放亚洲| 91九色在线观看视频| 日日摸天天爽天天爽视频| 免费在线观看毛片网站| 福利在线一区二区三区| 亚洲午夜激情影院| 久久观看最新视频| 国产在线播放观看| 日韩中文字幕免费在线| 一本一道久久a久久综合蜜桃| xxx国产在线观看| 黄色aaaaaa| 一本久道高清无码视频| 欧美色图色综合| 一级黄色特级片| 国产 国语对白 露脸| 亚洲中文字幕无码专区| 无码日韩人妻精品久久蜜桃| 黄大色黄女片18第一次| 精品国产一区二区三区在线| 俄罗斯av网站| 中文字幕精品一区二区三区在线| 99久re热视频精品98| 亚欧无线一线二线三线区别| 天天操狠狠操夜夜操| 亚洲av综合色区| 99久久久无码国产精品6| 中文字幕1234区| 怡红院av亚洲一区二区三区h| 在线观看免费视频高清游戏推荐| 佐佐木明希av| 九一精品在线观看| 日韩精品一区二区免费|