Я не могу отправить полный текст, как только я ввожу символ, я получаю ответ, и соединение закрывается.(Я новичок в сокетах Python)

import socket
import sys

host=''  # Symbolic name meaning all available interfaces
port=7777  #random port

#creating socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "socket created"

#binding
try:
    sock.bind((host,port))
except socket.error,msg:
    print "Bind failed,Error no:"+str(msg[0])+"error:-"+str(msg[1])
    sys.exit()
print "Bind successful"

sock.listen(10)
print "Listening" # it means that if 10 connections are already waiting to be processed, then the 11th connection request shall be rejected.
conn, addr=sock.accept()#accept new connection
print "connected to "+str(addr[0])+":"+str(addr[1])

#receive from client
data=conn.recv(1024)
print "received-"+data
conn.sendall(data*2)

#terminate
conn.close()
sock.close()

Выше приведен код для получения данных от клиента и ответа за него. я использовал CMD с "Telnet Localhost 7777" для подключения. Затем я хотел отправить простое сообщение "Привет, мир", но я просто набрал "h", и я получил ответ, и соединение было разорвано.

вывод my_code.py

1 ответ

Это сработало для меня. Ваш socketClient работает правильно?

import socket
string='hello world'
print type(string)
HOST, PORT = 'localhost', 7777
# SOCK_STREAM == a TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#sock.setblocking(0)  # optional non-blocking
sock.connect((HOST, PORT))
sock.send(string)
reply = sock.recv(1024)  # limit reply to 16K
print(reply)
sock.close()
return reply
Другие вопросы по тегам