TCPsocket怎么在Python中使用-創(chuàng)新互聯(lián)

TCP socket怎么在Python中使用?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都做網(wǎng)站、網(wǎng)站建設、外貿營銷網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元東海做網(wǎng)站,已為上家服務,為東海各地企業(yè)和個人服務,聯(lián)系電話:18982081108

一、 服務器server的寫法:

1. 創(chuàng)建 socket 套接字:

網(wǎng)絡編程接口 socket(family = AF_INET , type = SOCKET_STREM,proto = 0, fileno = None)   提供了多種socket family。AF_INET 是默認的family,需要綁定IP和端口。 127.0.0.1是一個特殊的IP地址,表示本機地址。如果綁定到這個地址,客戶端必須同時在本機運行才能連接,也就是說,外部的計算機無法連接進來。

不同的協(xié)議family使用的地址形式不同,通常來說我們使用的是AF_INET-----地址是以(IP,PORT)形式存。在type 類型,我們常用的有兩種 SOCKET_STREM ,流式套接字,表示基于連接的TCP套接字,SOCKET_DGRAM, 數(shù)據(jù)報套接字,基于無連接的(UDP)接口?!∪绻辉O定,默認就是 SOCKET_STREM 。

2. bind 綁定   

使用方法:socket.bind(address)  把套接字綁定在 address 上,address的形式 根據(jù) family 來設定。不管是client還是server,創(chuàng)建socket的時候都是通過一個本地的文件來進行的?! ?/p>

3. listen 監(jiān)聽    

使用方法:socket.listen([backlog])  使能 socket 接收連接請求,listen(self,backlog = None) ,backlog需要大于0,指定了可以緩存的連接請求的數(shù)量。

4. accept 接受請求連接

在等待一個即將來臨的連接,會返回一個代表連接的新的socket,還會返回一個地址(host和port),可以用兩個東西接收,前一個代表新的socket,后一個就是接收地址。

寫的方法:connet_socket,client_addr = srv.accept() connet_socket就是新的socket,然后connet_socket開始接下來的傳輸。connet_socket,client_addr,前者表示接收的新的socket,后者就是地址,具體看程序第10行。

5. 接收數(shù)據(jù)  

使用方法:socket.recv(bufsize[,flags])  從 socket 中接收數(shù)據(jù),返回的是 bytes ,是接收到的內容。bufsize指定了一次最多接收多少個數(shù)據(jù),如果沒有數(shù)據(jù)接收,程序會阻塞,一直到有數(shù)據(jù)或者遠程終端斷開連接.

6. 發(fā)送數(shù)據(jù)  

使用方法:socket.send(bytes[, flags])  你的socket必須和遠程的socket建立了聯(lián)系,返回值是發(fā)送的數(shù)量,可以判斷你的數(shù)據(jù)是否發(fā)送完畢,如果沒有,繼續(xù)send余下來的數(shù)據(jù)

import socket
hostname = '127.0.0.1' #設置主機名
port = 6666  #設置端口號 要確保這個端口號沒有被使用,可以在cmd里面查看
addr = (hostname,port)
srv = socket.socket() #創(chuàng)建一個socket
srv.bind(addr)
srv.listen(5)
print("waitting connect")
while True:
 connect_socket,client_addr = srv.accept()
 print(client_addr)
 recevent = connect_socket.recv(1024)
 print(str(recevent,encoding='gbk'))
 connect_socket.send.send(bytes("你好,數(shù)據(jù)傳輸完成,這里是gaby-yan--server",encoding='gbk'))
 connect_socket.close()

二、 客戶端client的寫法:

客戶端的寫法相對比較簡單,只有

1.創(chuàng)建socket  

2. 建立連接 connect  

3. 發(fā)送 send  

4. 接收recv  

這是由于他們的傳遞編程框架不同造成的,如圖。

TCP socket怎么在Python中使用

import socket
hostname = '127.0.0.1'
port = 7777
addr = (hostname,port)

clientsock = socket.socket() ## 創(chuàng)建一個socket
clientsock.connect(addr) # 建立連接

say = input("輸入你想傳送的消息:")
clientsock.send(bytes(say,encoding='gbk')) #發(fā)送消息
recvdata = clientsock.recv(1024)  #接收消息 recvdata 是bytes形式的
print(str(recvdata,encoding='gbk')) # 我們看不懂bytes,所以轉化為 str
clientsock.close()

注意:先運行server的代碼,再運行client的代碼。

關于TCP socket怎么在Python中使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

當前題目:TCPsocket怎么在Python中使用-創(chuàng)新互聯(lián)
路徑分享:http://muchs.cn/article30/cdsepo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、手機網(wǎng)站建設、商城網(wǎng)站虛擬主機、企業(yè)網(wǎng)站制作、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司