it-swarm.com.de

Basic Python Client-Socket-Beispiel

Ich habe versucht, mich mit der Funktionsweise von Sockets auseinanderzusetzen, und ich habe versucht, einen Beispielcode herauszusuchen, den ich unter diese Seite für ein sehr einfaches Client-Socket-Programm gefunden habe. Da dies grundlegender Beispielcode ist, habe ich angenommen, dass er keine Fehler enthält. Wenn ich jedoch versuche, ihn zu kompilieren, wird die folgende Fehlermeldung angezeigt.

Datei "client.py", Zeile 4, in client_socket.connect (('localhost', 5000)) Datei "", Zeile 1, in connect socket.error: [Errno 111] Verbindung abgelehnt

Ich habe so ziemlich jeden Teil dieses Fehlers gegoogelt, und Leuten, die ähnliche Probleme hatten, scheint geholfen worden zu sein, indem sie die Portnummer geändert haben, 'connect' anstelle von 'bind' verwendet haben, und ein paar andere Dinge, aber keine von ihnen sie galten für meine Situation. Jede Hilfe wird sehr geschätzt, da ich sehr neu in der Netzwerkprogrammierung und ziemlich neu in Python bin.

Übrigens, hier ist der Code für den Fall, dass der Link aus irgendeinem Grund nicht funktioniert.

#client example
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 5000))
while 1:
    data = client_socket.recv(512)
    if ( data == 'q' or data == 'Q'):
        client_socket.close()
        break;
    else:
        print "RECIEVED:" , data
        data = raw_input ( "SEND( TYPE q or Q to Quit):" )
        if (data <> 'Q' and data <> 'q'):
            client_socket.send(data)
        else:
            client_socket.send(data)
            client_socket.close()
            break;
61
dukbur

Es wird versucht, eine Verbindung zu dem Computer herzustellen, auf dem es über Port 5000 ausgeführt wird, aber die Verbindung wird abgelehnt. Sind Sie sicher, dass ein Server ausgeführt wird?

Wenn nicht, können Sie netcat zum Testen verwenden:

nc -l -k -p 5000

Bei einigen Implementierungen müssen Sie möglicherweise das Flag -p Weglassen.

21
icktoofay

Hier ist das einfachste python socket Beispiel.

Serverseite:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print buf
        break

Client-Seite:

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 8089))
clientsocket.send('hello')
  • Führen Sie zuerst die Datei SocketServer.py aus und stellen Sie sicher, dass der Server bereit ist, etw zu empfangen
  • Dann sendet der Client Informationen an den Server.
  • Nachdem der Server etw empfangen hat, wird er beendet
123
David

Hier ist ein ziemlich einfaches Socket-Programm. Das ist so einfach wie es nur geht.

für das Client-Programm (CPU 1)

import socket

s = socket.socket()
Host = '111.111.0.11' # needs to be in quote
port = 1247
s.connect((Host, port))
print s.recv(1024)
inpt = raw_input('type anything and click enter... ')
s.send(inpt)
print "the message has been sent"

Sie müssen die 111.111.0.11 in Zeile 4 durch die IP-Nummer in den Netzwerkeinstellungen des zweiten Computers ersetzen.

Für das Serverprogramm (CPU 2)

import socket

s = socket.socket()
Host = socket.gethostname()
port = 1247
s.bind((Host,port))
s.listen(5)
while True:
    c, addr = s.accept()
    print("Connection accepted from " + repr(addr[1]))

    c.send("Server approved connection\n")
    print repr(addr[1]) + ": " + c.recv(1026)
    c.close()

Führen Sie das Serverprogramm und dann das Clientprogramm aus.

23
Pyboss

Ihr Client versucht anscheinend, eine Verbindung zu einem nicht vorhandenen Server herzustellen. Führen Sie in einem Shell-Fenster Folgendes aus:

$ nc -l 5000

bevor Sie Ihren Python - Code ausführen. Er fungiert als Server, der auf Port 5000 wartet, damit Sie eine Verbindung herstellen können. Dann können Sie mit der Eingabe in Ihr Python - Fenster spielen und zu sehen, wie es im anderen Terminal erscheint und umgekehrt.

4
Kirk Strauser

Sie könnten die Kompilierung durch die Ausführung verwirren. Python hat keinen Kompilierungsschritt! :) Sobald Sie python myprogram.py Das Programm wird ausgeführt und versucht in Ihrem Fall, eine Verbindung zu einem offenen Port 5000 herzustellen. Dies führt zu einer Fehlermeldung, wenn dort kein Serverprogramm empfangsbereit ist. Es hört sich so an, als wären Sie mit Zweistufensprachen vertraut, die kompiliert werden müssen, um eine ausführbare Datei zu erstellen. Daher verwechseln Sie Pythons Laufzeit-Compiler damit, dass "Ich kann niemanden finden, der auf Port 5000 lauscht!" Mit einem Fehler beim Kompilieren. Tatsächlich ist Ihr Python Code in Ordnung; Sie müssen nur einen Listener aufrufen, bevor Sie ihn ausführen!

3
Brandon Rhodes