2014-12-28 171 views
0

我有一箇中央服務器和連接到它的客戶端。客戶要求在線套接字連接到服務器答案(對於確切類型的套接字)。要的代碼通過套接字發送字符串並連接到該字符串

客戶

import socket 
print 'Dobrodosli! ' 
socketZaKonekciju = [] 
def Main(): 
host = '127.0.0.1' 
port = 5000 
c = socket.socket() 
c.connect((host, port)) 
while True: 
    k1 = c.recv(2048) 
    print "Server: " + str(k1) 
    prva = raw_input("-> ") 
    c.send(prva) 
    k2 = c.recv(2048) 
    print "Server: " + str(k2) 
    druga = raw_input("-> ") 
    c.send(druga) 
    k3 = c.recv(2048) 
    print "Server:" + str(k3) 
    treca = raw_input("->") 
    c.send(treca)   
    k4 = c.recv(2048) 
    print "Lista online klijenata sa vasom konverzijom \n" + str(k4) 
    peta = raw_input("Povezati se na prvog klijenta? \nDa/Ne ") 
    c.send(peta) 
    k5 = c.recv(2048) 
    print str(k5) + "\n" 
    k5 # now he shoul connect to k5 


    c.close() 


if __name__ == '__main__': 
Main()  

服務器

import socket 
host = '127.0.0.1' 
port = 5000 
brKonekcija = 5 
buffer = 2048 
listaKonv1 = [] 
listaKonv2 = [] 
listaKonv3 = [] 
listaKonv4 = [] 
def Main(): 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
print 'Socket napravljen' 
s.bind((host,port)) 
print 'Socket bindovan' 
s.listen(brKonekcija) 
print 'Maksimalan broj konekcija: ' + str(brKonekcija) + ' konekcija' 
s, addrTCP = s.accept() 
print "Nova konekcija" + str(addrTCP) 
print "Lista online soketa" + str(addrTCP) 
    client = s.getsockname() 
    print "Trenutni klijent" + str(client) 
    while True: 
    s.send("Dobrodosli na server! Za nastavak pritisnite Y") 
    k1 = s.recv(2048) 
    if k1 == 'Y': 
     s.send("Bravo! Pritisnuli ste "+ str(k1) + "\nKoju konverziju pruzate?") 
     k2 = int(s.recv(2048)) 
     if k2 == 1: 
      listaKonv1.append(client) 
     if k2 == 2: 
      listaKonv2.append(client) 
     if k2 == 3: 
      listaKonv3.append(client) 
     if k2 == 4: 
      listaKonv4.append(client) 
     s.send("Koju konverziju zelite?") 
     k3 = int(s.recv(2048)) 
     if k3 == 1: 
      s.send(str(listaKonv1[0]).strip("()")) 
     if k3 == 2: 
      s.send(str(listaKonv2[0]).strip("()")) 
     if k3 == 3: 
      s.send(str(listaKonv3[0]).strip("()")) 
     if k3 == 4: 
      s.send(str(listaKonv4[0]).strip("()")) 
     k4 = s.recv(2048) 
     if k4 == "Da": 
      s.send("\nSrecno!\n") 
     if k4 == "Ne": 
      s.send("\nPrekidam soket!\n") 
      s.close() 







     if __name__ == '__main__': 
     Main()  

更清晰 服務器側部,其中從服務器列表的第一發送針對確切類型客戶端要求。所以,當客戶端獲得這個套接字時,它必須連接到它,但該套接字是一個到客戶端的字符串。我怎樣才能使字符串套接字連接的tupple。

+0

歡迎來到Stack Overflow!理想情況下,您應該提供您編寫的代碼作爲解決問題的嘗試 - 該網站旨在幫助您解決問題或理解問題,而不是讓您開始。連接客戶端和服務器的代碼,或者您使用的軟件包也會有所幫助。 –

+1

已添加。另外,客戶端必須連接到自己做一些事情(數字轉換)。非常感謝! –

+0

連接字符串應該是什麼意思?你想讓客戶端連接到IP地址嗎? –

回答

0
k5 # now he shoul connect to k5 

這肯定是錯誤的,因爲​​包含Srecno!Prekidam soket!,不是哪一個可以連接。

我怎樣才能使字符串套接字連接tupple。

如果字符串str從套接字地址元,最簡單的方法的轉換起源將其轉換回一個元組是eval(str)