閱讀884 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Win10 Bash socket 創建失敗

本人的Bash版本
No LSB modules are available.
Distributor ID:       Ubuntu
Description:          Ubuntu 14.04.5 LTS
Release:                14.04
Codename:           trusty

當本人在bash中有python簡單的創建一個tcp socket server,listen,等待accept。同時本人用python寫了一個簡單的client,connect這個server,但一直是

ConnectionRefusedError: [WinError 10061] 由於目標計算機積極拒絕,無法連接。

當我在bash中啟動兩個server時,bash會顯示socket.error: [Errno 98] Address already in use,說明socket創建成功了的。

但為什麼連不上呢?

在CMD中netstat -aon也找不到server的端口。

第一想法是防火牆,本人把防火牆關了也是不行的。

以下server和client的代碼

Server

-------------------------------------------------------------------

#-*- coding: utf-8 -*-
from socket import *
from time import ctime

HOST='127.0.0.1'
PORT=12345
BUFSIZ=1024
ADDR=(HOST, PORT)
sock=socket(AF_INET, SOCK_STREAM)

print(sock.bind(ADDR))

print(sock.listen(5))
print(sock)
while True:
    print('waiting for connection')
    tcpClientSock, addr=sock.accept()
    print('connect from ', addr)
    while True:
        try:
            data=tcpClientSock.recv(BUFSIZ)
        except:
            print(e)
            tcpClientSock.close()
            break
        if not data:
            break
        s='Hi,you send me :[%s] %s' %(ctime(), data.decode('utf8'))
        tcpClientSock.send(s.encode('utf8'))
        print([ctime()], ':', data.decode('utf8'))
tcpClientSock.close()
sock.close()

-------------------------------------------------------------------

Client

-------------------------------------------------------------------

#-*- coding: utf-8 -*-
from socket import *

class TcpClient:
    HOST='127.0.0.1'
    PORT=12345
    BUFSIZ=1024
    ADDR=(HOST, PORT)
    def __init__(self):
        self.client=socket(AF_INET, SOCK_STREAM)
        self.client.connect(self.ADDR)

        while True:
            data=input('>')
            if not data:
                break
            self.client.send(data.encode('utf8'))
            data=self.client.recv(self.BUFSIZ)
            if not data:
                break
            print(data.decode('utf8'))
            
if __name__ == '__main__':
    client=TcpClient()

-------------------------------------------------------------------



最後更新:2017-06-07 12:41:06

  上一篇:go win10係統UAC功能無法打開
  下一篇:go 為什麼微軟中國商城沒有賣win10專業版?