''' 1、什么是套接字socket socket把传输层以下的协议都抽象封装成了简单接口,我们编写基于网络通信的软件只需要调用这些接口即可, 我们写出的程序自然是遵循tcp/udp协议的。。。 什么是互联网: 互联网 = 物理连接介质 + 互联网通信协议 ip+port 就可以标示出全世界范围内独一无二的一个基于网络通信的软件 2、为何要用socket 目标:便携一个C/S架构的软件 server端必须具备: 1、服务端需要稳定运行,一直对外提供服务 2、服务端必须绑定一个固定的地址(ip+port) 3、服务端要支持并发 3、如何用socket 套接字自制家族:AF_UNIX(基于文件),AF_INET(网络通信) '''
#! /usr/bin/env python # -*- coding: utf-8 -*- import socket #1 买手机 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #socket_DRAM udp协议,socket_STREAM流式协议 # print('套接字对象1',phone) #套接字1主要用来绑定,做准备工作 #2 绑定手机卡 phone.bind(('127.0.0.1',8080)) #port:0~65535 #3 开机 phone.listen(5) #backlog是半连接池,一般把半连接池的值写到配置文件中 #4 等待电话拨入 print('start...') conn,client_addr=phone.accept() #对应客户端的connect操作 # print('>>>>>>>>>>>') # print('套接字对象2:',conn) #套接字2 代表tcp建好的双向通路 收发数据 # print(client_addr) #5 收发消息 data = conn.recv(1024) #最大只能接收:1024bytes 收消息 send = conn.send(data.upper()) import time time.sleep(100000) #6 挂电话 conn.close() #7 关手机 phone.close()
#! /usr/bin/env python # -*- coding: utf-8 -*- import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #socket_DRAM udp协议,socket_STREAM流式协议 phone.connect(('127.0.0.1',8080)) #port:0~65535 print('客户端连接请求已经发送!') phone.send('hello'.encode('utf-8')) data = phone.recv(1024) print(data) phone.close()