网络编程之聊天室

1、为什么要使用通讯协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2、TCPIP协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cmd窗口,命令执行:ipconfig/all
在这里插入图片描述
称它为物理地址:主要是硬件网卡相关的,物理地址不能改变的

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


3、UDP协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4、Socket简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


5、创建TCP服务器在这里插入图片描述

在这里插入图片描述
示例,具体代码实现

# -*- coding:utf-8 -*-
import socket          		#导入socket模块
host = '127.0.0.1'    		#主机IP
port = 8080             		#端口号
web = socket.socket()   		#创建 socket 对象
web.bind((host,port))  		#绑定端口
web.listen(5)        		#设置最多连接数
print ('服务器等待客户端连接...')
#开启死循环
while True:
    conn,addr = web.accept() 	#建立客户端连接
    data = conn.recv(1024)   	#获取客户端请求数据
    print(data) 			#打印接收到的数据
    conn.sendall(b'HTTP/1.1 200 OK\r\n\r\nHello World') 	#向客户端发送数据
    conn.close() 			#关闭连接

步骤操作:
首先,打开百度首页–>检查—>Network—>F5
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现这个界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动程序,控制台打印的信息
在这里插入图片描述
接着,我们就把它当作是一个客户端,我们可以使用浏览器访问:127.0.0.1:8080
在这里插入图片描述
当然也可以检查元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


5、创建TCP客务器

在这里插入图片描述
示例,具体代码实现:

# -*- coding:utf-8 -*-
import socket       # 导入socket模块
s= socket.socket()  # 创建TCP/IP套接字
host = '127.0.0.1'  # 获取主机地址
port = 8080        # 设置端口号
s.connect((host,port)) # 主动初始化TCP服务器连接
send_data = input("请输入要发送的数据:") # 提示用户输入数据
s.send(send_data.encode()) # 发送TCP数据
# 接收对方发送过来的数据,最大接收1024个字节
recvData = s.recv(1024).decode()
print('接收到的数据为:',recvData)
# 关闭套接字
s.close()

我们需要运行两个程序:先服务端,然后客户端

启动程序,控制台打印的信息
在这里插入图片描述
由,可获得数据:
在这里插入图片描述
在这里插入图片描述


6、执行TCP服务端和客服端

在这里插入图片描述
在这里插入图片描述
示例,具体代码实现:

服务端

Server.py

import socket              	 	# 导入socket模块
host = socket.gethostname() 		# 获取主机地址
port = 12345                		# 设置端口号
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建TCP/IP套接字
s.bind((host,port)) 				# 绑定地址(host,port)到套接字
s.listen(1) 					# 设置最多连接数量
sock,addr = s.accept()			# 被动接受TCP客户端连接
print('连接已经建立')
info = sock.recv(1024).decode() 	# 接收客户端数据
while info != 'byebye':  		# 判断是否退出
  if info :
    print('接收到的内容:'+info)
  send_data = input('输入发送内容:')   # 发送消息
  sock.send(send_data.encode()) 	# 发送TCP数据
  if send_data =='byebye':  		# 如果发送byebye,则退出
    break
  info = sock.recv(1024).decode() # 接收客户端数据
sock.close() 					# 关闭客户端套接字
s.close()    					# 关闭服务器套接字

客服端

Client.py

import socket       				# 导入socket模块
s= socket.socket()  				# 创建TCP/IP套接字
host = socket.gethostname() 		# 获取主机地址
port = 12345        				# 设置端口号
s.connect((host,port)) 			# 主动初始化TCP服务器连接
print('已连接')
info = ''
while info != 'byebye':  			# 判断是否退出
  send_data=input('输入发送内容:')    # 输入内容
  s.send(send_data.encode()) 			# 发送TCP数据
  if send_data =='byebye':			# 判断是否退出
    break
  info = s.recv(1024).decode() 		# 接收服务器数据
  print('接收到的内容:'+info)
s.close() 							# 关闭套接字

注意:先运行服务端,再运行客户端

启动程序,控制台打印的信息:

服务端打印的信息:
在这里插入图片描述
客服端打印的信息:
在这里插入图片描述

客户端发送信息,服务端就可以接收到:
在这里插入图片描述
在这里插入图片描述


7、创建UDP服务器、客户端

服务器

在这里插入图片描述
在这里插入图片描述

示例,具体代码实现:
服务端:
udp_server.py

import socket										#导入Socket模块

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 	#创建UDP套接字
s.bind(('127.0.0.1', 8888)) 							# 绑定地址(host,port)到套接字
print('绑定UDP到8888端口')
data, addr = s.recvfrom(1024) 						# 接收数据
data = float(data)*1.8 + 32 							# 转化公式
send_data = '转换后的温度(单位:华氏温度):'+str(data)
print('Received from %s:%s.' % addr)
s.sendto(send_data.encode(), addr)			 			# 发送给客户端
s.close()

在这里插入图片描述

示例,具体代码实现:

客户端:
udp_client.py

import socket 										# 导入Socket模块

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)   	# 创建UDP套接字
data = input('请输入要转换的温度(单位:设置度):')     # 输入要转化的温度
s.sendto(data.encode(), ('127.0.0.1', 8888))       		# 发送数据
print(s.recv(1024).decode()) 							# 打印接收数据:
s.close()

注意:先运行服务端,再运行客户端

启动程序,控制台打印的信息:
服务端:
在这里插入图片描述
客户端:
在这里插入图片描述

我们在客户端与服务端输出数据,如下:
客户端:
在这里插入图片描述


8、执行UDP服务器与客服端

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值