我試圖越過較小的圖像蟒蛇插座的圖像,它工作正常,但對於更大的圖像提示錯誤爲錯誤試圖通過套接字傳遞(大)圖像在python
socket.error:[錯誤10040 ]在數據報套接字上發送的消息大於 內部消息緩衝器或某種其它網絡的限制,或用於接收數據報的緩衝液比數據報
較小我使用
socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
感謝您的任何線索。
我嘗試使用SOCK_STREAM,它不工作..它只是說我開始...並掛出。沒有輸出。它沒有出來發送功能
import thread
import socket
import ImageGrab
class p2p:
def __init__(self):
socket.setdefaulttimeout(50)
#send port
self.send_port = 3000
#receive port
self.recv_port=2000
#OUR IP HERE
self.peerid = '127.0.0.1:'
#DESTINATION
self.recv_peers = '127.0.0.1'
#declaring sender socket
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.bind(('127.0.0.1', self.send_port))
self.socket.settimeout(50)
#receiver socket
self.serverSocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.serverSocket.bind(('127.0.0.1', self.recv_port))
self.serverSocket.settimeout(50)
#starting thread for reception
thread.start_new_thread(self.receiveData,())
#grabbing screenshot
image = ImageGrab.grab()
image.save("c:\\test.jpg")
f = open("c:\\ test.jpg", "rb")
data = f.read()
#sending
self.sendData(data)
print 'sent...'
f.close()
while 1: pass
def receiveData(self):
f = open("c:\\received.png","wb")
while 1:
data,address = self.serverSocket.recvfrom(1024)
if not data: break
f.write(data)
try:
f.close()
except:
print 'could not save'
print "received"
def sendData(self,data):
self.socket.sendto(data, (self.recv_peers,self.recv_port))
if __name__=='__main__':
print 'Started......'
p2p()
我嘗試使用SOCK_STREAM,但它不會發送函數。我用實際程序更新了我的問題。我承認不知道如何使用它。是否有任何其他更改需要使用SOCK_STREAM,謝謝 – Xinus 2009-09-19 06:06:46
它的工作現在我嘗試了程序在http://docs.python.org/library/socket.html – Xinus 2009-09-19 08:21:11