簡體   English   中英

僅當client.py運行時,Python Socket errno 10054

[英]Python Socket errno 10054 only when client.py runs

關於這個問題還有其他一些帖子,但沒有一個對我有幫助。 我正在嘗試在python中構建一個簡單的服務器 - 客戶端關系

server.py

#!/usr/bin/python
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("127.0.0.1",8889))
s.listen(1)   
try:

    while True:
        client, add = s.accept()
        data = client.recv(1024)
        if not data:
            print 'No data'
        print data

finally:
    s.close()

client.py

#!/usr/bin/python
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1",8889))


try:
    while True:
        message = 'Foo'
        s.send(message)
        ans = s.recv(1024)
        print ans
finally:
    s.close()

我首先運行服務器,但是當我嘗試運行客戶端時,我得到這個Errno 10054 --> An existing connection was forcibly closed by the remote host在請求帶有ip和相關端口的瀏覽器時,我收到一些數據。 我對網絡很陌生,所以請解釋我的代碼中可能出現的明顯錯誤。

編輯*主要問題是,客戶端在某種程度上是錯誤的,因為它在recv上也返回一個空字符串

先感謝您

我在猜測:

服務器接受一個套接字然后執行

    client, add = s.accept()
    data = client.recv(1024)
    ...
    client, add = s.accept()

客戶端同時執行此操作:

s.send(message)
ans = s.recv(1024) # blocks until timeout

如果現在其他客戶端連接到服務器,則替換client ,收集並關閉套接字垃圾。 然后, s.recv(1024)將告知連接已重置。

看看import select或扭曲(谷歌周圍)一次處理多個連接。

Main issue is, that the client is somehow wrong, because it returns also an empty string on recv

客戶端沒有從服務器接收任何內容,因為服務器沒有發送任何內容。

在服務器端,在print data ,添加client.send(data)會將字符串發送回客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM