本人的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()
-------------------------------------------------------------------