摘要 import socket #網路編程模塊
⑵ python socket 做了一個傳文件的腳本 為什麼在IDLE里運行沒問題 但是雙擊直接打開就會抱錯
>>>如果你沒有在文件開頭# encoding: utf-8,idle裡面有設置默認編碼的
>>>如果是在windows下面,而你的編碼又是utf-8的話,那麼你雙擊運行,如果含有中文是會報錯的,因為windows(中文版本)的cmd的默認編碼是gbk的,這個當然會出錯了,所以解決辦法是將文件保存為gbk或者gb18030或者cp936,在文件開頭加上#_*_encoding:cp936_*_就可以了。
>>>如果是在linux下面的話,設置成utf-8的吧。
⑶ Python,socket如何實現通過Server將client1的數據傳給client2。
普通情況下是不行的。但是通過線程或者進程間的數據共享,還是可以的。
提供一個思路,使用多線程socketserver,針對每一個用戶創建一個服務線程,然後在線程之間通過消息隊列,共享數據。
參考:劉江的Python教程中關於多線程和多進程的章節
⑷ Python用socket傳輸文件,收到的文件大小不一樣,求解答,謝謝
1.電腦已經搭建python環境
2.深入到需要傳輸的文件目錄下,此處以分享 nemo-huiyuanfei 文件為例
3.在路徑欄輸入 cmd 按回車進入終端
4.輸入命令 python -m SimpleHTTPServer 8090 按回車 (埠號可以任意,不用必須為8090)
5.在區域網中任意瀏覽器輸入框輸入 文件所在主機 IP + Port 即可訪問此文件目錄並下載 ()
6.點擊需要下載的文件即可下載
7. 【注意】python3.X 的命令輸入為 python -m http.server 8090
⑸ python socket 網路編程 ,伺服器端發的文件大小跟客戶端接受打文件大小不一樣 這是什麼原因
很簡單,你說讓服務端發1024大小他就發1024大小嗎,不一定tcp協議他會把內容先丟緩存再緩存拿,假設你讓伺服器發1024大小他有時候會分好幾次發,你只要實時讀取客戶端接收文件大小就好了,和服務端發過來文件大小進行比較然後考慮後面要不要繼續接收
⑹ python使用socket發送數據,沒有響應。
因為我不知道你的 SMGP_CLIENT 和你的GETREQUSTPACKET 怎麼實現的 我貼一下 發送數據的代碼吧 有問題你吧詳細的代碼貼上我看看
import socket
mysocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
mysocket.connect(("192.168.5.30",80))
BUFFER_SIZE = 1024
buff="aaaaaaaaaaaa"
mysocket.send(buff)
print (mysocket.recv(BUFFER_SIZE))
mysocket.close()
因為是給 伺服器的80埠發數據 所以得到的返回值肯定是 無法找到頁面
⑺ 請教如何使用python的socket發送二進制數據
socket發送的本來就是按二進制發送,你是想把數據打包成str用socket發出去吧?
可以用struct來打包
import struct
data = struct.pack('i', 123)
然後用socket發送就行了,這里打包一個整數的例子,struct很強大可以網路一下具體用法。
⑻ python中,如何將一個指定的文件發送到對方主機的指定埠呢(用socket方式) 新手求指教!
#發送端
#-*-coding:utf-8-*-
importTkinter
importtkFileDialog
fromsocketimport*
importstruct
importos
defclient(filename):
Addr=('127.0.0.1',8000)
BUFSIZE=2048
Sendsocket=socket(AF_INET,SOCK_STREAM)
Sendsocket.connect(Addr)
FileHead=struct.pack('128s11i',filename,0,0,0,0,0,0,0,0,os.stat(filename).st_size,0,0)
Sendsocket.send(FileHead)
fp=open(filename,'rb')
while1:
FileData=fp.read(BUFSIZE)
ifnotFileData:
break
Sendsocket.send(FileData)
fp.close()
Sendsocket.close()
defFileOpen():
r=tkFileDialog.askopenfilename(title='PythonTkinter',
filetypes=[('Allfiles','*')])
filename=r.split('/')
client(filename[-1])
root=Tkinter.Tk()
button1=Tkinter.Button(root,text='FileOpen',height=8,width=14,bg='blue',
command=FileOpen)
button1.pack()
root.mainloop()#接收端
#-*-coding:utf-8-*-
fromsocketimport*
importos
importstruct
Addr=('127.0.0.1',8000)
BUFSIZE=1024
FileInfoSize=struct.calcsize('128s32sI8s')
SocketRecv=socket(AF_INET,SOCK_STREAM)
SocketRecv.bind(Addr)
SocketRecv.listen(5)
print"waitting........"
conn,addr=SocketRecv.accept()
print"sendfrom",addrFileHead=conn.recv(FileInfoSize)
filename,temp1,filesize,temp2=struct.unpack('128s32sI8s',FileHead)
printfilename,len(filename),type(filename)
printfilesize
filename='new_'+filename.strip('