python大作战之socket编程介绍

今天跟大家探讨下socket编程,

1:首先我们来了解下计算机网络体系结构中的通信协议OSI模型:

分别是:

应用层

表示层

会话晨

传输层

网络层

数据链路层

物理层

其中,应用层、表示层、会话层、传输层主要是面向用户,传输层主要是完成数据的传输服务

其次TCP/IP协议主要是:

应用层

传输层

网络层

数据链路层

TCP/IP协议中最著名的就是三次握手,四次分手

2:介绍下socket

socket其实就是进程间通信的一种方式,它能实现不同主机进程间的通信,比如:我们平时用的QQ、email邮件等,socket编程是基于一种客户端与服务端的编程吗模型,服务端收到客户端的连接请求,一旦连接成功,就能实现数据传输。那么我们分别来介绍下socket在服务端和客户端上的编程思路:

服务端:

步骤一:声明一个socket实例,直接使用python内置的socket模块---socket_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

步骤二:绑定一个ip地址和端口---socket_server.bind(('localhost',6969))---注意这里是一个元组的形式!!!

步骤三:开始监听---socket_server.listen()

步骤四:建立服务端和客户端之间的连接关系---conn,addr=socket.accept()

步骤五:收数据---data=conn.recv(1024)

步骤六:发数据---conn.send(data)

客户端:

步骤一:声明一个socket实例---socket_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

步骤二:开始连接地址和端口---socket_client.connect(('localhost',6969))

步骤三:发送数据---socket_client.send('b'hello world')----这里的数据内容,可以通过input方法去实时发送,这里我只是写死

步骤四:接收服务端返回的数据---socket_client.recv(1024)

具体代码见下面,这里我写的还是比较简单的一种实现形式,后续给大家来一起进阶篇:

服务端:

import socket
server1=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server1.bind(('localhost',1900))##绑定要监听的端口
server1.listen()
conn,addr=server1.accept()
data=conn.recv(1024)
print('recv:',data)
conn.send(data.upper())
server1.close()
客户端:

import socket
##1:先声明一个实例(声明socket类型,同时生成socket连接对象)
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
##2:绑定ip地址和端口号
client.connect(('localhost',1900))
client.send(b'hello world')
data=client.recv(1024)
print('recv',data)
client.close()

服务端和客户端输出分别是:

recv: b'hello world'---服务端
recv b'HELLO WORLD'---客户端
客户端收到的是大写的,原因是我把服务端发给客户端的数据做了一个大写转换的操作,谢谢



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值