这是我的服务器端 - 需要是TCP,所以我需要接受并听取,我不能使用UDP。
import socket
import sys
from threading import Thread
class ThreadWorker(Thread):
def __init__(self, sock2):
Thread.__init__(self)
self._socket = sock2
self._run = True
def bubble(self, x):
length = len(x)
for i in range(0, length):
swapped = False
for element in range(0, length - i - 1):
if x[element] > x[element + 1]:
hold = x[element + 1]
x[element + 1] = x[element]
x[element] = hold
swapped = True
if not swapped:
break
def run(self):
while self._run:
data_num = self._socket.recv(1024)
number = data_num.split(" ")
sort_num = []
for num in number:
sort_num.append(num)
self.bubble(sort_num)
for num in sort_num:
print "Sorted numbers: ", num
sys.stdout.flush()
self._socket.close()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("127.0.0.1", 4242))
sock.listen(10)
while True:
canal, address = sock.accept()
print 'Connection from: ', address
data = canal.recv(1024)
print 'Received from the client: ', data, address
canal.send("Goodbye")
worker = ThreadWorker(canal)
worker.setDaemon(True)
worker.start()
canal.close()
在服务器中使用线程。 我试图让泡泡排序运行,但我收到很多错误,我不知道我的TCP连接是否正确 - 错误是在数据接收方,而不是alg。 在客户端,没有更多的连接:
message = raw_input("Insert message: ")
sock.connect(('localhost', 4242))
sock.send(message)
data = sock.recv(1024)
print "I received back from the server: ", data
sock.close()
我错过了什么或做错了什么? 如果我在我的变量上使用split或str我得到:AttributeError:' str'对象没有属性' str。 任何人都可以以任何方式帮助吗?
答案 0 :(得分:0)
看看你的排序:
客户端连接,发送数据,等待接收。
服务器接受连接,接收数据,发送再见。
客户端收到Goodbye并关闭套接字。
服务器同时创建Thread,启动它并关闭套接字。当线程运行时,两侧都有闭合插座。
要解决的问题:
sendall
来确保发送整个邮件。