Discuss / Python / 有个小问题

有个小问题

Topic source

我用的是sublime text 3进行编译的,使用ctrl+b先运行服务器再运行客户端,提示错误:

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

我理解是自带控制台一次只能运行一个程序。于是我安装了sublimeREPL插件运行,运行几次都是正常的,但是再运行就会出错:

OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

用系统cmd运行也是这个错误,需要进程里面把python.exe关闭了才能重新运行。

【请问为什么会出现这个情况??代码里面都有关闭套接字啊?????】

我也是这个问题啊,有谁知道什么问题么?求解答

Traceback (most recent call last): File "C:\work\TCPserver.py", line 15, in <module> s.bind(('127.0.0.1',8888)) OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 [Finished in 0.2s]

这个问题好像是因为之前那个server程序还没关

python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054

这里有解答,先码上,明天再看 http://blog.csdn.net/onedreamer/article/details/6748510

python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054

我的这个问题是客户端的退出函数位置错了,你可以看下自己的源代码

服务器:

import socket,time,threading def tcplink(sock,addr): print('Accept new connection from %s:%s...'%addr) sock.send(b'Welcome!') while True: data=sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8')=='exit': break sock.send(('Hello,%s!'%data.decode('utf-8')).encode('utf-8')) sock.close() print('Connection from %s:%s closed'%addr) s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

监听端口

s.bind(('127.0.0.1',8888)) s.listen(5) print('Waiting for connection...') while True:

#接受一个新连接
sock,addr=s.accept()
#创建新线程来处理TCP连接
t=threading.Thread(target=tcplink,args=(sock,addr))
t.start()
#每个连接都创建新进

客户端: import socket

创建一个socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

建立连接

s.connect(('127.0.0.1',8888))

接收欢迎消息

print(s.recv(1024).decode('utf-8')) for data in [b'Michael',b'Tracy',b'Sarah']:

#发送数据
s.send(data)
print(s.recv(1024).decode('utf-8'))

s.send(b'exit')

关闭连接

s.close()


  • 1

Reply