2016-04-23 4 views
0

Das ist wahrscheinlich sehr einfach, aber ich habe Probleme damit. Dies ist Code, den ich für den Server verwende. Ich habe nach diesem gesucht, aber ich fand nur verschiedene Arten von Sockets zu dem, den ich benutze.Wie verbinde ich einen Client mit einem Server mit Sockets, mit IP-Adresse in Python?

server = socket.socket() 
server.bind(("localhost", 6969)) 
server.listen(1) 
socket_client, datos_client = server.accept() 

print ("Wainting message...") 
data = socket_client.recv(1000) 
print ("Message:", data) 

send1 = bytes("Bye","utf-8") 
socket_client.send(send1) 

print ("Closing...") 

socket_client.close() 
server.close() 

Und dies ist der Code für die Kunden:

import socket 

def main(): 

    my_socket_client = socket.socket() 
    my_socket_client.connect(("localhost", 6969)) 

    bufsize = 1000 

    print("Send message") 
    message=input() 
    data2 = bytes(mensaje,"utf-8") 
    #enviar los datos 
    my_socket_client.send(data2) 

    data_received= my_socket_client.recv(bufsize) 

    print (data_received) 
+1

Sie verwenden ** Nachricht ** und ** mensaje **? 'data2' wird als nichts gesendet –

+0

Sie müssen uns das Problem mitteilen – Natecat

Antwort

0

Sie haben einen Tippfehler.

bearbeiten diese Linie in Client von

data2 = bytes(mensaje,"utf-8") 

zu

data2 = bytes(message,"utf-8") 
1

Ich bin nicht sicher, was dein Problem ist, da Sie nicht eine Frage stellen hat, so werde ich Ihnen zeigen, nur einen Client + basic command server, den ich auf die gleiche Weise wie du gebaut hast, hast du gesagt: "Ich habe nur verschiedene Arten von Sockets gefunden, die ich benutze." Ich hoffe, das ist, was Sie suchen

Hier ist ein Beispiel für eine einfache Befehlsserver: Wenn Sie den Server-Code ausführen und dann den Client ausführen, können Sie den Client eingeben und an den Server senden . Wenn Sie TIME eingeben, erhalten Sie vom Server ein Respons, das eine Zeichenfolge enthält, die das Datum von heute hat, und die anderen Befehle funktionieren auf die gleiche Weise. Wenn Sie Ende geben wird es die Verbindung schließen und wird vom Server die Zeichenfolge an den Client senden Schließen

Server:

import socket 
import random 
from datetime import date 


server_socket = socket.socket()       # new socket object 
server_socket.bind(('0.0.0.0', 8820))      # empty bind (will connect to a real ip later) 

server_socket.listen(1)         # see if any client is trying to connect 

(client_socket, client_address) = server_socket.accept() # accept the connection 
while True: # main server loop 
    client_cmd = client_socket.recv(1024)     # recive user input from client 
    # check waht command was entered 
    if client_cmd == "TIME": 
     client_socket.send(str(date.today()))    # send the date 
    elif client_cmd == "NAME": 
     client_socket.send("best server ever")   # send this text 
    elif client_cmd == "RAND": 
     client_socket.send(str(random.randrange(1,11,1))) # send this randomly generated number 
    elif client_cmd == "EXIT": 
     client_socket.send("closing") 
     client_socket.close()        # close the connection with the client 
     server_socket.close()        # close the server 
     break 
    else : 
     client_socket.send("there was an error in the commend sent") 

client_socket.close()          # just in case try to close again 
server_socket.close()          # just in case try to close again 

Client:

import socket 

client_socket = socket.socket()     # new socket object 
client_socket.connect(('127.0.0.1', 8820))   # connect to the server on port 8820, the ip '127.0.0.1' is special because it will always refer to your own computer 

while True: 
    try: 
     print "please enter a commend" 
     print "TIME - request the current time" 
     print "NAME - request the name of the server" 
     print "RAND - request a random number" 
     print "EXIT - request to disconnect the sockets" 
     cmd = raw_input("please enter your name") # user input 

     client_socket.send(cmd)     # send the string to the server 

     data = client_socket.recv(1024)   # recive server output 
     print "the server sent: " + data   # print that data from the server 
     print 
     if data == "closing": 
      break 
    except: 
     print "closing server" 
     break 

client_socket.close()        # close the connection with the server 
0

Ich habe versucht, den Code und machte ein paar Änderungen:

Server-Seite:

import socket 

server = socket.socket() 
server.bind(("localhost", 6969))  
server.listen(1) 
socket_client, datos_client = server.accept() 
print ("Waiting message...") 
data = socket_client.recv(1000) 
print ("Message:", data) 
# Same change made as with client side 
send1 = bytes("Bye") #,"utf-8") 
socket_client.send(send1) 
print ("Closing...")  
socket_client.close() 
server.close() 

Client-Seite:

import socket 

my_socket_client = socket.socket() 
my_socket_client.connect(("localhost", 6969)) 
bufsize = 1000 
print("Send message") 
# I changed it to raw_input(); input() does not for string input with python 2.7 
message=raw_input() 
# Are you trying to encode the message? To make it simple, skip it 
data2 = bytes(message) # ,"utf-8") 
#enviar los datos 
my_socket_client.send(data2) 
data_received= my_socket_client.recv(bufsize) 
print (data_received) 

Beispiel für die Ausgabe von Server-Seite:

Waiting message... 
('Message:', 'message from client') 
Closing... 

Beispiel für die Ausgabe von Client-Seite:

Send message 
message from client 
Bye