Tôi đang viết một chương trình trò chuyện dựa trên socket đơn giản cho phép máy chủ gửi và nhận tin nhắn cho khách hàng. Khách hàng có thể gửi tin nhắn đến máy chủ nhưng khi tôi thử gửi một tin nhắn từ máy chủ, nó đổ vỡ nói rằng 'tập tin' đối tượng có thuộc tính 'recv'.chương trình trò chuyện python đơn giản dựa trên ổ cắm
Server.py
import socket
import os
import select
import sys
def prompt():
sys.stdout.write('<You> ')
sys.stdout.flush()
try:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except:
print 'Failed to create socket'
sys.exit()
PORT = 9050
HOST = '127.0.0.1'
RECV_BUFFER = 4096
server_socket.bind((HOST, PORT))
server_socket.listen(10)
input = [server_socket, sys.stdin]
print 'Chat Program'
prompt()
while 1:
inputready, outputready, exceptready = select.select(input,[],[])
for sock in inputready:
if sock == server_socket:
client, address = server_socket.accept()
input.append(client)
#data = sock.recv(RECV_BUFFER)
#if data:
#sys.stdout.write(data)
else:
data = sock.recv(RECV_BUFFER)
if data:
sys.stdout.write(data)
else:
msg = sys.stdin.readline()
server_socket.send('\r<Server>: ' + msg)
prompt()
server_socket.close()
Client.py
import socket
import os
import select
import sys
def prompt():
sys.stdout.write('<You> ')
sys.stdout.flush()
HOST = '127.0.0.1'
PORT = 9050
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
print 'Failed to create socket'
sys.exit()
s.connect((HOST, PORT))
print 'Connected to remote host. Start sending messages'
prompt()
while 1:
socket_list = [sys.stdin, s]
read_sockets, write_sockets, error_sockets = select.select(socket_list, [], [])
for sock in read_sockets:
if sock == s:
data = sock.recv(4096)
if not data:
print '\nDisconnected from chat server'
sys.exit()
else:
sys.stdout.write(data)
prompt()
else:
msg = sys.stdin.readline()
s.send('\r<Client>: ' + msg)
prompt()
Đây không phải là ngang ngang nhau bởi vì nó có một máy chủ – ioanD