python-socket
按照接受双方对象分为服务端和客户端。
服务端主要用到了几个步骤:
1.初始化一个套接字:
socket()://两个参数,一个AF_INET:socketfamily,另外一个是SOCK_STREAM表示用tcp连接
2.bind(addr),绑定一个地址,这里的addr是一个map,有HOST和PORT两个参数
3.listen()://监听请求,参数表示最多能监听几个请求
4.accept://接受套接字,返回客户端的一个套接字对象和地址,然后通过这个返回对象进行操作,包括对消息的反馈等等
5.close():关闭套接字资源,包括关闭接受的客户端套接字对象和服务端套接字对象
def serv(HOST='',PORT=25111): 6 Addr=(HOST,PORT) 7 tcpser=socket(AF_INET,SOCK_STREAM) 8 try: 9 tcpser.bind(Addr) 10 tcpser.listen(5) 11 except Exception,e: 12 print 'sorry,faild',e 13 while True: 14 print 'waiting for connection...' 15 tcpcli,addr=tcpser.accept() 16 print 'connection from ... ',addr 17 while True: 18 data=tcpcli.recv(BUFSIZ) 19 if not data: 20 break 21 tcpcli.send(('[%s],%s')%(ctime(),data)) 22 tcpcli.close()
客户端:
1.同样初始化一个套接字:
2.建立和服务端的连接:可以有connect()和create_connection()两个函数,有两个参数:第一个地址addr,另外一个就是timeout
3.send(data)发送一个套接字数据
4.recv()接受一个套接字数据。参数可以是接受数据量大小
5.close()
import socket
HOST='localhost'
PORT=21568
BUFSIZ=1024
ADDR=(HOST,PORT)
tcpclisock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpclisock.connect(ADDR)
while True:
data=raw_input('>')
if not data:
break
tcpclisock.send(data)
data=tcpclisock.recv(BUFSIZ)
if not data:
break
print data
tcpclisock.close()
PS:
暂时就学了这么一点,另外几个点:服务端的套接字没有recv(data),所以想接受和发送数据就通过accept()返回的套接字对象来进行操作即可