angrykola

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  • socket函数简介

  • 套接字对象的常用函数

  • 创建一个 TCP 服务器

 

socket()模块函数

使用 socket.socket()函数来创建套接字:

socket(socket_family, socket_type, protocol=0)

创建一个 TCP/IP 的套接字,你要这样调用 socket.socket():

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

创建一个 UDP/IP 的套接字,你要这样:

udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

注意:socket模块里有相当多的命令,所以建议直接使用 from socket import * 

使用 from socket import * 相比 import socket 可以大幅减少代码的书写

1 >>> from socket import *
2 >>> tcpSock = socket(AF_INET,SOCK_STREAM)

 

套接字对象的常用函数

函数       描述 

服务器端套接字函数
s.bind()     绑定地址(主机,端口号对)到套接字
s.listen()       开始 TCP 监听
s.accept()     被动接受 TCP 客户的连接,(阻塞式)等待连接的到来

客户端套接字函数
s.connect()   主动初始化 TCP 服务器连接
s.connect_ex() connect()  函数的扩展版本,出错时返回出错码,而不是抛异常

公共用途的套接字函数
s.recv()        接收 TCP 数据
s.send()       发送 TCP 数据
s.sendall()    完整发送 TCP 数据
s.recvfrom()     接收 UDP 数据
s.sendto()    发送 UDP 数据

s.getpeername() 连接到当前套接字的远端的地址
s.getsockname() 当前套接字的地址
s.getsockopt()    返回指定套接字的参数
s.setsockopt()    设置指定套接字的参数
s.close()     关闭套接字

Blocking-Oriented Socket Methods
s.setblocking()  设置套接字的阻塞与非阻塞模式
s.settimeout()  设置阻塞套接字操作的超时时间
s.gettimeout()  得到阻塞套接字操作的超时时间面向文件的套接字的函数
s.fileno()    套接字的文件描述符
s.makefile()      创建一个与该套接字关连的文件

 

创建一个 TCP 服务器

ss = socket()         # 创建服务器套接字 
ss.bind()             # 把地址绑定到套接字上 
ss.listen()           # 监听连接 
inf_loop:             # 服务器无限循环 
cs = ss.accept()        # 接受客户的连接 
comm_loop:               # 通讯循环 
cs.recv()/cs.send()     # 对话(接收与发送) 
cs.close()          # 关闭客户套接字 
ss.close()          # 关闭服务器套接字(可选) 

 

 

socket网络/套接字编程相关的模块

模块         描述
socket     底层网络接口。本章讨论过。
asyncore/    为能异步处理客户请求的网络应用程序提供底层功能。
asynchat
select      在单线程网络服务器程序中,管理多个套接字连接。
SocketServer  包含了写网络应用程序服务器所需要的高级别模块。提供了完整的进程和线程的版本。

FTP文件传输协议

NNTP网络新闻传输协议

posted on 2013-11-24 22:45  kolaman  阅读(280)  评论(0)    收藏  举报