pygame网络游戏_5_1:网络编程_HelloWorld

项目源码地址:https://github.com/zxf20180725/pygame-jxzj,求赞求星星~

工作太忙啦,没啥时间更新博客,大家有什么疑问,欢迎加q群讨论,刚创的:812095339

快两个月没更新啦。这段时间因为换工作,一直很忙没时间写文章。现在工作稳定啦,继续继续~

1.什么是网络编程

在之前的文章中,我们都是写的单机程序。从本章开始,我们将正式进入到网络编程部分啦。在我们的教程里,并不会去深入讲解网络编程,因为这个水实在太深了。我们这只讲最简单的,能实现我们的功能即可。

想必大家都听过客户端和服务端这两个词吧。像我们电脑里装的软件几乎都是客户端,比如QQ、微信、英雄联盟等等。而服务端就是为客户端提供数据和服务的。

好了,废话不多说,先来写一个helloworld,直接在代码里感受吧。

 

2.服务端

新建一个server.py:

import socket

# 创建socket对象,使用TCP协议
server = socket.socket()

# 绑定本机ip和端口号
server.bind(('127.0.0.1', 8712))

# 开始监听
server.listen(5)

# 接收客户端(阻塞线程),client也是socket对象
client, address = server.accept()

print('有客户端连接啦!', address)

# 发送消息给客户端
client.send(b'I am server.HelloWorld')

# 接收客户端返回的消息(阻塞线程)
data = client.recv(1024)  # 返回的数据类型是bytes

# 由于是字节数组类型,所以需要解码成字符串
str_data = data.decode()

print(str_data)

client.close()

server.close()

第4行,创建一个socket对象,socket.socket()没用任何参数,默认是使用TCP协议的。什么是socket呢,百度百科里的解释比较详细,我就简单说一下,socket就是一套对tcp/ip协议族的封装,就是一套api。不理解没关系,并不影响我们目前的开发。

第13行,server.accept()是会阻塞线程的,通俗点讲,就是代码会卡在这一句,不继续往下执行。当有客户端连进来的时候才会继续执行下面的代码。这个语句会返回一个socket对象和客户端的地址。

第18行,给客户端发送消息,send的参数必须是bytes类型,所以我在字符串前面加了个b,也可以这样写:client.send('I am server.HelloWorld'.encode())

第21行,接收客户端消息,这里也会阻塞线程,如果客户端一直没回复消息的话,代码会一直卡在这里,不会继续向下执行。1024是一次性能接收的数据大小,最多接收1024字节,也就是1kb,如果客户端一次发过来的数据大于1kb的话,那得多次调用recv能完整接收客户端数据。

第24行,由于recv的返回值是bytes类型,咱们得用decode解码,转换成字符串。

 

3.客户端

新建一个client.py:

import socket

# 创建socket对象
client = socket.socket()

# 连接服务端
client.connect(('127.0.0.1', 8712))

# 接收服务端发送过来的数据
data = client.recv(1024)

str_data = data.decode()

print(str_data)

client.send(b'I am client.Hello!')

client.close()

客户端就相对简单啦

 

4.运行效果

先运行server.py,再运行client.py

服务端截图:

客户端截图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值