网络编程(基础含拓展)

一、网络编程三要素

网络编程三要素包含:IP地址、端口号、协议。

1.IP地址

        这是网络环境下每一台计算机的唯一标识,通过IP地址来找到指定的计算机。

        查看IP地址:Linux 和 mac OS 使用 ifconfig 这个命令;Windows 使用 ipconfig 这个命令。

        检查网络:ping www.baidu.com 检查是否能上公网 ;ping 当前局域网的ip地址 检查是否在

同一个局域网内 ;ping 127.0.0.1 检查本地网卡是否正常。

2.端口号

        端口是数据传输的通道,每一个端口都有对应的端口号,通过端口号就能找到对应的端口,

通过端口来找到指定的进程。

3.协议

        定义通信规则,符合协议则可以通信,否则无法正常通信。

        TCP协议简称传输控制协议,是面向连接的,可靠的,基于字节流的传输层协议,必须先建

立连接(3次握手),再传输数据(4次挥手);

TCP通信需要经过创建连接、数据传送、终止连接三个步骤

        udp协议则是无连接,不可靠的传输层协议。

二、socket套接字

        它是进程中间通信的一个工具,只要网络中需要通信,就要基于socket进行数据传输。使用

socket套接字时要导入socket模块。

import socket

# 2.创建一个IPV4/TCP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3.最后记得关闭套接字
s.close()

三、编码和解码

        在网络中,数据是以二进制数据类型bytes的形式进行传递的,所以我们在传输和使用的过程

中,需要使用到编码 encode() 和解码 decode()对数据进行类型处理转换。(编码格式通常设置为

utf-8)。

print('你好'.encode('utf8'))
print('------------------------------')
# 二进制转换字符串
print(b'\xe4\xbd\xa0\xe5\xa5\xbd')
print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf8'))

四、基于TCP协议开发程序

1.客户端步骤流程

①创建客户端对象       ②客户端对象主动连接服务器     ③客户端对象发送消息给服务器

④客户端接收服务器返回的消息       ⑤客户端对象关闭

# 1.导包
import socket

# 2.创建客户端套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3.客户端套接字对象连接服务器
client_socket.connect(('127.0.0.1', 8081))
# 4.客户端套接字对象发送数据给服务器
client_socket.send('你好,服务器'.encode('utf-8'))
# 5.客户端套接字对象接收服务器发送的数据
data = client_socket.recv(1024)
print('接收到服务器发来的消息为:',data.decode('utf-8'))
# 6.关闭客户客户端套接字对象
client_socket.close()

2.服务器端步骤流程

①创建服务端套接字对象    ②绑定地址以及端口号   ③设置监听   ④等待接受客户端的连接请求 

⑤从新的连接接受客户端消息       ⑥使用新的连接对象给客户端发消息     

⑦先关闭新的连接对象,在关闭原始的服务器对象

# 1.导包
import socket

# 2.创建服务器套接字对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('未接通的服务器对象:', server_socket)
# 3.服务器套接字对象绑定地址和端口  TODO 地址和端口要封装成元组,且地址可以简写为''
server_socket.bind(('127.0.0.1', 8080))
# 4.服务器套接字对象设置监听数(最大连接数)
server_socket.listen(128)
# 5.服务器套接字对象等待客户端连接 TODO 直到客户端连接为止,然后直接拆包接收新的服务器对象和客户端信息
new_server_socket, client_addr = server_socket.accept()
print('已接通的服务器对象:', new_server_socket)
print('获取到客户端信息为:', client_addr)
# 6.服务器套接字对象接收客户端连接
data = new_server_socket.recv(1024)
print('接收到客户发来的消息为:', data.decode('utf-8'))
# 7.服务器套接字对象接收客户端发送的数据
new_server_socket.send('你好,客户端'.encode('utf-8'))
# 8.关闭服务器套接字对象
new_server_socket.close()
server_socket.close()

五、基于udp协议开发程序

        ①协议点对点发送消息(以飞秋软件为例)
import socket

# AF_INET: ipv4地址  SOCK_DGRAM:UDP协议
udp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# TODO 设置广播
udp_client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# 飞秋服务器地址和端口号
server = ('192.168.34.12', 2425)
# 消息内容
content = '1:1234567:张三:学生:32:你好,帅哥!'
#[0] 消息类型:'1'
#[1] 发送者ID:'1234567'
#[2] 发送者昵称:'张三'
#[3] 群组或组织名称:'学生'
#[4] 接收者ID:'32'
#[5] 消息正文:'你好,帅哥!'

# sendto():发送消息  注意:编码是gbk
udp_client_socket.sendto(content.encode('gbk'), server)

        ②协议广播发送消息(以飞秋软件为例)
import socket

# AF_INET: ipv4地址  SOCK_DGRAM:UDP协议
udp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# TODO 设置广播
udp_client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# 飞秋服务器地址和端口号
server = ('192.168.34.12', 2425)
# 消息内容
content = '1:1234567:张三:学生:32:你好,帅哥!'

# sendto():发送消息  注意:编码是gbk
udp_client_socket.sendto(content.encode('gbk'), server)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值