TCP客戶端程序:
import socket
def main():
# 創建tcp
tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 鏈接套接字
# sever_ip=input("輸入對方ip:")
# sever_port=int(input("輸入對方端口:"))
# sever_addr=(sever_ip,sever_port)
tcp_client_socket.connect(sever_addr)
while True:
# 數據發送
tcp_data=input("輸入發送的內容:")
tcp_client_socket.send(tcp_data.encode("utf-8"))
# 服務器返回數據
rev_data=tcp_client_socket.recv(1024)
print("服務器返回的消息:",rev_data)
# 關閉套接字
tcp_client_socket.close()
if __name__ == '__main__':
main()
TCP服務器程序:
當TCP客戶端實現與服務器連接時,服務器給客戶端創建一個新的服務套接字,類似10010客服,當你打通10010服務時,系統會隨機給你分配一個客服與你交流。
import socket
def main():
# 創建套接字
tcp_sever_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 綁定本地信息
tcp_sever_socket.bind(('',7890))
# 讓默認是套接字主動變爲被動(listen)三次握手在這裏完成
tcp_sever_socket.listen(128)
while True:
# 等待客戶端的鏈接
print("等待新的客戶端到來")
new_client_socket,client_addr=tcp_sever_socket.accept() # 服務套接字
print("客戶端已經到來:%s"%str(client_addr))
while True:
# 接受客戶端發過來的請求
recv_data=new_client_socket.recv(1024)
print("客戶端發來的請求:%s"%recv_data)
# 如果recv解阻塞,有兩種方式
# 1.客戶端發來數據
# 2.客戶端close導致了recv解阻塞
if recv_data:
#回送一部分數據給客戶端
new_client_socket.send('hahhah'.encode("utf-8"))
else:
break
# 關閉套接字
new_client_socket.close()
print("已經爲這個客戶端服務完畢")
tcp_sever_socket.close()
if __name__ == '__main__':
main()