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()返回的套接字对象来进行操作即可

posted @ 2012-04-24 11:26  RINA  阅读(2934)  评论(0编辑  收藏  举报