成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

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

網絡編程實例教程

第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號
18禁强伦姧人妻又大又| 亚洲综合网国产精品一区| 999久久久精品国产消防器材| 国产成人无码AV在线播放DVD| 亚洲国产成人无码AV在线| 亚洲清清爽爽AABB| 无码国产精品一区二区高潮 | 日韩人妻无码一区2区3区里沙 | 国产DB624色谱柱88690| 国产熟女一区二区| 久久精品无码免费不卡| 免费看奶头视频的网站| 日本XXXX色视频在线观看免费,| 少妇搡BBBB搡BBB搡| 性生交大片免费看淑女出招| 亚洲一久久久久久久久| 97久久精品人人澡人人爽 | 中文字幕日韩人妻不卡一区| 波多野结衣一二三区AV高清| 国产精品丝袜黑色高跟鞋| 精品久久久久久国产| 年轻的嫂嫂2在线播放在线播放| 日本丰满熟妇XXXX色熟妇| 五月婷日韩中文字幕| 亚洲愉拍自拍欧美精品| TPU色母和PA6色母的性能| 国产成人无码免费视频79| 精品人妻系列无码一区二区三区| 妺妺窝人体色www九色| 少妇兽交PWWW综合网| 亚洲成A人片在线观看天堂| 中文字幕无码一区二区免费| 夫妇联欢会回不去的夜晚9集| 护士人妻HD中文字幕| 嫩草院一区二区乱码| 国产精品JIZZ视频| 久久综合亚洲鲁鲁九月天| 欧美日韩一区二区在线视频精品 | 成年AV免费网址大全超清| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 亚洲中文字幕久久精品无码A| 2021精品亚洲中文字幕| 国产成人无码AⅤ片在线观看导航 国产成人无码AⅤ片在线观看 | 中文字幕人妻无码专区APP| 亚洲色帝国综合婷婷久久| 精品少妇人妻av免费久久洗澡| 久久综合给久久狠狠97色| 日产无人区一线二线三线新版| 校花内裤被涂满了强烈春药| 。国产精品麻豆成人AV网| 国产黄 色 网 站 成 人免费| 巨人精品福利官方导航| 色综合天天综合狠狠爱| 亚洲夂夂婷婷色拍WW47| 丰满人爽人妻AXXXXHD| 久久香蕉国产线看观看怡红院妓院| 色婷婷AV一区二区三区在线观看| 亚洲香蕉成人AAAV在线网站| 丰满老师引诱我进她身体| 久久中文字幕无码专区| 玩弄chinese丰满人妻| 中文字幕亚洲综合久久2020| 国产偷国产偷精品高清尤物| 欧美性爱亚洲色图| 亚洲欧美一区二区成人片| 成人免费无码H在线观看不卡 | 大乳BOOBS巨大吃奶| JIZZJIZZ无码中国在线观| 国产又爽又黄又刺激的视频| 欧洲女人牲交视频免费| 亚洲人成伊人成综合网久久久 | メスのちトラレ_在线| 精品亚洲卡一卡2卡三卡乱码| 三上悠亚SSNL-618无码播| 中文字幕V亚洲日本在线| 国产在线清纯极品美女援交| 日本VS亚洲VS韩国一区三区| 又色又爽又黄又无遮挡网站| 国产性生交XXXXX免费| 日产幕无线码三区在线| 中文字幕亚洲综合久久2020| 极品VPSWINDOWS少妇| 上司人妻互换HD无码| AV香港经典A毛片免费观看| 九月九电影免费观看| 无码人妻精品一区二区蜜桃温柔乡| CHINESE玩弄老年熟女| 久久天天躁夜夜躁狠狠| 蜜臀av一区二区三区人妻| 亚洲AV无码国产精品色午友情链| 豆国产97在线 | 亚洲| 欧美裸体XXXX| 在线观看高H无码黄动漫| 黑人大群体交免费视频| 乌克兰少妇VIDEOS高潮| 波多野结衣AV在线| 农村妇女野战BBXXX农村妇女| 亚洲欧洲日产国码无码APP| 国产伦精品免编号公布| 色老99久久精品偷偷鲁| 八戒.八戒电影免费观看| 奶头从情趣内衣下露了出来AV| 亚洲香蕉一本大道在线| 果冻传媒免费观看4399| 同性男男黄G片免费网站| 产后漂亮奶水人妻| 欧洲洲一区二区精华液| 30分钟无遮挡机机对机机| 看黄A大片日本真人视频直播| 亚洲人成未满十八禁网站| 国产又色又爽又刺激在线观看| 天天爱天天做天天做天天吃中文| 爆裂点国语在线观看完整普通话| 欧美白人最猛性XXXXX69交| 中文中文字幕成人无码AⅤ| 巨胸爆乳美女露双奶头挤奶| 亚洲午夜成人精品无码色欲| 精品久久人人爽天天玩人人妻| 亚洲AV成人无码久久精品| 国产裸体裸美女无遮挡网站| 无码不卡AV东京热毛片| 国产AV无码专区亚洲AV软件| 少妇精品揄拍高潮少妇| 动漫成人无码精品一区二区三区| 日本少妇自慰高清喷浆| 边吃奶边扎下面动态| 日本日本熟妇中文在线视频| A级毛片无码久久精品免费| 男女啪啪无遮挡免费网站| AAA级久久久精品无码片| 美女内射毛片在线看免费人动物| 亚洲日韩丝袜熟女变态夜夜爽| 精品国产一区二区三区久久影院| 麻花豆传媒剧国产MV| 中文成人无码精品久久久不卡| 麻豆CHINESE男男GAYF| 中国老太太BBVBBⅤ| 内射白嫩少妇超碰| JAPANESEⅩⅩⅩHD护士| 欧美性猛交一区二区| 宝贝对着镜子CAO好不好| 日韩欧美人妻系列中文字幕一区二区三区 | 我的妺妺h伦浴室无码视频| 国产乱人伦真实精品视频| 性色AV浪潮AV色欲AV| 狠狠噜天天噜日日噜视频麻豆| 亚洲人成电影网站色WWW| 浪货趴办公桌~H揉秘书电影| 最新中文AV岛国无码免费播放| 欧美日韩国产综合草草| 成人性无码专区免费视频| 精品人妻一区二区三区免费看| 乳奴调教榨乳器拘束机器| 吃奶摸下激烈床震视频试看| 天天拍夜夜添久久精品| 国产真实乱XXXⅩ视频| 亚洲精品高清国产一线久久| 久久无码国产专区精品| 97超级碰碰碰久久久久| 国色天香果冻传媒国卡1区| 亚洲精品久久久久无码AV片软件 | 国产午夜精品一区二区三区极品| 亚洲大尺度无码无码专区| 久久婷婷五月综合97色直播| ALEXANDERWANG妈妈| 色欲AV蜜臀AV在线观看麻豆| 国产麻豆天美果冻无码视频 | 波多野结衣AV一区二区全免费观看 | 亚洲精品无码专区| 久碰人澡人澡人澡人澡人视频 | 一边摸一边抽搐一进一出视频| 女人脱精光让人桶爽了| 丁香五月天天综合亚洲| 午夜三级A三级三点自慰| 久久国产乱子伦精品免费女人| 18亚洲AV无码成人国产| 上面一个摸下面一个手念什么| 国产又色又爽又刺激视频| 在线观看4480私人影视| 日韩成人无码一区二区三区| 国精产品一二二区视早餐有限| 制服 丝袜 人妻 专区一本| 日韩精品无码熟人妻视频| 国产综合久久久久久鬼色| 中国老太婆XXXXX| 少妇又爽又刺激视频| 久久er99热精品一区二区| JULIA无码中文字幕一区| 午夜无码伦费影视在线观看| 老妇FREE性VIDEOSXX| 嗯好爽快点插我视频在线播放| 亚洲成成熟女人专区| 欧美丰满美乳XXⅩ高潮| 国产精品久久久久乳精品爆| 野花高清视频免费观看完整版中文 | 成人区精品人妻人妻AV| 亚洲精品第一国产综合亚AV| 人妻尝试又大又粗久久| 护士趴下光屁股翘臀被打的作文| BGMBGMBGM毛多多|