1、客户端连接
客户端连接有4个步骤:
(1)建立一个socket对象
Socket=socket.socket(family,type)
(2)使用socket的connect方法连接服务器
Socket.connect((host,port))
其中,host是服务器的IP地址,如果只是知道服务器的域名,可以通过host = socket.gethostbyname( hostname )获得。
port是服务器开启的端口号,通过port=socket.getservbyname(servicename[,protocolname])来查找服务信息,该函数将互联网服务名称和协议的名称翻译为端口号。protocolname为协议名称,如果有,应该是“TCP”或“UDP”,否则,任何协议都将匹配。
(3)客户端和服务器通过send和recv方法通信。
(4)客户端通过调用socket的close方法来关闭连接。
2、服务器连接
建立服务器连接有6个步骤:
(1)建立socket对象;
(2)将socket绑定到指定地址上,s.bind(("IP",port))
(3)侦听连接,socket.listen(backlog),backlog指定了最多连接数,至少为1,接到连接请求后,这些请求必须排队,如果队列已满,则拒绝请求。
(4)服务器套接字通过socket的accept方法等待客户请求一个连接:
connection,address=socket.accept()
调用accept方法时,socket会进入'waiting'(或阻塞)状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含 有俩个元素的元组,形如(connection,address)。第一个元素(connection)是新的socket对象,服务器通过它与客户通 信;第二个元素(address)是客户的internet地址。
(5)处理阶段,服务器和客户通过send和recv方法通信(传输数据)。服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字 符个数。服务器使用recv方法从客户接受信息。调用recv时,必须指定一个整数来控制本次调用所接受的最大数据量。recv方法在接受数据时会进入 'blocket'状态,最后返回一个字符串,用它来表示收到的数据。如果发送的量超过recv所允许,数据会被截断。多余的数据将缓冲于接受端。以后调 用recv时,多余的数据会从缓冲区删除。
(6)传输结束,服务器调用socket的close方法以关闭连接。
参考资料:
1、http://www.jb51.net/article/52078.htm