python+pygame实现五子棋网络对战之一

之前我们系统地描述了五子棋的人机对战,了解了五子棋的基本操作,例如电脑的应手算法,输赢判断等等。那如何实现五子棋的网络对战,即人人对战呢?这里就用到了套接字socket编程,听上去很高级,其实无论哪种编程语言,实现起来的方法(套路)都是大同小异的。

一、

python的套接字socket编程基本概念及操作,对基本原理的理解是学习编程的基础。

1.1  服务端就是一系列硬件或软件,为一个或多个客户端(服务端服务的用户)提供所需的“服务”。它存在唯一目的就是等待客户端的请求(经常称之为“监听”),并响应客户端,为客户端提供服务),然后等待更多请求,周而复始。

1.2  套接字是计算机网络数据结构,在任何类型的通信开始之前,网络应用程序必须创建套接字。socket原意就是插座,插口,插孔的意思,所以可以将它们比作网络插孔,没有它将无法进行通信。Python只支持AF_UNIX、AF_NETLINK、AF_TIPC 和 AF_INET ,尤其是使用基于网络的AF_INET.

套接字三要素:IP,端口,协议。python使用元组保存:ADDR = (IP,端口)。协议:

流式套接字(SOCK_STREAM):用于提供面向连接、可靠的数据传输服务。TCP

数据报套接字(SOCK_DGRAM):提供了一种无连接的服务。这个并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。UDP

1.3 python常用对象方法和属性
服务器套接字方法
bind(ADDR)    将地址(主机名、端口号对)绑定到自接字上
listen([backlog])  设置并启动TCP监听器,如果指定backlog,则必须至少为0(如果低于0,则设置为0);
accept()  被动接受TCP客户端连接,一直等待直到连接到达(阻塞)

客户端套接字方法
connect()   主动发起 TCP服务器连接
connect_ex()  connect()的扩展版本,此时会以猎误码的形式返回问题,而不是抛出一个异常

通用套接字方法
recv()  接收 TCP消息
recv_into()  接收TCP 消息到指定的缓冲区
send()   发送TCP消息
sendall()   完整地发送 TCP消息
recvfrom()   接收 UDP消息
recvfrom_into()   接收 UD

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值