首页 > 代码库 > python网络编程1

python网络编程1

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

# python:2.x

__author__ = ‘Administrator‘

#服务器和客户端之间的关系(本菜鸟的理解)

"""

服务器是向一个或者多个客户端进行发送所需要的服务,也就是等待用户的请教,然后服务器在响应相应的服务

当客户端连接上一个已知的服务器,会提出自己的请求,发送数据给服务器,然后等待服务器的响应请求,只有2种结果

1:成功

2:失败

服务器和客户端分那些

硬件服务器/客户端架构

比如打印机服务器和文件服务器

软件服务器和客户端

WEB服务器,数据库服务器,窗口服务器

 

"""

 

#套接字:在python中使用的是AF_INET

#面向连接是tcp/ip 无连接是udp/ip

import socket as s

#socket语法socket(socket_famil,socket_typoe,protocol=0)第三个参数可不填,一般默认

#创建tcp/ip套接字

tcp=s.socket(s.AF_INET,s.SOCK_STREAM)

#创建upd/ip套接字

upd=s.socket(s.AF_INET,s.SOCK_DGRAM)

#套接字对象(内建)方法

"""

函数                      描述

服务器端

s.bind()                  绑定地址(主机号,端号)到套接字

s.listen()                监视tcp

s.accept()                接受tcp客户端连接,等待连接起来

客户端

s.connect()               主动初始化tcp服务器连接

s.connect_ex()            connect()函数扩展版本,出错时返回错码,而不是出现异常

公用

s.recv()    接收tcp数据

s.send()    发送tcp数据

s.sendall() 发送

s.recvfrom()    接收udp

s.sendto()      发送udp

s.getpeername() 连接到当前套接字远端地址(tcp连接)

s.getsockname() 当前套接字地址

s.getsockopt()  返回指定套接字参数

s.setsockopt()  设置指定套接字参数

s.close()       关闭套接字

面向模块套接字函数

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()

"""

#tcp时间戳服务器

from socket import *

from time import *

HOST=‘‘

PORT=21568

BUFSIZ=1024

ADDR=(HOST,PORT)

tcp=socket(AF_INET,SOCK_STREAM)

tcp.bind(ADDR)

tcp.listen(5)

while True:

    print ‘waiting for connection....‘

    tcpCliSock,addr=tcp.accept()

    print ‘...copnnected from:‘,addr

    while True:

        data=http://www.mamicode.com/tcpCliSock.recv(BUFSIZ)

        if not data:

            break

        tcpCliSock.send(‘[%s]%s‘%(ctime(),data))

        tcpCliSock.close()

tcp.close()

#创建tcp客户端,下面是一段简单的伪代码

"""

sc=socket()

sc.connect()

comm_loop:

    cs.send()/cs.recv()

"""

#tcp时间戳客户端

HOST=‘192.168.1.1‘

PORT=21568

BUFSIZ=1024

ADDR=(HOST,PORT)

tcpclis=socket(AF_INET,SOCK_STREAM)

tcpclis.connect(ADDR)

while True:

    data=http://www.mamicode.com/raw_input(‘>‘)

    if not data:break

    tcpclis.send(data)

    data=http://www.mamicode.com/tcpclis.recv(BUFSIZ)

    if not data:break

    print data

tcpclis.close()

python网络编程1