2014-10-10 144 views
0

我試圖創造一種可以發送和接收數據的蟒蛇插槽服務器,所以我在這裏使用的代碼在服務器上創建一個套接字:接收文件的python socket服務器

import socket 
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
serversocket.bind(('', 1208)) 
serversocket.listen(5) 
(client,(ip,port)) = serversocket.accept() 

然後我試圖創建一個通過轉到命令提示符,然後輸入

telnet www.filesendr.com 1208 

但是從我的機器樣品連接,控制檯簡單地回答「無法打開連接到主機,端口1208 ...連接失敗。」我回到我的代碼,但無法識別問題。任何幫助將不勝感激。

+0

你知道'telnet'是如何工作的嗎?首先了解並瞭解如何使用它。 – 2014-10-10 03:50:30

+0

試試這個'man telnet',瞭解它是如何工作的,然後編輯你的問題。 – 2014-10-10 03:51:21

+0

@GamesBrainiac我嘗試過'man telnet',但它沒有把它識別爲一個命令,當我使用它時我找不到任何東西。 – drfiz98 2014-10-10 04:50:08

回答

0

我認爲問題的一部分是,在你接受連接之後,你什麼都不做。一旦接受發生,你到達腳本的末尾,python退出並關閉所有打開的文件句柄(包括你剛剛打開的套接字)。如果你想能夠通過telnet與自己對話,試試這樣的事情:

import socket 
import select 
import sys 

port = 1208 
listener = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
listener.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 
listener.bind(('',port)) 
listener.listen(128) 
newSock, addr = listener.accept() 
while True: 
    r,w,e = select.select([newSock,sys.stdin],[],[]) 
    if newSock in r: 
     data = newSock.recv(4096) 
     sys.stdout.write(data) 
    if sys.stdin in r: 
     newSock.send(sys.stdin.readline())