2014-12-28 170 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)