day7-简单socket例子
简述
根据前面的伪代码,我们进行客户端和服务端代码的编写,看看如何来实现
socket实例
服务器端流程逻辑图

服务端代码
import socket
#服务器端
server = socket.socket()
#绑定要监听的IP地址和端口,以元组(host,port)的形式表示地址
server.bind(("localhost",6969))
#监听TCP传入连接
server.listen()
print("我要接电话了")
#conn就是客户端连过来而在服务器端为其生成的一个连接实例
conn,addr = server.accept()
print(conn,addr)
print("电话来了")
#接收客户端发来的数据
data = conn.recv(1024)
print("recv:",data)
#发送数据到客户端
conn.send(data.upper())
#关闭服务器端
server.close()
#运行输出
我要接电话了
<socket.socket fd=272, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 49946)> ('127.0.0.1', 49946)
电话来了
recv: b'hello world'
客户端流程逻辑图

客户端代码
import socket #导入socket
#客户端
#声明socket类型,同时生成socket连接对象(实例)
client = socket.socket()
#连接远程机器,一般address的格式为元组(hostname,port)
client.connect(("localhost",6969))
#发送数据
client.send(b"hello world")
#接收服务器端数据
data = client.recv(1024)
print("recv:",data)
#关闭连接
client.close()
#运行输出
recv: b'HELLO WORLD'
注意
- 先启动服务端再运行客户端
- 客户端发起连接到服务端时,服务端接受连接并返回(conn,address),其中conn就是客户端连过来而在服务器端为其生成的一个连接实例,可以用来接收和发送数据,addr是连接客户端的地址。
- 在Python 3中发送的数据必须是字节bytes类型,否则报错,在Python 2中可以发送字符串或字节(bytes)!

浙公网安备 33010602011771号