Я не могу отправить полный текст, как только я ввожу символ, я получаю ответ, и соединение закрывается.(Я новичок в сокетах 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", и я получил ответ, и соединение было разорвано.
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