python 套接字_python – 正确关闭套接字

本文档探讨了在Python中使用套接字进行服务器/客户端通信时遇到的问题,即如何正确关闭套接字。服务器代码示例显示了在接收到特定消息时关闭连接的过程,而客户端代码则展示了发送消息并关闭套接字的基本操作。然而,出现了一个错误,指出'Address already in use',表明端口被占用。解决方案可能是确保在重新启动服务器之前释放已关闭的端口。
摘要由CSDN通过智能技术生成

我正在尝试使用套接字建立服务器/客户端连接.但他们不能正常关闭,我无法理解为什么.

更新1

我已经纠正了我的愚蠢的错误,而不是实际上在问题中调用s.close函数.

但结果证明这不是我的问题.

更新结束

这是我的服务器代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import socket

import sys

if __name__ == '__main__':

# Server connection

s = socket.socket() # Create a socket object

host = socket.gethostname() # Get local machine name

port = 12345 # Reserve a port for your service.

print 'Server started!'

print 'Waiting for clients...'

s.bind((host, port)) # Bind to the port

s.listen(5) # Now wait for client connection.

c, addr = s.accept() # Establish connection with client.

print 'Got connection from', addr

msg = c.recv(1024)

print addr, ' >> ', msg

if msg == 'close':

print 'Closing down'

c.send('SENT: Closing down')

c.shutdown(socket.SHUT_RDWR)

c.close()

这是我的客户端代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import socket

if __name__ == '__main__':

# Server

s = socket.socket() # Create a socket object

host = socket.gethostname() # Get local machine name

port = 12345 # Reserve a port for your service.

print 'Connecting to ', host, port

s.connect((host, port))

msg = raw_input('CLIENT >> ')

s.send(msg)

msg = s.recv(1024)

print 'SERVER >> ', msg

s.close() # Close the socket when done

这是它产生的错误信息:

In [13]: %run cjboxd.py

Server started!

Waiting for clients...

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

error Traceback (most recent call last)

/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)

173 else:

174 filename = fname

--> 175 __builtin__.execfile(filename, *where)

/home/nine/slask/cjboxd.py in ()

19 print 'Waiting for clients...'

20

---> 21 s.bind((host, port)) # Bind to the port

22 s.listen(5) # Now wait for client connection.

23 c, addr = s.accept() # Establish connection with client.

/usr/lib/python2.7/socket.pyc in meth(name, self, *args)

222

223 def meth(name,self,*args):

--> 224 return getattr(self._sock,name)(*args)

225

226 for _m in _socketmethods:

error: [Errno 98] Address already in use

它将在一分钟后发挥作用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值