socket网络编程

人生道路上:希望自己做到保持简单,保持学习,保持严谨!

第一:计算机通信原理

1.OSI七层模型

应用层:网络服务与最终用户的一个接口。

表示层:数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)格式有,JPEG、ASCll、DECOIC、加密格式等

会话层:建立、管理、终止会话。(在五层模型里面已经合并到了应用层)对应主机进程,指本地主机与远程主机正在进行的会话

传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP(IPV4 IPV6)

数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验 [2]  等功能。(由底层网络定义协议)将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层:建立、维护、断开物理连接。

2.客户端与服务端通信原理

第一步:B机器与A机器建立连接,A机器上有很多服务,故要指明具体连接哪一个服务(ip+port,ip相当于总机,port相当于分机号)

第二步:访问服务

第三步:服务响应客户端请求(同理,也要ip+port,指明回给客户端哪一个服务)

第二:socket介绍

1.实现一个简单的socket(伪代码)

第一步:
Socket socket = getSocket(type = "TCP")  #设定好协议类型

第二步:
connect(socket, address = "1.2.3.4", port = "80") #连接远程机器

第三步:
send(socket, "Hello, world!") #发送消息

第四步:
close(socket) #关闭连接

2.建立客户端和服务端通信

2.1.客户端(伪代码)

import socket

socket.TCP/IP #指定协议类型

connect(a.ip,a.port) #建立连接

socket.send(hello world!) #发送请求

socket.recv() #接收数据

socket.close() #关闭连接

2.2.服务端(伪代码)

import socket

socket.TCP/IP #声明协议类型

listen(A.ip,A.port) #在这个接口监听,一般多个网卡,故也要指定网卡,要是没有可默认:0.0.0.0

waiting() #等数据请求过来

socket.recv() #接收数据

socket.send() # 返回数据

socket.close() #关闭连接,也可以不关闭,服务端可以等很多人来连接

第三:实现socket简单实例

1.客户端:

import socket

# 客户端
client = socket.socket()  # 声明socket类型,同时生成socket连接对象
client.connect(('localhost', 6969))
client.send(b"hello czy!")
data = client.recv(1024)  # 接收回应数据
print('接受到的数据为:', data)
client.close()

"""
执行结果:
接受到的数据为: b'okokokok'
"""

2.服务端:

import socket

# 服务端

server = socket.socket()
server.bind(('localhost', 6969))  # 绑定要监听的端口
server.listen()

print("我要开始等待对方请求了")
# conn就是客户端连接过来的时候,服务器为其生成的一个连接实例
conn, address = server.accept()  # 等电话打进来
print(conn, address)
print("请求来了")
data = conn.recv(1024)
print('客户端请求数据为:', data)
conn.send(b"okokokok")

"""
执行结果:
我要开始等待对方请求了
<socket.socket fd=648, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 10068)> ('127.0.0.1', 10068)
请求来了
客户端请求数据为: b'hello czy!'
"""

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值