僅用學(xué)習(xí)參考
tcp客戶端
什么是客戶端呢扎即?
肥仔來胖子老板店里買煙,肥仔就是客戶端况凉,胖子老板就是服務(wù)端谚鄙。
client (肥仔白) -- "來包利群啦" --> server(胖子老板)
client (肥仔白) <-- "給你啦" -- server(胖子老板)
作為客戶端是主動訪問服務(wù)端的,就跟肥仔白主動去胖子老板店鋪買煙刁绒、買檳榔一樣闷营。
作為服務(wù)端是監(jiān)聽等待客戶端來訪問的,就跟胖子老板打著斗地主的游戲膛锭,等人來買東西一樣粮坞。
tcp客戶端構(gòu)建流程 - 胖子老板來包煙
編寫tcp的客戶端代碼,使用網(wǎng)絡(luò)助手NetAssist
作為服務(wù)端初狰,演示tcp交互過程莫杈。
客服端代碼:
[root@server01 tcp]# vim client.py
#coding=utf-8
from socket import *
# 創(chuàng)建socket
tcp_client_socket = socket(AF_INET, SOCK_STREAM)
# 服務(wù)器的地址
# '192.168.1.2'表示目的ip地址
# 8080表示目的端口
dest_addr = ('192.168.1.2', 8080) # 注意 是元組,ip是字符串奢入,端口是數(shù)字
# 鏈接服務(wù)器筝闹,進(jìn)行tcp三次握手
tcp_client_socket.connect(dest_addr)
# 從鍵盤獲取數(shù)據(jù)
send_data = input("請輸入要發(fā)送的數(shù)據(jù):")
# 發(fā)送數(shù)據(jù)到指定的服務(wù)端
tcp_client_socket.send(send_data.encode("utf-8"))
# 接收對方發(fā)送過來的數(shù)據(jù),最大接收1024個字節(jié)
recvData = tcp_client_socket.recv(1024)
print('接收到的數(shù)據(jù)為:',recvData.decode('utf-8'))
# 關(guān)閉套接字
tcp_client_socket.close()
執(zhí)行如下:
半雙工通訊機(jī)制
那么下面來改進(jìn)一下腥光,設(shè)置可以循環(huán)發(fā)送數(shù)據(jù)关顷。
tcp客戶端 - 胖子老板,來包煙(循環(huán)版本)
循環(huán)版本
客戶端代碼:
只要將發(fā)送數(shù)據(jù)的部分設(shè)置循環(huán)即可武福,輸入stop议双,則退出循環(huán)。
[root@server01 tcp]# vim client.py
#coding=utf-8
from socket import *
# 創(chuàng)建socket
tcp_client_socket = socket(AF_INET, SOCK_STREAM)
# 服務(wù)器的地址
# '192.168.1.2'表示目的ip地址
# 8080表示目的端口
dest_addr = ('192.168.1.2', 8080) # 注意 是元組捉片,ip是字符串平痰,端口是數(shù)字
# 鏈接服務(wù)器,進(jìn)行tcp三次握手
tcp_client_socket.connect(dest_addr)
while True:
# 從鍵盤獲取數(shù)據(jù)
send_data = input("請輸入要發(fā)送的數(shù)據(jù):")
# 判斷輸入stop伍纫,則退出客戶端
if send_data == "stop":
break
# 發(fā)送數(shù)據(jù)到指定的服務(wù)端
tcp_client_socket.send(send_data.encode("utf-8"))
# 接收對方發(fā)送過來的數(shù)據(jù)宗雇,最大接收1024個字節(jié)
recvData = tcp_client_socket.recv(1024)
print('接收到的數(shù)據(jù)為:',recvData.decode('utf-8'))
# 關(guān)閉套接字
tcp_client_socket.close()
執(zhí)行如下:
關(guān)注微信公眾號,回復(fù)【資料】莹规、Python赔蒲、PHP、JAVA、web舞虱,則可獲得Python欢际、PHP、JAVA砾嫉、前端等視頻資料幼苛。