Python学习笔记——Python开发中的网络操作

Python支持socket进行编程,其API跟C中的大同小异。

TCP方式编程支持server/client方式

一、TCP方式

server 端

server端的socket一般流程是这样:
1 建立一个socket(可以选择socket类型INET,UNIX等,以及连接方式TCP/UDP)
2 <span style="font-family: Arial, Helvetica, sans-serif;">使用bind公开一个端口,使得client可以方便连接
3 设置一个listen队列的大小
4 进入一个无限循环,在此无限循环中,使用accept函数来等待客户连接,此函数返回一个新的socket, 对应于客户端的socket,建立通信信道。对socket的处理一般放在外部单独的函数中(并发)
5 通过send()/recv()来对socket进行读写操作</span>

client端

1 建立一个新的socket
2 使用connect函数与远程主机获得连接
3 在此socket上进行I/O操作

服务器端基本代码如下:

def tcpServer():
    srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
    srvsock.bind(('', 9527))
    srvsock.listen(5)

    while True:
        clisock, (remoteHost, remotePort) = srvsock.accept()
        print "[%s:%s] connected" % (remoteHost, remotePort)
        #do something on the clisock
        clisock.close()


if __name__ == "__main__":
    tcpServer()

客户端基本代码如下:

def tcpClient():
    clisock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clisock.connect(('localhost', 9527))
    
    #I/O on this clisock
    #clisock.send("")
    #dat = clisock.recv(len)
    
    print dat
    
if __name__ == "__main__":
    tcpClient()

二、UDP方式


Server端

1 建立数据报形式的socket
2 公开一个端口,一边客户端连接
3 开始接收数据
客户端

1 新建一个数据报socket
2 收发数据
Server端基本代码

def udpServer():
    address = ('', 9527)
    srvsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    srvsock.bind(address)
    #data,addr = srvsock.recvfrom(2048)

if __name__ == "__main__":
    udpServer()

客户端基本代码

def udpClient():
    address = ('localhost', 9527)
    clisock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    #clisock.sendto(data, address)
    
if __name__ == "__main__":
    udpClient()


三、总结


  1. TCP与UDP的差异就是在创建socket的时候,一个采用SOCK_STREAM,一个采用SOCK_DGRAM
  2. TCP的server方式比UDP的server方式多一行代码listen
  3. send与sendto,recv与recvfrom的区别,与c语言相同。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值