19.tcp_upd
# socket编程
# 01010 ethernet(你在教室的那个位置)mark ip(教室在哪,主机)子网 tcp,udp(端口)应用程序在哪
# 物理层----》数据链路层------------------------》网络层----》 ----------》传输层 --------------------》应用层
# Socket抽象层
# pid是同一台计算机上不同进程或者线程的标识 # TCP套接字
import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立客户端
phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 重新使用ip地址
phone.bind(("127.0.0.1", 8000)) # 绑定唯一的局域网中的一个端口(挂起连接请求)
phone.listen(5) # 监听的事件
print("----------->")
while True:
conn, addr = phone.accept() # 就相当于链接,和电话号 print("conn", conn)
print("addr", addr) while True:
try:
msg = conn.recv(1024) # 接收消息
print("客户端发来的消息是:", msg.decode("utf-8")) conn.send(msg.upper())
except Exception:
break
conn.close()
phone.close()
import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect(("127.0.0.1", 8000)) while True:
msg = input("====>:").strip()
if not msg:
continue
phone.send(msg.encode("utf-8"))
print("客户端已经发送消息!")
data = phone.recv(1024)
print("收到服务端发来的消息:", data) phone.close()
# UDP套接字
from socket import *
import time ip_port = ("127.0.0.1", 8080)
buffer_size = 1024
udp_server = socket(AF_INET, SOCK_DGRAM) # 数据报 udp_server.bind(ip_port)
print("绑定成功")
while True:
data, addr = udp_server.recvfrom(buffer_size)
print("收到客户端的消息:", data) if not data:
fmt = "%Y-%m-%d %X"
else:
fmt = data.decode("utf-8")
back_time = time.strftime(fmt) data = udp_server.sendto(back_time.encode("utf-8"), addr)
# UDP套接字
from socket import * ip_port = ("127.0.0.1", 8080)
buffer_size = 1024 udp_client = socket(AF_INET, SOCK_DGRAM) # 数据报 while True:
# msg = input("----->").strip()
msg = input("获取当前服务端时间:")
udp_client.sendto(msg.encode("utf-8"), ip_port) # 没有链接。多以需要指定发到哪个ip和端口 data, addr = udp_client.recvfrom(buffer_size)
print("收到服务端的消息:", data.decode("utf-8"))
https://www.cnblogs.com/linhaifeng/articles/6129246.html 关于socket内核
粘包:
# recv在自己的缓冲区为空时,阻塞
# recvfrom在自己的缓冲区为空时就收一个空????
# 粘包其实就是服务端将接收到的消息执行之后,放入自己的缓冲区内,但是由于每次只能接收
# (客户端)一部分导致,下一次输入命令的时候,会把上次为输出完的接着输出,成为粘包。
# 粘包现象只会出现在tcp中而不会出现在udp中,是因为tcp是可靠传输(安全的)会把没有接收完的消息,
# 继续发送;但是udp却是只接收一次(按设置的多少就是多少),缓冲区中的没有发送完的内容,他不会管
# 有没有接受完全,(类似)覆盖掉了。 这里还有一个我看的课程中的作业代码地址有兴趣可以看一看??https://gitee.com/maxhope8/FTP.git
19.tcp_upd的更多相关文章
- Mediaplayer error (-19,0)
Android MediaPlayer 发生 error (-19,0) 错误解决方法. 引起原因:由于多次实例化MediaPlayer.start() 进行播放操作引起的.由于没有及时释放内存资源导 ...
- 录像时调用MediaRecorder的start()时发生start failed: -19错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)
CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#) 效果图 本文解决了将OpenGL渲染出来的内容保存到PNG图片的方法. 下载 CSharpGL已在GitHub开 ...
- ABP(现代ASP.NET样板开发框架)系列之19、ABP应用层——审计日志
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之19.ABP应用层——审计日志 ABP是“ASP.NET Boilerplate Project (ASP.NET ...
- js正则表达式校验非负浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js正则表达式校验非负整数:^\d+$ 或 ^[1-9]\d*|0$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js正则表达式校验非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)
我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...
- 19-typedef
本文目录 一.typedef作用简介 二.typedef与指针 三.typedef与结构体 三.typedef与指向结构体的指针 四.typedef与枚举类型 五.typedef与指向函数的指针 六. ...
随机推荐
- 【Linux开发】linux设备驱动归纳总结(三):4.ioctl的实现
linux设备驱动归纳总结(三):4.ioctl的实现 一.ioctl的简介: 虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是 ...
- C++之用程序理解浅拷贝
C++中的浅拷贝是产生很多问题的根本原因,其根本原因是在有指针的时候,只是拷贝了一个指针的值,多个指针指向同一块内存区域,当free内存时,造成其他指针指向的空间不存在.结合构造函数和析构函数理解浅拷 ...
- IIS调试
点击调试程序的时候默认启动TFS内置的调试服务器http://localhost:51607/,在该处填写自己在IIS上配置的站点就能进入自己的站点调试http://mr.ciwong.com
- 防火墙(入站规则)C++修改方法 以解决服务器无法连接问题
为啥要关注防火墙 今天项目中的p2p直连遇到了问题.经过排查,发现充当服务器的一端进入listen状态后,另外的客户端一端connect失败. 错误码10060(超时). 开始时怀疑客户端connec ...
- (5.12)mysql高可用系列——复制中的在线切换GTID模式/增加节点/删除节点
目录 [0]需求 前提,已经假设好基于传统异步复制的主库和从库1. [0.1]传统异步切换成基于GTID的无损模式 [0.2]增加特殊要求的从库 [1]操作环境 [2]构建 复制->半同步复制 ...
- sql server如何精准匹配字符中的字符,绝对匹配
举例: 我现在是需要查询这字段里包含1的数据 我如果直接charindex,那么11,12也会被包含. 解决(1): select * from ( select '1,2,12,111' as s ...
- 搞懂MySQL GTID原理
从MySQL 5.6.5 开始新增了一种基于 GTID 的复制方式.通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID.这种方式强化了数据库的主备一致性,故障恢复以及容错能力. GT ...
- 四则运算计算器的微信小程序_1 界面
主界面wxml文件: page{ height:100%; } .content{ min-height:100%; display:flex; flex-direction:column; alig ...
- 区间前k小的和(权值线段树+离散化)--2019牛客多校第7场C--砍树
题目链接:https://ac.nowcoder.com/acm/contest/887/C?&headNav=acm 题意: 给你 n 种树,有 高度,花费和数量 ,现在问你最少需要花多少钱 ...
- numpy:np.random.seed()
np.random.seed()函数可以保证生成的随机数具有可预测性. 可以使多次生成的随机数相同 1.如果使用相同的seed( )值,则每次生成的随即数都相同: 2.如果不设置这个值,则系统根据时间 ...