python的sendto_python学习笔记——socket网络编程(2)

首先总结一下一般的TCP和UDP连接服务器和客户端的内容和步骤。

TCP服务器端:

1

创建套接字,绑定套接字到当地地址,然后开始监听连接。就是socket,bind,listen。

2

进入循环,不断接受客户端的连接请求,然后接收传来的数据,当然也可以发送给对方数据。就是accept一个连接,然后recv数据。

3 接收完毕可以关闭套接字,close。

这个过程的伪代码如下:

ss=socket() #创建服务器套接字

ss.bind() #把本地地址绑到套接字上

ss.listen() #监听连接

inf_loop: #服务器无限循环

cs=ss.accept() #接受客户端的连接

comm._loop: #通信循环

cs.recv()/cs.send() #对话

cs.close() #关闭客户套接字

ss.close() #关闭服务器套接字

TCP客户端:

1 创建套接字,然后连接远端地址,socket

,connect。

2

建立连接之后开始发送数据。Send(data),当然可以从缓冲区读取服务器发来的数据。Recv(BUFF)

3 完毕后,关闭套接字。Close

伪代码如下:

cs=socket() #创建客户套接字

cs.connect() #尝试连接服务器

comm._loop: #通信循环

cs.send()/cs.recv() #对话

cs.close() #关闭套接字

UDP服务器端: 1 创建套接字,并绑定到当地地址 socket,bing

2

直接接收数据从buffer。Recvfrom(),这个函数接受到数据,和sender的地址(主机号,端口号),当然也可以发送数据到客户端,用sendto(data,addr)

3 关闭套接字 close()

伪代码:

Ss=socket() #创建套接字

ss.bind() #绑定

inf_loop: #无限循环

ss.recvfrom()/sendto() #对话

ss.close() #关闭套接字

UDP客户端:

1 创建套接字,socket

2 进入循环,发送接收数据 sendto

,recvfrom

3 关闭套接字 close()

伪代码:

Cs=socket() #创建

Comm_loop: #循环接收发送

Cs.sendto()/recvfrom() #对话

Cs.close() #关闭

Send() sendto()

recv()recvfrom()

我们发现在TCP连接中我们发生接收数据都是用的send()和recv()方法,而在UDP中用的sendto()和recvfrom()。这两对方法实现的作用差不多,但是参数有所不同,

TCP中,send(data)和recv(buffer),因为在TCP中,传输数据之前连接已经建立,也就是说我们知道给谁发,或者收谁的数据。而在UDP中用,recvfrom(buffer)和sendto(data,addr),recvfrom可以接受到sender的addr,然后发送时,根据addr发送。因为UDP不是面向连接的,所以我们必须知道这个数据要发给谁,它的地址什么。

附:看一下socket的help信息。有利于我们更好理解它的一些方法,这里只简单说就几个,更多的请看help文档。

先看一下socket对象的一些方法(method)

1 accept()接受一个连接,返回一个新的套接字(代表此连接)和客户端地址,是用在服务器端得,比如:

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值